设有如下的变量定义: int i =8,k ,a,b ; unsigned long w=5; double x=1.42,y=5.2; 则以下符合C语言。。。

设有如下的变量定义:

int i =8,k ,a,b ;
unsigned long w=5;
double x=1.42,y=5.2;
则以下符合C语言语法的表达式是:
(A)a+=a-=(b=4)*(a=3)
(B)x%(-3);
(C)a=a*3=2
(D)y=float(i)

答案是A,我也理解A为什么是对的,B和C为什么是错的,但是实在不理解D错在哪里,网上的很多解释看得真心蛋疼,跪求大神帮忙

(D)y=float(i) 这句的本意是想把 i 强制转换成 浮点型 ,然后赋值给 y,可是 强制转换 应该是这样写的:y=(float)i,括号括的应该是 数据类型,而不是 变量;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-08
B,x是double类型的,怎能饿一个int型的数做于运算呢?
C,a=a*3=2,这个等式明显就不成立啊?,可能是a没有初始化,不能这样赋值,因为这中间都是赋值符号。
D,y是double类型的,它强制转为float干嘛? 一个float类型的数能赋给一个double类型的变量吗?