私は、ユーザーが$を押してからメインメニューに戻るまで、操作を続行するメインメニューの電卓を作っています。私はそれをテストすると、無限ループで自分のコードをスローします。私は何を間違えたのですか?以下は、1つの関数のスニペットです。 (メニューは空白と宣言されています)whileループを中断しようとすると無限ループに陥る
float makeSum(float num1, float num2) {
float r = 0;
bool ended = false;
do {
cout << "Please provide the first number: " << endl;
cin >> num1;
if (num1 == '$') {
ended = true;
}
cout << "Please provide the second number: " << endl;
cin >> num2;
if (num2 == '$') {
ended = true;
r = num1 + num2;
cout << "Result: " << r << endl;
} while (!ended);
menu();
return r;
}
あなたが表示する機能はビルドすべきではありません。閉じたブレース '}'がありません。 –
どのような状況で、 '' $ ''と等しいとテストするために、ユーザから読み込まれた' 'float'型の値を期待しますか?ストリーミング演算子は浮動小数点値に変換する方法を知らないので、ユーザが '$'を入力した場合は確かではありません。あなたの実装がASCII文字セット(またはそれと互換性のあるもの)を使用している場合、 '36'を入力すると、' '$ ''の整数値であるため、ループが終了します。 – Peter