请问C语言if(!x)怎么理解啊还有下面的代码如何运行

img

代码风格不太友好。

#include <stdio.h>
int main()
{
    int x=1,y=0;
    if(!x)
        y++;
    else if(x==0)
    {
        if(x)
            y+=2;
        else
            y+=3;
    }
    printf("%d\n",y);
    return 0;
}

这样会清楚一些。
if(!x)指x为0就成立,不为0就不成立
所以x=1情况下,会执行else部分。可是这else的条件x==0,实际和if(!x)是一个意思,所以else也不执行。直接执行printf语句,输出y的值0了

if(!x),其中!x是取反的意思。非0即为真,也就是当x为0的时候为假,取反就为真。
当x等于0的时候,if(!x)才满足条件。
所以执行else if(x==0),也不成立,最后输出y的值为0了。