变量未在此范围内声明c ++

时间:2015-01-13 02:26:09

标签: c++

我是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

似乎该变量已正确初始化,我只是看不到任何代码问题。

2 个答案:

答案 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会出错,那并不代表您的代码是错误的。