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

解答下此题

热度:31   发布时间:2007-10-17 20:16:15.0
int x,y=-2,z=0;
if(x=y=z) x=4;
printf("\t%d\t%d\n",x,y);

z=0,将z的值付给x,y所以x,y都为0。但同时x=y=z表达式的值也为0了。所以条件不成立,x=4未被执行。打印出的x,y也就为0,0了

----------------解决方案--------------------------------------------------------
if(x=y)和if(x==y)在语法上都是对的,只不过x==y如果x的值与y相等则表达式的值为1,不等则为0。而x=y的表达式的值就是y的值,所以如果y=0,则表达式的值为零,条件不成立,为其他则恒成立

[此贴子已经被作者于2007-10-19 13:11:33编辑过]



----------------解决方案--------------------------------------------------------
x=y=z
相当一个连续的赋值;这在初始化是是不行的 !

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

我想做这样一个修改:
#include<stdio.h>
void main()
{
int x,y=-2,z=1; //z=1
if(x=y=z) x=4;
printf("\t%d\t%d\n",x,y);
}

这里if(x=y=z) x=4; 前面的朋友解释过了x=y=z=1;等效与if(x=1) x=4;
如果x为真(即不为零)就执行x=4,否则跳过这句,所以这里的结果为: 4 1
不知道这样解释可否??


----------------解决方案--------------------------------------------------------
答案当然是0和0,这是没有问题的,原因:一方面,x=y=z应该理解成y=z;x=y(这两赋值语句的顺序不能倒过来),所以x,y的值均为0;其次,这里的if语句就是if(x),而x为0,即为假,所以x=4并不执行。所以最终x,y的值均为0。附,请注意if(x=y)和if(x==y)的区别,前者是将y的值赋于x,条件成立与否看x的值是否不为0;后者则判断x与y是否相等,以决定条件成立与否。
----------------解决方案--------------------------------------------------------
vc6下程序运行的结果是      0      0
----------------解决方案--------------------------------------------------------
  相关解决方案