为什么C语言中a+=b+=c+d=12
时间: 2024-05-06 21:19:05 浏览: 93
这段代码中的表达式 a += b += c + d = 12 是非法的,因为它试图将一个赋值表达式赋值给一个表达式,而赋值表达式本身并没有任何值可以赋给其他表达式。这样的表达式是不符合 C 语言语法规则的,编译器会报错。正确的写法是将赋值表达式拆分成多个语句,如下所示:
```
d = 12;
b += c + d;
a += b;
```
这样就可以正确地实现 a += b += c + d = 12 的功能了。
相关问题
若变量已正确定义并赋值,下面符合C语言语法的表达式是( )。 A a=b=c+2 B a:=b+1 C a=a+7=c+b D int 18.5%3
符合C语言语法的表达式是 A a=b=c 2。其他选项都存在语法错误:
- B选项中,冒号是赋值运算符,而不是C语言中的等号。
- C选项中,a=a 7=c b中间应该是一个逗号,而不是等号。
- D选项中,int后面不应该跟一个小数,而且求余运算符应该用百分号%表示,而不是中文输入法下的全角百分号。
若变量己正确定义并赋值,符合 C语言语法的表达式是《) A) a=a+7; B) a=7+b+c,a++ C) int (12.3/4) D) a=a+7=c+b
符合 C 语言语法的表达式为 A) a=a+7;。
解释:
A) a=a+7; 是一条赋值语句,表示将变量 a 的值加上 7,再将结果赋给变量 a。这个表达式符合 C 语言的语法规则,可以正确编译和执行。
B) a=7+b+c,a++ 中含有逗号运算符,逗号运算符会返回最后一个表达式的值,即 a++。但在 C 语言中,逗号运算符的优先级是最低的,所以这条语句的实际效果是先执行 a=7+b+c,再执行 a++。但是,在 a++ 时会产生副作用,改变了变量 a 的值,所以这条语句不符合 C 语言的语法规则。
C) int (12.3/4) 中的表达式 12.3/4 的结果是 3.075,但是将其强制转换为 int 类型时会截取小数部分,得到结果 3。这个表达式符合 C 语言的语法规则,可以正确编译和执行。
D) a=a+7=c+b 中含有多个赋值语句,但是在 C 语言中,赋值运算符的优先级是从右向左的,所以这条语句实际上是先执行 c+b,然后将结果赋给变量 a,再将 a+7 的结果赋给变量 a。这个表达式不符合 C 语言的语法规则,会产生语法错误。
阅读全文