关于浮点型与整型之间转换的问题!!![codeC/C++][/code]intixfloatfxixINT_MAXshow_int(ix)//ffffff7
关于浮点型与整型之间转换的问题!!!
[code=C/C++][/code]
int ix;
float fx;
ix = INT_MAX;
show_int(ix); // ff ff ff 7f
fx = (float)ix;
show_float(fx); // 00 00 00 4f
iy = (int)fx;// ix != iy
show_int(iy); // 00 00 00 80
iy = (int)(float)ix;
请大侠指点,为什么(int)(float)ix和分开先fx =(float)ix再(int)fx结果不一样呢?按照转换的规则,应该是后者正确,那前者是什么机理呢?大家多多发言哈!!!
[解决办法]
这牵扯到寄存器的问题
前面两次强制类型转换,都赋值给了具体的变量
最后一次,iy = (int)(float)ix;没有中间环节
整个过程都是在寄存器中操作的。
所以数据没有丢失
