摂氏から華氏への誤った変換
C では、浮動小数点演算を使用して摂氏から華氏に変換する場合、特別な注意が必要です。次のコードを考えてみましょう:
<code class="cpp">#include <iostream> using namespace std; int main() { float celsius; float fahrenheit; cout << "Enter Celsius temperature: "; cin >> celsius; fahrenheit = (5/9) * (celsius + 32); cout << "Fahrenheit = " << fahrenheit << endl; return 0; }</code>
このプログラムは摂氏入力に対して 0 を出力するのはなぜですか?
問題は (5/9) の整数除算にあります。デフォルトでは、C は整数の除算を実行します。この場合、結果は 0 になります。これに対処するには、オペランドの 1 つを浮動小数点型にキャストして、浮動小数点除算を強制する必要があります。以下の修正されたコード:
<code class="cpp">#include <iostream> using namespace std; int main() { float celsius; float fahrenheit; cout << "Enter Celsius temperature: "; cin >> celsius; fahrenheit = (5.0/9) * (celsius + 32); cout << "Fahrenheit = " << fahrenheit << endl; return 0; }</code>
以上が摂氏から華氏への変換で常に 0 が出力されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。