Я использую 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, значит кажется, что они равны. Есть ли причина писать код, как они?