tkw*_*954 4 c casting truncate rounding
我在预测我的C代码将如何截断结果时遇到一些困难.请参阅以下内容:
float fa,fb,fc;
short ia,ib;
fa=160
fb=0.9;
fc=fa*fb;
ia=(short)fc;
ib=(short)(fa*fb);
Run Code Online (Sandbox Code Playgroud)
结果是ia = 144,ib = 143.
我可以理解这两种结果的推理,但我不明白为什么这两种计算的处理方式不同.任何人都可以推荐我这个行为的定义或解释差异?
编辑:结果使用英特尔酷睿i3-330m上的MS Visual C++ Express 2010进行编译.我在同一台机器上的Virtual Box下的gcc版本4.4.3(Ubuntu 4.4.3-4ubuntu5)上得到了相同的结果.