A) a = (b = c) + 1;
这是合法的。在这个语句中,首先执行括号内的赋值b = c,然后将结果(即c的值)加1,最后将加1后的结果赋值给a。这是一个链式赋值,其中每个赋值操作都是有效的。
B) (a = b) = c = 1;
这是不合法的。在C语言中,赋值语句的左侧必须是一个左值(locator value),即可以表示内存位置的值。(a = b)的结果是一个右值(rvalue),即一个临时的、不表示内存位置的值。因此,不能将一个右值作为另一个赋值操作的左侧。此外,c = 1是一个有效的赋值,但整个表达式(a = b) = c = 1是不合法的。
登录后提交答案