关于浮点型与整型之间转换的有关问题!

关于浮点型与整型之间转换的问题!!![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;没有中间环节
整个过程都是在寄存器中操作的。
所以数据没有丢失