Итак, я делаю калькулятор с основным меню, чтобы я продолжал операцию до тех пор, пока пользователь не нажмет $, а затем вернется в главное меню. Когда я тестирую его, он бросает мой код в бесконечный цикл. Что я сделал не так? Ниже приведен фрагмент одной функции. (меню объявлено недействительным)Застревает в бесконечном цикле при попытке разрыва цикла 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» приведет к завершению цикла, потому что '36' является интегральным значением' '$ ''. – Peter