cin为什么会失败?

时间:2019-07-08 10:08:00

标签: c++ c++14

我正在阅读 c ++编程原理和实践。我明白那个: 1.当我输入1+2x时,该语句lval += rval;被执行,程序中断,并且for循环再次开始。 2.这次cin将换行符提取到op中。并且由于op !=x,所以该语句cin >> rval被执行并等待输入。 3.因此,我希望除非在控制台上输入内容,否则默认语句将永远不会执行。

实际上,该程序可以正常运行,而无需我输入任何内容。它产生Result: 3。为什么会这样?

#include <iostream>
int main() 
{
    using namespace std;
    cout << "Please enter expression (we can handle +, –, *, and /)\n";
    cout << "add an x to end expression (e.g., 1+2*3x): ";
    int lval = 0;
    int rval;
    cin >> lval; // read leftmost operand
    if (!cin) cout << "no first operand";
    for (char op; cin >> op;) { // read operator and right-hand operand
      // repeatedly
      if (op != 'x') cin >> rval;
      if (!cin) cout << "no second operand";
      switch (op) {
      case '+':
        lval += rval; // add: lval = lval + rval
        break;
      default: // not another operator: print result
        cout << "Result: " << lval << '\n';
        return 0;
    }
}

0 个答案:

没有答案