有以下定义语句double a,b;int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是______。

A. a=a+b=b++ B. w%((int)a+b) C. (c+w)%(int)a D. w=a==b;
要求解释清楚为什么.

答案是C,(c+w)%(int)a
A、赋值号的左边只能是变量,不能是表达式
B、取模运算的数据只能是整型,(int)a把a强制转换成整型,但b为双精度数据类型,双精度数据类型加实型为双精度数据类型
D、int型变量在内存中占的空间比double型少,所以不能把a,b的值赋给w
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-11
A、a+b不能够作左值,因为左边不能有表达式
B、double类型不能作int型除数
D、可看为w=(a==b),不能赋值为逻辑值
所以这道题选C
第2个回答  2011-07-27
应该选C,A没有这样的赋值,B取余(%)两边应该是整数,D很明显错了
第3个回答  2011-07-25
选B追问

能不能解释一下为什么?

追答

其实我看错了
应该选C,D 的
A的a+b 是表达式不能作左值
B项中(int)a+b是double 类型的不能作%的除数
CD是对的
弱类型的变量可以赋给强类型的变量但是不能反过来
反过来就要进行强制转换

本回答被提问者采纳
第4个回答  2011-07-25
a, b都不对, c, d都没有语法错
相似回答