次のANSICコードを考えると、結果について疑問に思います。
main() {
int a = 19.4 / 9.7; // result = 2
float b = (int) 19.4 / (int) 9.7 // result = 2.000000, why?
float c = (int) 9.7; // result = 9
}
Cはintへの変換で小数点以下すべてを切り捨てることを理解しましたが、2行目を見ると、ロジックに欠陥があります。小数点以下をカットした場合、結果は2.11111になります。
ANSI Cで浮動小数点変換はどのように行われますか?