C++ &引用;“未定义”;变量和参数
我是写第一个函数的学生,所以我相信这对我来说是一个明显的错误。 在第13行,我在参数中得到一个错误,告诉我num1和num2没有定义。根据我对传递参数的理解,第9行应该告诉第13行num1和num2是什么(1和2)。由于它不起作用,我对它的工作原理显然弄错了 如果有人能解释我做错了什么,我会感谢你的帮助。非常感谢C++ &引用;“未定义”;变量和参数,c++,function,parameters,C++,Function,Parameters,我是写第一个函数的学生,所以我相信这对我来说是一个明显的错误。 在第13行,我在参数中得到一个错误,告诉我num1和num2没有定义。根据我对传递参数的理解,第9行应该告诉第13行num1和num2是什么(1和2)。由于它不起作用,我对它的工作原理显然弄错了 如果有人能解释我做错了什么,我会感谢你的帮助。非常感谢 #include <iostream> #include <string> using namespace std; int main() { S
#include <iostream>
#include <string>
using namespace std;
int main()
{
Subtract(1, 2);
return 0;
}
int Subtract(num1, num2) //num1 and num2 are undefined.
{
int num1;
int num2;
int x;
x = num1 - num2;
cout << x << "/n";
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
减去(1,2);
返回0;
}
int Subtract(num1,num2)//num1和num2未定义。
{
int num1;
int num2;
int x;
x=num1-num2;
让我告诉你代码中的问题
您需要告诉编译器num1和num2是什么
你的代码还有一个更严重的问题。你必须知道,大部分情况下,编译器是在编译过程中逐行进行的。因此,当他进入你的主程序时,他不知道什么是减法。你应该告诉他这是一个函数,否则这将是编译时错误。提示-尝试定义你在代码中编写的每个变量。编译r不能自己推断出任何东西
正如在评论中提到的,我发现了另一个问题,要进入下一行,您应该写“\n”(反斜杠)
int Subtract(int,int);//如果以后定义了Subtract,则必须在main之前输入。
int main()
{
减法(1,2);//编译器不知道什么是减法。正如您稍后定义的减法。编译器不知道什么是减法。要克服这个问题,您需要在main之前声明一个函数。
返回0;
}
int-Subtract(int-num1,int-num2)//这里需要告诉你它们是一个整数。
{
//int num1;
///int num2;//一旦告诉我们num1和num2是一个整数,就不需要这样做。如果您尝试这样做,这将是一个编译时错误。因为您已经在上面创建了num1和num2变量。所以不能两次声明变量。
int x;
x=num1-num2;
coutNum1和num2未定义,函数中的一个将屏蔽另一个。Num1和num2上的类型是什么?(为什么你还拥有<代码> NUM1和 NUM2<代码>本地变量,这些参数将隐藏参数?与那个特定错误无关,但它将是下一个你必须要处理的问题:C++中,在使用之前,所有事物都需要被声明。;
,但您只能在main
之后声明/定义它。这将产生另一个错误。将Substract
的定义移动到main
之前“Num1和num2未定义”只是重复OP提到的错误消息,“函数中的一个将屏蔽另一个”在上下文中没有任何意义,因为正如你之前所说的,直到函数体中的定义才有定义。我看不出这个答案有任何帮助。我建议你在这两个方面都进行扩展。
int Subtract(int , int); // This is must before main if you defined subtract later.
int main()
{
Subtract(1, 2); // Compiler don't know what is subtract. As you defined Subtract later. The compiler doesn't know what is Subtract. To overcome this you need to declare a function before main.
return 0;
}
int Subtract(int num1, int num2) // Here you need to tell that they are an integer.
{
// int num1;
/// int num2; // once you told that num1 and num2 are an integer no need to do this. If you will try this. It will be a compile time error. As you already made num1 and num2 variable above. So can't declare variable twice.
int x;
x = num1 - num2;
cout << x << "/n";
return 0;
}