C++ &引用;“未定义”;变量和参数

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

我是写第一个函数的学生,所以我相信这对我来说是一个明显的错误。 在第13行,我在参数中得到一个错误,告诉我num1和num2没有定义。根据我对传递参数的理解,第9行应该告诉第13行num1和num2是什么(1和2)。由于它不起作用,我对它的工作原理显然弄错了

如果有人能解释我做错了什么,我会感谢你的帮助。非常感谢

#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;
    
    }