首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

位运算的有关问题?提示illegal use of floating point in function main

2012-05-24 
位运算的问题?提示illegal use of floating point in function mainmain(){float a,ba5.0ba1printf

位运算的问题?提示illegal use of floating point in function main
main()
{float a,b;
a=5.0;
b=a>>1;
printf("%f",b);
}
不知道问题在哪?

[解决办法]
b=a>>1是一个赋值运算,赋值运算时级别低的向级别高的类型转换,int先被转换成了float型,
你此时输出a的值,可以看到a = 2.00000005,把浮点型的向右移位,就是你那个b的值,
通常低位向高位转换时会出现问题,而高位向低位转换会失真,
大概就是这么个意思,语言表述可能不太准确。
[解决办法]
5的二进制:0b101,右移一位,变成0b10,就是2,赋值给浮点数。

没有LS说的那么麻烦,再说了,也完全不是LS说的那个理、、、所有能被2整除的数都可以被2进制准确表示

热点排行
Bad Request.