摂氏を華氏に変換するプログラムを C で作成する場合、次の式では正しくない出力が得られます。
int fahr = 9 / 5 * celsius + 32;
これはおそらく 9/5 が整数として解釈される問題であることは理解していますが、理解できないのは、double
またはを使用しfloat
ても同じ誤った出力が得られることです。
奇妙なことに、タイプを に設定しているにもかかわらず、次の式は正しい出力を提供しますint
。
int fahr = celsius / 5 * 9 + 32;
さらに、タイプが に設定されているdouble
場合でも、以下のような単純なものでも、1.8 ではなく 1.0 として出力されることに気付きました。
double x = 9 / 5;
printf("%lf\n", x);
私はこのスレッドを読みました:
int fahr = celsius / 5 * 9 + 32;
しかし、なぜ機能するのかまだわかりませんが、そうではありませんint fahr = 9/5 * celsius+32;
か?