C语言 赋值 编程 正确的表达式

int a; long b; double x,y;

A :a=x!=y 为什么这个是正确的啊??
B y=x+y=x 为什么这个就不正确呢??
帮我指点一下谢谢哦~~

分析一下:
a = x! = y,你可以这样理解,首先判断x!= y是否正确,如果其为真,a = 1,如果其为假,a = 0;

y = x+y = x,这个主要原因出在了,x + y = x上,这是个赋值运算符,它前面应该是一个变量,而这里是两个变量的和,所以运行的时候,编译器不知道该把x的值赋给谁?故出错!你可以这样:

int x = 2;
int y;
int z;
z = y = x;
上面的运算时正确,这样y和z都是2!只不过一般不推荐这样写程序!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-29
a = x != y的意思是,如果x != y,则将1(true)赋给a,否则0(false)赋给a.
在y = x + y = x中,x的值不能赋给x + y,这是因为赋值运算的左值必须是变量,而不能是表达式。
第2个回答  2012-02-28
这里遵循的是右结合性 从右至左赋值 把x赋值给x+y 但是x+y是一个赋值表达式 不可以做左值 所以B是错误的
就好像a=(b=3*4)可以 却不可以a=(a=b)=3*4一样 括号中的a=b就相当与算数表达式 不可以当左值
相似回答