当前位置: 代码迷 >> C语言 >> 解答下此题
  详细解决方案

解答下此题

热度:201   发布时间:2007-10-15 20:30:25.0
10楼的,你把z的值改一下,看看勉强不,这种情况老师课堂上都讲过了




----------------解决方案--------------------------------------------------------
现在很多的考试题就是这种,唉,没多大用处(除了考试),考试害人啊!!!!!
----------------解决方案--------------------------------------------------------

感觉这样在实际中没太多用处


----------------解决方案--------------------------------------------------------
5楼是正确的答案。大家仔细看 。
----------------解决方案--------------------------------------------------------
x不是个没有赋值的量,
可能是任意的值,那if语句就不成立了,可是?
x=4也就不能执行了.
那x也不一定是0么.
想不通?

----------------解决方案--------------------------------------------------------
因为在 if(x=y=z)中 “=”是赋值运算符结合性是从左向右的。等同于x=(y=(z)) 其中z=0 所以: x=(y=(z=0))
结果全是零。所以if(x=y=z)等同于 if(x=0)的效果。
----------------解决方案--------------------------------------------------------
很奇怪啊!!!!!谁能解释下!


转换了下Z和Y,输出,4和-2
int x,y=-2,z=0;
if (x=z=y)
x=4;
printf("\t%d\t%d\n",x,y);

[此贴子已经被作者于2007-10-17 17:40:06编辑过]


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

上面我已经解释很清楚了。
你在去看看。


----------------解决方案--------------------------------------------------------
以下是引用lhj2005在2007-10-17 17:35:52的发言:
很奇怪啊!!!!!谁能解释下!


转换了下Z和Y,输出,4和-2
int x,y=-2,z=0;
if (x=z=y)
x=4;
printf("\t%d\t%d\n",x,y);

这原理不是一样的吗,x=z=y这个表达式相当于x=(z=y),整个表达式的最终结果为-2,if条件为真,执行x=4这个赋值操作,所以最终结果为4和-2
感觉这样写的程序在实际中没多大意义

----------------解决方案--------------------------------------------------------
哎  LZ在去看下书  if语句还没过关  只要不是0,正负都无所谓,都是真,都会执行if后的语句。   是0,就不执行了
----------------解决方案--------------------------------------------------------

  相关解决方案