关系运算符评估结果

Relational operators evaluation result

假设我们有一个像

这样的表达式
(x > 5) 

C语言。语言/标准是否保证表达式在为假时将被评估为 0 而在为真时将被评估为 1

是的,有标准保证。

根据 C11 标准文档,第 6.5.8 章第 6 段,[关系运算符]

Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false. The result has type int.

更新:C99 标准的相同章节和段落。

在 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