Xcode 4.6で実行されるCで記述されたプログラムがあります。このプログラムでは、関数の1つがユーザー入力に基づいて2つの浮動小数点数を除算します。lldb
何らかの理由で、正しい順序で除算を実行しようとすると(コードサンプル1)、プログラムは一時停止してデバッガーを無限ループでオンにします。除算を反転しようとすると、結果は常にゼロになります(コードサンプル2)。
サンプル1コード:
float num2, num1;
int main() {
scanf("%f",&num1);
scanf("%f",&num2);
num2 = num1/num2;
printf("%f",num2);
}
サンプル1の出力:
4
2 // user inputs calculation
(lldb) // program keeps printing this indefinitely
サンプル2コード:
float num2, num2
int main() {
scanf("%f",&num1);
scanf("%f",&num2);
num2 = num2/num1;
printf("%f",num2);
}
サンプル2の出力:
4
2 // user inputs calculation
0 // since calculation is inverted, input was interpreted as 2/4, but rather than returning 0.5, the program returns 0.
なぜこれが発生するのか、またはそれを修正する方法がわかりません。ここの誰かが同様の問題を抱えていて、修正を見つけましたか?