最佳答案
我正在使用一个 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,看起来它们是相等的。有什么理由要像他们那样写代码吗?