int x=1,y=0; if(!x)y++; else if(x==0) if(x)y+=2; else y+=3;

这段程序是什么意思

在java中这个if(!x)应该是错了吧,整型变量好像不能做判断。
不过在C和C++中可以,在if(!x)这句判断时为假,所以y++并不执行。
然后进行if(x==0)判断,因为x=1值并没有发生改变,
而if(x)y+=2; else y+=3;都是包括在if(x==0)的判断条件里的,
所以之后的if(x)y+=2; else y+=3;都不执行。
最后的x,y的值仍然是x=1,y=0
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-17
int x=1,y=0; //定义并初始化x,y
if(!x) y++; /*如果!x为真,即x是0时就执行y++。注:非0即为真,0就是假。*/
else if(x==0) /*否则,如果x等于0就执行下面一行,但x是1就不执行下面一行,直接转到下边的else语句。*/
if(x) y+=2; /*虽然不执行,说说也无访。如果x为真(非0即为真),就执行y+=2,相当于y=y+2 */
else y+=3; /*否则就执行y+=3 */
第2个回答  2012-01-17
这段程序除了是if-else条件控件结构外,只用到了一个知识点:逻辑值和非逻辑值之间的转换。
在C和C++中,逻辑真是用非零值来表示的,逻辑假是用零来表示的。
非零值会被看成逻辑真,零会被看成逻辑假。
逻辑真转成整数时会转成1,逻辑假转成整数时会转成0

所以if(!x)相当于if(x==0)
if(x)相当于if(x!=0)
其他的应该不难理解吧。
第3个回答  2012-01-17
啥意思都没得,最终x=1,y=0.
if(!x)为假,走else语句
在else语句中,先进行if判断,x==0 为假,下面的if..else语句是它的执行体,所以它为假时,直接就跳过了下面的if...else语句,直接到末尾。最终x和y的值都没改变
第4个回答  2012-01-17
int x=1,y=0;
if(!x)
{// A
y++;
}
else if(x==0)
{// B
if(x)
{// C
y+=2;
}
else
{// D
y+=3;
}
}
// E

x初值为1,!x就为假,进入第一个else; x==0为假直接结束到E
相似回答