若有定义:int x=2,y=3;float i;,则以下符合C语言语法的表达式是( )。

若有定义:int x=2,y=3;float i;,则以下符合C语言语法的表达式是( )。
A. x=x*3=2
B. x=(y==1)
C. i=float(x)
D. i%(-3)
可是C的话是错的啊,强制类型转化不是这样写啊

B、C都是正确的。

A——=是右结合的, x=x*3=2等价于 x=(x*3=2),x*3不是左值表达式,不能赋值

D——%两边必须都是整数,i是float型浮点数,所以错。

请看——

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-07-21
选择B选项
其余都是错误的表达式追问

可以解析一下吗

追答

A x*3不是左值,不可作为赋值符的左操作数
C 你自己都说了,应该是i=(float)x
D 浮点数不可作为取余符的操作数

追问

我奇怪的是为什么有些人说B是错的,答案不一样

追答

C选项如果要对,前提是将其作为C++的代码,而不是C代码,这与题面的"符合C语言语法"矛盾

本回答被提问者采纳