增量运算符如何在if语句中工作?

Pan*_*ato 4 c if-statement post-increment

    #include <stdio.h>

    int main()
    {
        int x = 0;

        if (x++)
            printf("true\n");
        else if (x == 1)
            printf("false\n");
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

输出:

false
Run Code Online (Sandbox Code Playgroud)

为什么输出错误?

x++是后增量; 这意味着使用的值x然后递增.如果是这样,那么x=0应该使用,答案应该是真的.

hac*_*cks 7

在C中,0被视为false.在x++,表达中使用的值x,即,0它变为

if(0)  // It is false
    printf("true\n");  
Run Code Online (Sandbox Code Playgroud)

身体if没有被执行.之后x就是现在1.现在检查条件else if,即x == 1检查.因为x1,这个条件评估true,因此它的身体被执行并打印"false".