gpt4 book ai didi

c++ - 在从一本书中复制的代码中获取未声明的标识符

转载 作者:太空狗 更新时间:2023-10-29 20:23:34 26 4
gpt4 key购买 nike

好吧,我认为下面的程序没问题,但它给出了以下错误

op: undeclared identifier

我只是不明白为什么会这样,因为它与我从“使用 C++ 的编程原理和实践”中复制的代码完全相同。

#include "../../std_lib_facilities.h"

using namespace std;

int main()

{
cout << "Please enter an expression. We can handle +,-,* and /" << "\n";
cout << "Add an x to end expression" << "\n";

int lval = 0;
int rval;

cin >> lval;
if (!cin) error("No first operand");
for (char op; cin >> op;)
if (op != 'x') cin >> rval;
if (!cin) error("No second operand");

switch (op) {

case'+':
lval += rval;
break;

case'-':
lval -= rval;
break;

case'*':
lval *= rval;
break;

case'/':
lval /= rval;
break;

default:

cout << "Result: " << lval << '\n';
keep_window_open();
return 0;
}

}

最佳答案

在for循环中声明的变量范围仅限于for循环。为了在 for 循环之外使用 op,您需要将其更改为

char op;
for (; cin >> op;)

但是当我们改变事情的时候,让我们把它变成一个 while 循环

char op;
while (cin >> op)

一些编译器允许在 for 循环之外使用在 for 循环中声明的变量,但这不是标准的,不应依赖它。判断您是否有不符合规范的编译器的一种简单方法是运行

int main()
{
for(int i = 0; i < 0; i++) {}
i++;
}

i++ 应该会导致错误(example)。

关于c++ - 在从一本书中复制的代码中获取未声明的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32486346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com