'num1'未在此范围内声明

'num1' was not declared in this scope

本文关键字:范围内 声明 num1      更新时间:2023-10-16
#include <cmath>
using namespace std;
int answer;
int cube (int num1)
{
answer = num1 * num1 * num1;
return answer;
}
int main()
{
cout << "enter your number to cube";
cin >> num1;
cube(num1);
return 0;
}

对编码非常陌生,经验不到一天,谁能告诉我我做错了什么?

错误消息'num1' was not declared in this scope表示您尝试使用的变量在您尝试使用它的地方不存在。

您尚未声明num1. 你需要在你的主函数中像这样声明它。

int main()
{
cout << "enter your number to cube";
int num1 = 0;
cin >> num1;
cube(num1);
return 0;
}

C++有一个叫做scope的概念。

num1是在cube范围内宣布的,但不是在main范围内宣布的。从本质上讲,这意味着,名称num1cube中具有含义,因为您在那里声明了变量,但由于该名称的范围仅限于cube函数,因此当您尝试在main中引用它时,该名称未定义。

这篇文章对这里讨论的一些概念进行了初学者友好的介绍

范围是指变量的可见性,这意味着程序的哪些部分可以看到或使用它。 变量"answerswer"具有全局范围。全局范围内的变量可以在程序中的任何位置使用。这就是为什么您可以在函数立方体中使用变量答案的原因。 但是变量 num1 是在函数立方体中声明的。因此,它具有函数多维数据集的本地范围。因此,变量 num1 在函数立方体之外不存在,对于函数主函数,不存在名称为 num1 的变量。这就是您收到错误"num1"未在此范围内声明的原因。要消除此错误,请在首次使用之前在 main 范围内声明"num1"。

您尝试将用户的输入存储到num1中,但尚未声明num1。(在谷歌中查找错误消息应该已经为您提供了足够的信息(

int num1;
cin >> num1;

完整代码工作:

#include <cmath>
using namespace std;
int answer;
int cube (int num1)
{
answer = num1 *num1*num1;
return answer;
}
int main()
{
int num1;
cout << "enter your number to cube";
cin >> num1;
cube(num1);
return 0;
}

如果你想读取一个输入作为变量存储,你需要首先像下面这样声明它。

int num1;
cin >> num1;

第一行告诉计算机你想要一些空间来存储变量,然后可以通过调用 cin 将输入存储在其中。

还有一件事,不好用using namespace std,会引起很多奇怪的问题。我建议你学习一些关于操作系统的知识,这对编程非常有帮助。