当前位置: 代码迷 >> C语言 >> [求助]a=b=c求解
  详细解决方案

[求助]a=b=c求解

热度:138   发布时间:2007-10-17 17:52:22.0
[求助]a=b=c求解
情况1
int a=2,b=3,c=4;
a=b=c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
显示a=4,b=4,c=4 -------------------正常

情况2
int a=2,b=3,c=0;
a=b=c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
显示a=0,b=0,c=0 ------------------正常

情况3
int a=2,b=3,c=4;
if(a=b=c)
a=8;
else
a=888;
printf("a=%d,b=%d,c=%d\n",a,b,c);
显示a=8,b=4,c=4 ------------------正常

情况4
int a=2,b=3,c=0;
if(a=b=c)
a=8;
else
a=888;
printf("a=%d,b=%d,c=%d\n",a,b,c);
显示a=888,b=0,c=0 ------------------不正常

为什么??? 求解答!!!
搜索更多相关的解决方案: int  求解  else  

----------------解决方案--------------------------------------------------------
没不正常啊,if(0)啊,所以执行else,而b已经被赋值为0
----------------解决方案--------------------------------------------------------
[CODE]
int a=2,b=3,c=0;
if(a=b=c)
a=8;
else
a=888;
printf("a=%d,b=%d,c=%d\n",a,b,c);
显示a=888,b=0,c=0 ------------------不正常


[/CODE]
a=b=c的执行相当于a=(b=c),先执行b=c,表达式结果为0,再把0赋值给a,使得if中的整个表达式值为0。条件为假,执行a=888
所以最终a=888,b=0,c=0


所以情况4的最终结果是对的

[此贴子已经被作者于2007-10-17 18:07:36编辑过]


----------------解决方案--------------------------------------------------------
没有不正常,这是正确的结果!在情况四里,a,b,c的值均为0, if(a) 相当于是if (0),所以是执行else分支,。。。
----------------解决方案--------------------------------------------------------

已阅....






----------------解决方案--------------------------------------------------------
逗号表达式也是值.
但建议不要这样写.
----------------解决方案--------------------------------------------------------
a=b=c最后a,b都与c结果相同,下面就是判断执不执行if后的语句了,执行了a就会被重新赋值;不执行,a,b,c结果就会一样,都是c的值
----------------解决方案--------------------------------------------------------
在C中,每个表达式都有它自己的值.如c=0;它的值就是0;而b=c=0,实际上是把"c=0"的值也就是0赋给了b,所以b也就为0了.而这个表达式的值也是0.
在你的程序中if(a=b=c),因为c=0,所以b=c的表达式为0,把b=c的表达式值付给a,所以a也就是0.整个a=b=c的表达式的值也就是0了.if(0)条件不成立,跳过.
----------------解决方案--------------------------------------------------------
学习了***
----------------解决方案--------------------------------------------------------

学习了!!!!


----------------解决方案--------------------------------------------------------
  相关解决方案