假设我们有一个像
这样的表达式(x > 5)
用C语言编写。语言/标准是否有任何保证,表达式将在0
错误时评估为1
,而{{1}}表示何时为真?
答案 0 :(得分:12)
是的,它符合标准。
根据C11
标准文件,第6.5.8章,第6段,[关系运营商]
每个运营商
<
(小于),>
(大于),<=
(小于或等于)和>=
如果指定的关系为1
,则{大于或等于}将产生true
,如果是0
则为false
int
。结果的类型为C99
。
更新:同样的{{1}}标准章节和段落。
答案 1 :(得分:0)
在gcc中,它将被评估为1和0。 考虑以下程序
#include <stdio.h>
int main(void)
{
int a = 3;
int b = 4;
if((a > b) == 0)
printf("a > b is false\n");
if((a < b) == 1)
printf("a < b is true\n");
return 0;
}
它提供输出
a > b is false
a < b is true