k=i=j a=b+c=1 c语言中这两种赋值语句对吗,为什么

如题所述

k=i=j;语法正确,a=b+c=1;语法错误
赋值语句(=号)执行“右结合”方式,即先计算右边的内容。且赋值语句的左边,只能为变量,不能为常量、表达式。由上述赋值语句的特性来看,
第一个式子可分为:i=j;k=i;2条,均符合C语言要求。
第二个式子,增加了
加法运算,加法的优先级高于
=号,故可分为:(b+c)=1;a=(b+c);很明显,前半截
(b+c)=1
不符合C语言对赋值语句
左侧不能为表达式
的要求。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-29
因为第一个式子有两个赋值符号
而第二个是一个赋值符号和一个比较符号
根据结合顺序
第二个式子相当于
k=(i==j)
判断i是否等于j
如果等于
则(i==j)的值为1
如果不相等
则(i==j)值为0
再把这个1或者0赋给k
这样就是正确的
相似回答