我正在阅读 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;
}
}