A的问题在b+c=d+9, b+c是右值, 不能被赋值
C的问题在等号右边有3个右值, 却只有一个左值. 另外c语言好像也不支持a,b,c=1,2,3这种赋值
D的问题也是在于b++是右值, 不能被赋值
赋值只要记住左值=右值,左值就是地址或者说变量名,右值就是真实的值,说白了就是一个实实在在的数据,比如1、2、3、4、5....,其中左值也可以是右值
那再来看你这道题
A) a=9+b+c=d+9,a = 9 + b + c是可以行的,左=右,但是 9 + b + c = d + 9,明显不对,右=右了
B) a=(9+b, c=d+9),这个叫逗号表达式,其值是最右边的,也就是c=d + 9,原式简化就是这样的,a=c=d+9,明显可行
C) a=9+b, b++, c+9,一个a对应了3个值,明显不对
D) a=9+b++=c+9,a=9+b++是可以的,但是9+b++=c+9明显是错的,同A
不过这种题也就看看就行了,不建议写出这种代码。
b选项,右侧为括号,里边为逗号表达式,每个表达式符合语法规范,最终括号中计算完成将按照逗号表达式赋值规则给a赋值