我正在努力通过Principles and Practice Using C++
。我一直很好地理解它,但最近我遇到了chapter 6
. 假设您开始编写一个计算器程序,并且随着您继续编写它,它会逐渐变得更加丰富。它最终导致代币,这让我很困惑。
任何人!我的问题是我正在遵循这段代码,但它并没有像它解释的那样工作。我已经多次检查了这本书的代码,它看起来很相似。代码只是不断地接受 lval 而没有做任何事情。输入 3 个 cin 后,它只会显示 lval 最初设置的值。我也不是 100% 确定在 while 循环中使用 cin >> op 。是什么让它停下来?它什么时候知道停止?错误功能似乎也不起作用。我一直试图破坏程序,但它没有弹出任何错误消息。
这只是令人沮丧,因为我正在学习,如果没有导师,我很难解决自己的问题:/ 谢谢大家的时间!传入代码......这是我到目前为止所拥有的
#include "std_lib_facilities.h"
int main()
{
cout << "Please enter an expression (we can handle ""+"",""-"",""*"",""/"")" << endl;
int lval = 0;
int rval;
char op;
/*int res;*/
cin >> lval; //read left most number
if (!cin) error("No first operand");
while (cin >> op) //Repeatedly read operand and right value
{
cin >> rval;
if (!cin) error("No second operand");
switch(op)
{
case '+':
lval += rval; //add: lval = lval + rval
break;
case '-':
lval -=rval;//subtract: lval = lval - rval
break;
case '*':
lval *= rval; //Multiply: lval = lval * rval
break;
case '/':
lval /= rval; //Divide: lval = lval / rval
break;
default:
cout << "Result: " << lval << endl;
keep_window_open();
return 0;
}
}
error("Bad expression");
}
PS 我尝试使用断点来查看如何逐行编写代码,但它开始将我扔到 iostream 文件中,我现在不知道如何阅读这些文件!