c语言题:符合C语言语法的赋值表达式是

若有变量说明:int a=0,b=0,c=0;,以下符合C语言语法的赋值表达式是____
A、a=9+b+c=a+9 B、a=9+b;c=a+9;
C、a=(9+b,b++) D、a=9+b++=a+7
选哪个?最好要详细的说明,每项都要,这要考的什么考点?

B C

=左边必须是左值(可以被赋值的值,也被称作变量表达式,变量、数组表达式、指针表达式的值都是左值。但是算数、逻辑运算表达式、函数表达式的值不是左值所以不能被赋值)所以A、D错误

C是逗号表达式。(逗号表达式的值和类型都由逗号右边的表达式决定,就是说连续逗号表达式比如a,b,c,d等价于a,(b,(c,(d)))

-
赋值仅仅是一种表达式,也有值和类型a = 1。的值是1类型是int,所以完全可以赋值给另一个int类型变量b = (a = 1)也就是b = a = 1。不存在不可以连续赋值的说法。

括号表达式也是一样。只要有类型和值就能赋值给对应的变量这是赋值的原则。

B和C的写法在标准C编译器上都是可以编译通过的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-07-06
别听上面的瞎说

“=”作用是将一个数据赋给一个变量,也可以将一个表达式的值赋给一个变量

注意是赋给一个变量,所以A 9+b+c=a+9 错
D 9+b++=a+7 还有一个错误是b++是表达式,不是变量

逗号运算符,作用是将两个表达式连接起来。计算过程是先计算括号前面的,在计算逗号后面的,整体值是逗号后面的。

B C都是正确的。
C是可以在电脑上运行的,因为电脑会先计算b++,值为a=0,此时,b=1,若改为++b,则a=1,括号也没问题

这道题考你对运算符,表达式的掌握,
刚刚看的教材,你又让我复习了基础知识,谢谢了
第2个回答  2021-01-08
正确答案是C。
(我也是在百度上找了老半天才找到的)
A和D就跳过了,看其他评论。
B选项:a=9+b;——是赋值语句而非赋值表达式!所以答案只有一个C。
因为是赋值语句的原因,所以编译器调试压根不会报错,所以往往会认为B正确。
只能这样解释了,毕竟考题明摆着这是单选,还认定答案是C。
不管了,我想就是这样了,如果是别的原因不介意的话回回我。
第3个回答  2008-07-05
答案是B.
A和D中都有连等,所以显然错误
C选项中,赋值号右边不能用逗号表达式,所以错误。
本题考点在于赋值运算规则的运用。
C语言中不允许连续在一个表达式中出现连续的赋值运算。
第4个回答  2008-07-05
选b啊,
A和D中,C语言的赋值语句不能出现连等式。C中,b++是一个变量,不能用一个变量给另一个变量赋值,而且那个括号表达式怪怪的。

参考资料:我学过一个学期的C语言