zeichen; cou-6ren">
gpt4 book ai didi

c++ - 重用 "rechnung()"即使它不应该

转载 作者:行者123 更新时间:2023-11-28 04:25:13 25 4
gpt4 key购买 nike

#include <iostream>
#include "funktionen.h"

using namespace std;

int rechnung()
{
cout << "Please choose the operator you want to calculate with" << endl;
int eingabe1;
int eingabe2;
int eingabe;
int dummy;
char zeichen;
char again;
cin >> zeichen;
cout << endl << "1. Eingabe: ";
cin >> eingabe1;
cout << endl << "2. Eingabe: ";
cin >> eingabe2;
switch (zeichen)
{
case '+':
eingabe=eingabe1 + eingabe2;
break;
case '-':
eingabe=eingabe1 - eingabe2;
break;
case '*':
eingabe=eingabe1 * eingabe2;
break;
case '/':
eingabe=eingabe1 / eingabe2;
break;
}

cout << endl << "Das Ergebnis ist | " << eingabe << " | " << endl << endl;
cout << "Wanna calculate again? ";
cin >> again;
while(again=='Y')
{
rechnung();
}
return 0;
}

所以这是我在实现文件中的代码。我的问题是,主程序总是循环整个“rechnung()”函数,即使在它要求时我没有在控制台中键入“Y”。一开始,当我输入除“Y”以外的其他内容时,控制台会关闭(它应该关闭)但是如果我进行计算,输入“Y”,进行另一次计算并输入“k”,例如,它也从“rechnung()”的开始。它为什么这样做?我的意思是我告诉他,如果字符输入是“Y”,他只会记忆起“rechnung()”。

最佳答案

考虑这个可能更简单的例子:

void foo() {}
void bar() {
char again;
// ... do something
std::cin >> again;
while(again=='Y') {
foo();
}
}

在循环内部,again 的值永远不会改变,因此存在无限循环。但是,您的代码通过递归调用函数更进一步。大大简化了你:

void bar() {
// .. do something
while (true) {
bar();
}
}

ie bar 一次又一次地调用自己并且永远不会返回。你把循环放在错误的地方。你可以这样写

void bar() {
char again = 'Y';
while (again == 'Y') {
// .. do something
std::cout << "repeat?";
std::cin >> again;
}
}

关于c++ - 重用 "rechnung()"即使它不应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com