虽然循环没有终止C ++

时间:2017-10-22 12:55:27

标签: c++ while-loop do-while stdvector

我想继续输入整数到P1向量,直到输入这个例子'q'或'Q'的断点。一旦满足休息条件,运行时的程序会变成无限循环。关于解决方法的任何想法,我只能看到,因为'q'或'Q'是一个字符,当while循环运行时,整数向量将此作为输入,此时无限循环?

#include "stdafx.h"
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    //Declaring Polynomial 1 and 2
    vector<int> P1;
    vector<int> P2;

    int x = 0;
    int y = 0;

    while (x != 'q'||x != 'Q') {
        cout << "Please enter in the first polynomial one value at a time (Press Q when done)...";
        cin >> x;
        P1.push_back(x);
    }

    //Also tested with a do while same problem
  /*do
    {
    cout << "Please enter in the first polynomial one value at a time (Press Q when done)...";
    cin >> x;

    P1.push_back(x);

    } while (x != 'q');*/



    //Ignore this is for next part of program
    vector<int> Res((P1.size() + P2.size()) + 1);

    cout << P1.size() << "," << P2.size() << "," << Res.size();

    return 0;
}

3 个答案:

答案 0 :(得分:2)

(x!='q'|| x!='Q')&lt; ----这里是一个错误,显然总是如此:当x == q - &gt;是的,因为(x!='Q')== true,反之亦然。改变||到&amp;&amp;。

答案 1 :(得分:2)

条件:

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

总是true导致无限循环。为什么会有更详细的信息:

x整数变量初始化为0。然后,检查x是否与'q'不同,111表示整数值x != 'q'。它不等于该值,因此true的表达式为x。然后检查'Q'是否不等于85字符,表示整数值x != 'Q'。它不等于该值,因此true的表达式也是(true || true)。我们最终的条件为true,始终为0

积分值可隐式转换为布尔值,其中false代表true,任何其他数字代表char c = 'y'; while (std::cin && (c == 'y' || c == 'Y')) { // do work std::cout << "Do you want to repeat the input? y / n?"; std::cin >> c; } 。尝试这样的事情:

"stdafx.h"

据说你不需要<p>You should select at least one photo</p>标题。

答案 2 :(得分:0)

首先我认为你不应该使用int x
第二次就像罗恩所说,将||更改为&& 无论如何,罗恩举了一个例子,它有效。