我正在为嵌入式项目使用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 )
Run Code Online (Sandbox Code Playgroud)
这里使用三元运算符有什么不同吗?
是不是
#define FOO (1 > 0)
Run Code Online (Sandbox Code Playgroud)
同样的
#define BAR ( (1 > 0) ? 1 : 0)
Run Code Online (Sandbox Code Playgroud)
?
我尝试使用它来评估它
printf("%d", FOO == BAR);
Run Code Online (Sandbox Code Playgroud)
得到结果1,所以看起来它们是平等的.是否有理由像他们一样编写代码?