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
----------------解决方案--------------------------------------------------------