Ich verwende ein SDK für ein eingebettetes Projekt. In diesem Quellcode habe ich einen Code gefunden, den ich zumindest eigenartig fand. An vielen Stellen im SDK gibt es Quellcode in diesem 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 )
Macht die Verwendung des ternären Operators hier einen Unterschied?
Ist nicht
#define FOO (1 > 0)
das Gleiche wie
#define BAR ( (1 > 0) ? 1 : 0)
?
Ich habe versucht, es mit zu bewerten
printf("%d", FOO == BAR);
und erhalten Sie das Ergebnis 1, so scheint es, dass sie gleich sind. Gibt es einen Grund, den Code so zu schreiben, wie sie es getan haben?