-4
任何人都可以解釋爲什麼下面的代碼會產生不同的結果嗎?有兩次移位操作的C/C++分區
double zaehler = -20;
double teiler = 0.08;
printf("ergebnis = %d \n", ((int) (zaehler/teiler)) << 7);
printf("ergebnis = %d \n", (int) (-20/0.08) << 7);
結果:
ergebnis = -31872
ergebnis = -32000
非常感謝提前
他們對我都打印-32000(結果我的預期)。你確定你粘貼的代碼是正確的嗎?你使用什麼編譯器? – TypeIA
[Can not repro](http://coliru.stacked-crooked.com/a/dc428c5f024dd909) – Borgleader
也許 - 在一個你有兩個內存位置雙「精度」,浮點錯誤。另一方面,你有兩個文字,具有精確的值,即在低位沒有錯誤。即變量_teiler_可能看起來像內存中的0.080000000234526 – ryyker