c++ - 我的代码有什么问题...当条件满足时循环不关闭

标签 c++ do-while libstdc++

我正在学习 Ivor Horton 的 Beginning Visual C++ 2012,我正在做第三章中的练习二:决策和循环。这是我的代码:

#include <iostream>

using namespace std;

int main()
{
    char letter;
    int vowels = 0;

    do
    {
        cout << "Enter a letter, and enter q or Q to end" << endl;
        cin >> letter; // Enter a letter
        switch (letter)
        {
            case 'a' || 'A' || 'e' || 'E' || 'i' || 'I' || 'o' || 'O' || 'u' || 'U': // If letter is a vowel, add to vowels variable
                vowels++;
                break;
            default: // If letter is not a vowel, break loop
                break;
        }
    } while (letter != 'Q' || letter != 'q');

    cout << "You entered " << vowels << " vowels.";
    return 0;
}

此程序的预期目的是允许用户输入一个字母,直到他们输入 q 或 Q,此时 do...while 循环结束,程序向用户显示他们输入的元音字母数。

当我运行它时,当我输入 Q 或 q 时程序不会退出。为什么?我该如何解决这个问题?

最佳答案

字母 != 'Q' ||字母 != 'q'

意味着...

letter is not Q or is not q...所以它总是真的...就好像它是Q,它不会是 q,如果它是 q,它就不会是 Q ...那只会是错误的,如果字母是 Qq 一次。

只需使用:

letter != 'Q' && letter != 'q'

关于c++ - 我的代码有什么问题...当条件满足时循环不关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696335/

相关文章:

c++ - 如何创建一个既接受数组又接受 vector 引用的函数模板?

c++ - C++11 映射值的迭代器(简单透明)

理解计算 char 变量的 C++ 问题

c - 使用 while 循环的星形图案

c# - 不能在 do/while 循环内声明的 while 子句中使用变量

C:Do-While 循环重复太多!

python - 找不到 GLIBCXX_3.4.29

c++ - g++ 和 clang++ 对流输入和无符号整数的不同行为

c++ - 数组大小模板推导

c++ - 如何解决 gcc 4.7 和 4.9 之间 std::vector 的不同行为?