若有定义:double a=22;int i=0,k=18;为什么(i=a%11)是不符合C语言规定的赋值语句。

如题所述

因为取余运算符(%)是对整形变量(或常量)取余数,而你的变量a是double型的,所以编译肯定会报错的。而我们知道整形可以被自动转换为float或者double,但是反过来是不行的,所以你要是想用上面的语句的话,需要加强制类型转换,即:i=(int)a%11.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-21
因为,C语言中,不允许double转换成int,
自动强制类型转换,是低精度的向高精度的转换,例如int可以转double,char可以转int
但不能讲高精度转成低精度的,若非要这么做,只能显示的强制类似转换,编译的时候不会报错,但运行的时候可能会报错,
回到你的代码,i = a%11, 是将a高精度转成i,是不可以的
第2个回答  2011-08-21
因为符号%的两边必须是整数。
第3个回答  2018-12-31
这道题是二级考试的题,有两个错误选项。题出错了!
第4个回答  2011-08-21
i=(int)a%11;
相似回答