一道C语言:已有声明"int x=0,y=2;",则执行语句"y=--x||++y;"后,变量y的值为

如题所述

y = --x || ++y; 仅执行前半部分的 y = --x,因为x的初值为0,执行--x后,x为-1,故y也是-1,此时逻辑表达式的值为真(非零),后半部分++y不再执行(短路效应,因为对于||表达式,前半部分为真就不再对后半部分求值,无论后面是真与假,都不影响逻辑结果),由此可知,y的值为-1。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-10
int x=0,y=2;
y=--x||++y;
// 相当于是
--x;  // x = -1
++y;  // y = 3
y = x || y; //y = -1 || 3 = 1;  这里是逻辑的或运算, 有一个非0就会为1

第2个回答  2013-07-10
y=--x||++y;
优先级先计算 --x和 ++y;
--x 结果x = -1;
++y 结果y=3;
即y = -1 || 3;
所以y = 1;本回答被提问者和网友采纳
第3个回答  2013-07-10
变量y的值为1
第4个回答  2013-07-10
答案是 1
#include<stdio.h>
void main()
{
int x,y;
x=0,y=2;
y=--x||++y;
printf("%d",y);
}
相似回答