我是c +的新手,并且这个程序需要花费大量金钱并计算允许的最大5美元钞票数量并将其分配给numFives
。剩下的钱将存入,并应分配给numOnes
。这一切都假设所提供的资金是19。
#include <iostream>
using namespace std;
int main() {
int amountToChange = 0;
int numFives = 0;
int numOnes = 0;
amountToChange = 19;
numFives = amountToChange / 5;
numOnes = amountToChange - (numFives * 5); //error occurs here
return 0;
}
我假设我的逻辑在这里是正确的,但每当我运行代码时,我都会收到此错误:
error: ‘numFives’ was not declared in this scope
似乎该变量已正确初始化,我只是看不到任何代码问题。
答案 0 :(得分:0)
您的逻辑 正确,您发布的代码也是正确的。
因此,除非您在编译器中发现了严重的错误,否则我的建议是您发布的代码不导致该错误的代码。
我的建议是回到代码并重新检查您每次都以相同的方式拼写numFives
。它只是抱怨你尝试使用它的第二时间变量的事实似乎表明你标记为错误的行上有一个拼写错误的变体。
如有必要,请删除该行并重新输入。
另一种可能性是,您已经剪切并粘贴了允许使用奇怪字符的应用程序中的代码,这些内容我已经看过&#34; smart&#34;引用其他事项:
puts (“won't work”);
puts ("will work");
您通常可以通过执行程序的十六进制转储(例如Linux od
程序)来确定是否属于这种情况:
$ echo " puts (“won't work”);" | od -xc
0000000 2020 2020 7570 7374 2820 80e2 779c 6e6f
p u t s ( 342 200 234 w o n
0000020 7427 7720 726f e26b 9d80 3b29 000a
' t w o r k 342 200 235 ) ; \n
0000035
寻找不属于的东西。在您的情况下,这将是最终numFives
发生的事情。
顺便说一句,你也可以考虑使用:
numOnes = amountToChange % 5;
计算剩下的部分。它会&#34;修复&#34;你的问题在某种意义上说错误应该会消失,但我会在做这件事之前找出根本原因。
答案 1 :(得分:0)
如果您正在使用Visual Studio,则会发布由Intellisense
工具提供的错误,该工具负责C ++源代码标记管理。
Intellisense 不是编译器 - 如果您发现您的代码是正确的,但Intellisense会出错,那并不代表您的代码是错误的。