泰国佛统国际义工项目:[c]执行下列程序后a的值为?b的值为?

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/13 06:39:45
int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);

答案是0和6,不是太明白为什么。。。
我觉得不是0和0,就应该是6和6阿,为什么会这样?

逻辑运算
A && B 系列中,当 A为false时,程序不再对 B进行判断了,也就是说B表达式不再运行!
那么 a=w>x 则 a=0,那么 b=y>z就不再运行,则b=6原来的值
记住VBscript中不是这样的!两个都要做判断!

哦,多谢楼上指点

int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
解释:对于前面w>x是假的,所以a被赋值为0;但是对于整个逻辑式来说有一个0那么"与"的逻辑已经是0了,所以后面的表达式就不运行,所b的值还是6.

int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
上面的语句是一个表达式语句.
先算(a=w>x)由于 > 优先级高于=,先算w>x,其结果是一个逻辑值为0,也就是由于1>2为逻辑假.最后把0赋值给变量a.
又由于逻辑与 &&左边的运算对象是0,即出现了所谓的短路现象.换句话说.0与任何数永远等于0,编译系统碰到这样的情况就不再算(b=y>z),因此,a=0,而由于没有算&&后的面的表达式b就保持原值.b=6