J'utilise un SDK pour un projet embarqué. Dans ce code source, j'ai trouvé un code que j'ai trouvé particulier. A de nombreux endroits dans le SDK il y a du code source dans ce format :
#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 )
L'utilisation de l'opérateur ternaire ici fait-elle une différence ?
N'est-ce pas ?
#define FOO (1 > 0)
la même chose que
#define BAR ( (1 > 0) ? 1 : 0)
?
J'ai essayé de l'évaluer en utilisant
printf("%d", FOO == BAR);
et obtenir le résultat 1, il semble donc qu'ils soient égaux. Y a-t-il une raison d'écrire le code comme ils l'ont fait ?