小编Vik*_*r S的帖子

为什么三元运算符用于在宏中定义1和0?

我正在为嵌入式项目使用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,所以看起来它们是平等的.是否有理由像他们一样编写代码?

c c++ boolean ternary-operator

79
推荐指数
6
解决办法
8697
查看次数

标签 统计

boolean ×1

c ×1

c++ ×1

ternary-operator ×1