我需要它是一个do / while循环但我看到的所有答案 是循环。为什么我不能在我的条件下退出呢?
#include <iostream>
using namespace std;
int main()
{
char c('a');
do
{
cout << "Enter a character to be displayed\n";
cin >> c;
cout << c << endl;
}
while ((c != 'e' || c != 'E'));
return 0;
}
答案 0 :(得分:1)
您的延续条件应该是c
不是'e'
而且'E'
:
while ((c != 'e' && c != 'E'))
// ^^
答案 1 :(得分:0)
这是一个小的逻辑错误,导致无限循环,因为您使用||
,这是逻辑OR,而不是逻辑AND(&&
)符号。如果你分析你的while循环:
while ((c != 'e' || c != 'E'));
然后只要c不是 e AND E ,那么循环将继续运行,因为为了伪造条件,c应该等于e <强>和 E同时。这是永远不可能的,因此,你的循环无限运行。
请参阅此处的逻辑:
如果您输入'e':
while ((c != 'e' || c != 'E'));
中,只有第一个条件是伪造的;因此,0 || 1 = 1 =真。 如果您输入'E':
while ((c != 'e' || c != 'E'));
中,只有第二个条件是伪造的;因此,1 || 0 = 1 =真。 如果您输入任何其他字母:
while ((c != 'e' || c != 'E'));
中,没有任何条件被伪造;因此,1 || 1 = 1 =真。 要修复代码,请将while循环条件更改为:
while ((c != 'e' && c != 'E')); // notice the change in the logical operator.
这样,如果我们使用与上面相同的逻辑(我不会重复它,但它应该是直截了当的),那么即使其中一个条件为假,循环也会终止。这意味着输入“e”或“E”将结束循环,这是期望的效果。
希望这会有所帮助。如果您需要更多说明或帮助,请在下面的评论框中告知我。祝你好运!