当前位置: 代码迷 >> C语言 >> 就快考级了,有道题目不会,请大家帮帮忙。。。感激不尽。。。(已解决。)
  详细解决方案

就快考级了,有道题目不会,请大家帮帮忙。。。感激不尽。。。(已解决。)

热度:143   发布时间:2007-04-05 23:38:43.0
#include "stdio.h"
main()
{
int a=5,b=6,c=1,x=2,y=3,z=4;
c=(a=c>x)&&(b=y>z);
printf("%d,%d,%d",a,b,c);
}
这里B为什么是6,而a却是0啊???


其实书里已经有说明了。&&是自左向右运算。当&&左边的值为0时就不再执行&&的语句了。
----------------解决方案--------------------------------------------------------
其实书里已经有说明了。&&是自左向右运算。当&&左边的值为0时就不再执行&&右边的语句了
----------------解决方案--------------------------------------------------------
回复:(mxn)就快考级了,有道题目不会,请大家帮帮忙...

结果是正确的.因为当a=c>x不成立时,因为是&&,所以这句不定是不真的.所以是不执行下一句.


----------------解决方案--------------------------------------------------------
那个是6啊 因为逻辑运算&&只要前面是0它就不执行后面的 结果是0 只有前面是1才执行后面的 这题前面a=c>x为0
所以不执行b=y>z b还是以前的值

----------------解决方案--------------------------------------------------------

b 等于 6
与运算(&&) 有个特点, 假设2个数 A,B 进行与运算 如果 A=0 (即A 为假) 那么 B就不需要看了,因为 0&&任何数==假
所以 b=y>z 这条语句并没有执行 b还是等于6


----------------解决方案--------------------------------------------------------
以下是引用sss3s在2007-4-6 18:23:54的发言:

结果是正确的.因为当a=c>x不成立时,因为是&&,所以这句不定是不真的.所以是不执行下一句.

严重同意


----------------解决方案--------------------------------------------------------

e B的值真的是6也
哈哈 我也是菜鸟 正好学习下


----------------解决方案--------------------------------------------------------
想不通
----------------解决方案--------------------------------------------------------

a=0,b=6,c=0

1.我们先考虑 (a=c>x) 这个成立不成立
在(a=c>x)中运算符优先级别由高到低:>,=
c>x 这个式子为0(假)
然后执行运算把 0 赋给a 即a=0
(a=c>x) 式子值为0 (假)

2.在&&中只要左边为假 右边就不用在运算了
(a=c>x)&&(b=y>z)这式子值就为0

3.在c=0就好了
所以b就没有变化 还是6
如还是不清楚NCR二级C中有讲解


----------------解决方案--------------------------------------------------------
在c=(a=c>x)&&(b=y>z);中
其实TC在得到a=c>x的运算结果后,根据与运算的有0出0。
所以&&后面的(b=y>z)就没有参加运算,直接得出c=0。
由于(b=y>z)没有参加运算,所以b的值没有变过。
----------------解决方案--------------------------------------------------------
  相关解决方案