do {
cout << "Enter the account type (C for current and S for savings): ";
cin >> account_type;
} while (account_type != 'S' || 'C');
我将account_type设置为char,问题是每次运行程序时我都输入S或C循环不断重复。任何人都可以帮我知道它为什么会发生?
答案 0 :(得分:4)
在布尔运算中使用时,c ++中的所有非零值都计算为true
。因此account_type != 'S' || 'C'
与account_type != 'S' || true
相同。这意味着你的循环永远不会退出。
您需要做的是执行两项检查
do {
cout << "Enter the account type (C for current and S for savings): ";
cin >> account_type;
} while (account_type != 'S' && account_type != 'C');
答案 1 :(得分:0)
因为你不能说&#39; S&#39; || &#39; C&#39;,你会认为c ++会认为你的意思是如果account_type是S或C但是c ++在两个独立的部分中看到这个:(account_type == 'S') || ('C')
。 (&#39; C&#39;)默认为true,因此循环永远循环。
你需要写的是:
do {
cout << "Enter the account type (C for current and S for savings): ";
cin >> account_type;
} while (account_type != 'S' && account_type != 'C');
您需要更改||和&amp;&amp;因为如果account_type是S,那么它就不能是C而反之亦然,因此循环永远不会完成。
答案 2 :(得分:0)
你的检查错了。你必须这样写:
while (account_type != 'S' || account_type != 'C')
您无法执行||
检查,或者就此而言,您必须始终重新声明该变量。