代码风格不太友好。
#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了。