Я використовую SDK для вбудованого проекту. У цьому вихідному коді я знайшов якийсь код, який, принаймні, мені здався своєрідним. У багатьох місцях SDK є вихідний код у такому форматі:
#define ATCI_IS_LOWER( alpha_char ) ( ( (alpha_char >= ATCI_char_a) && (alpha_char <= ATCI_char_z) ) ? 1 : 0 )
#define ATCI_IS_UPPER( alpha_char ) ( ( (alpha_char >= ATCI_CHAR_A) && (alpha_char <= ATCI_CHAR_Z) ) ? 1 : 0 )
Чи має значення використання трійкового оператора тут якусь різницю?
Ні
#define FOO (1 > 0)
такий же як і
#define BAR ( (1 > 0) ? 1 : 0)
?
Я спробував оцінити це за допомогою
printf("%d", FOO == BAR);
і отримати результат 1, тож здається, що вони рівні. Чи є причина писати код так, як вони це робили?