華氏から摂氏に変換するように設計された 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) * (摂氏 32)。
この中で式:
したがって、5/9 は 0 と評価され、入力された摂氏の値に関係なく、結果の華氏温度も 0 になります。
この問題を解決するには、除算が演算の結果は浮動小数点数になります。これは、オペランドの 1 つを浮動小数点型に変換することで実現できます。修正されたコード:
<code class="cpp">fahrenheit = (5.0/9) * (celsius + 32);</code>
この変更により、5.0/9 は浮動小数点除算になり、小数部分が保持され、正しい華氏変換が得られます。
以上が華氏から摂氏への変換プログラムが常に 0 を出力するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。