Estoy usando un SDK para un proyecto integrado. En este código fuente encontré un código que al menos me pareció peculiar. En muchos lugares del SDK hay un código fuente en este formato:
#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 )
¿El uso del operador ternario aquí hace alguna diferencia?
No es
#define FOO (1 > 0)
lo mismo que
#define BAR ( (1 > 0) ? 1 : 0)
?
Intenté evaluarlo usando
printf("%d", FOO == BAR);
y obtiene el resultado 1, por lo que parece que son iguales. ¿Hay alguna razón para escribir el código como lo hicieron?