关系运算符评估结果

时间:2015-02-16 09:51:25

标签: c language-lawyer logical-operators

假设我们有一个像

这样的表达式
(x > 5) 

用C语言编写。语言/标准是否有任何保证,表达式将在0错误时评估为1,而{{1}}表示何时为真?

2 个答案:

答案 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