#include
main()
{
int x=1,y=0;
if (!x)y++;
else if(x==0)
if(x)y+=2;
else y+=3;
printf("%d\n",y);
}
因为一堆if...else一个都没执行,所以y还是0。整理一下你的逻辑就明白了
main()
{
int x=1,y=0;
if (!x)
y++;
else if(x==0)
{
if(x)
y+=2;
else
y+=3;
}
printf("%d\n",y);
}
x=1,这样if(!x)和else if(x==0)都不满足,所以啥也没干
x是1,转换成bool值就是true,!x取反就是false,所以if没有进
else if(x==0),x是1,比较不成功,也没有进
下面两个if,else是嵌套在上面的else if里面的,外层if都没有进,内层的if当然也根本不会执行
所以y的值根本就没变
注意你的if分支对应,一般最好给if分支下带{}标明分支的范围