我試着ideone.com以下測試爲什麼abs(1.5)在ideone.com上返回0而不是1或2?
(注:我的本地機器不給這個問題)
#include <stdio.h>
int main(void) {
float f = abs(2); printf("%f \n", f); // 2.000000
float g = abs(1.5); printf("%f \n", g); // 0.000000
return 0;
}
原型爲ABS是 '詮釋ABS(INT)'
因此我預計g會返回1或2;我期望將'1.5'轉換爲整數。 http://ideone.com/reyITY
有人能解釋這種現象:
這可以在ideone.com證明?
PS我知道我應該使用晶圓廠(或fabsf?),但無論如何,我想明白爲什麼這打破了它
'float f = abs(2.0f);'也返回'0.0000',所以我猜編譯器不喜歡做那個轉換 –
@Pi可能你的編譯器不知何故和某些爲什麼包括'stdlib.h'包括'stdio.h',而他們沒有。所以最好做對,幷包括你需要的東西。另請參見[本示例](http://ideone.com/X3V7cf)。 – glglgl
@glglgl顯然是鏗鏘的......這首先困惑了我,所以對於鏗鏘聲來說,這是一種轉換。 –