为什么(!=)不等于运算符会执行,即使它是错误的C ++

时间:2019-02-16 22:32:34

标签: c++ c++11

问题是我已将Char变量初始化为Q,以便LOOP不执行,但可悲的是?!我在此操作中找不到逻辑流程,这是我做错了什么,为什么LOOP即使不执行也会执行。

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    cout << "This program is giving you some options, each"
        " option allows you to perform actions" << endl;
    char options{'Q'};

    vector <int> numbers {1,2,3,4,5,6,7,8,9,10};
    while (options != 'Q' || options != 'q' ){
        cout << " P - Print numbers " << endl;
        cout << " A - Add a number " << endl;
        cout << " M - Display list of the numbers" << endl;
        cout << " S -  Display the smallest number " << endl;
        cout << " L -  Display the largest number" << endl;
        cout << " Q - Quit"<<endl;
        cout << " Enter your choice : " << endl;
        cin >> options;

        // Printing Numbers
        if (options =='P' || options =='p'){
            for (auto x : numbers){
                cout << x << endl;
            }
        }
    }
    return 0;
}

2 个答案:

答案 0 :(得分:6)

(options != 'Q' || options != 'q' )

如所写,这是说“只要options不是Q 不是q”。由于变量不能同时为qQ,因此循环不会退出。

您可能想要这样:

(options != 'Q' && options != 'q')

假设只要options不是Q 并且不是q,循环就执行了,也就是说,变量必须没有值循环继续。

答案 1 :(得分:1)

我认为问题是您有||选项!='q',表示执行时为true。