99问答网
所有问题
若有定义:double a=22;int i=0,k=18;为什么(i=a%11)是不符合C语言规定的赋值语句。
如题所述
举报该问题
推荐答案 推荐于2017-11-24
因为取余
运算符
(%)是对整形变量(或常量)取
余数
,而你的变量a是double型的,所以编译肯定会报错的。而我们知道整形可以被自动转换为float或者double,但是反过来是不行的,所以你要是想用上面的语句的话,需要加强制类型转换,即:i=(int)a%11.
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/ztjOzzWe7.html
其他回答
第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;
相似回答
大家正在搜
相关问题
若有定义语句:int a[4][10],*p,*q[4];且...
double a=22;int i=0,为什么i=a%11不...
i=a%11为什么不符合C语言规定的赋值语句
C语言int k=4; int f(int a,int b)...
求大神详细解答,必须详细解答C语言中 a=11,b=19 c...
在C语言中如何实现:假若A表示范围是1到10,B表示的范围是...
在C语言中11种赋值运算符的具体含义,用法?
求大神讲解一道C语言程序题