C ++:do while循环遇到麻烦

时间:2016-11-14 15:06:32

标签: c++

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循环不断重复。任何人都可以帮我知道它为什么会发生?

3 个答案:

答案 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')

您无法执行||检查,或者就此而言,您必须始终重新声明该变量。