【问题标题】:"undefined" variables and arguments“未定义”变量和参数
【发布时间】:2019-11-04 03:28:16
【问题描述】:

我是一名学生,正在编写我的第一个函数,所以我确信这对我来说是一个明显的错误。 在第 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;

}

【问题讨论】:

  • num1num2 上的类型是什么? (为什么还有num1num2 局部变量会隐藏参数?
  • 与那个特定的错误无关,但它会是下一个你必须要解决的问题:在 C++ 中,所有东西都需要在使用之前声明。在这里,您尝试在Subtract(1, 2); 行中使用Substract,但您只能在main 之后声明/定义它。这将给出另一个错误。移动Substract的定义之前 main.

标签: c++ function parameters


【解决方案1】:

让我告诉你代码中的问题。

  1. 您需要告诉编译器 num1 和 num2 是什么。
  2. 您的代码还有一个更严重的问题。您必须知道,大多数情况下,编译器在编译期间会逐行运行。所以当他到达你的主要部分时,他不知道什么是减法。你应该告诉他这是一个函数,否则它将是一个编译时错误。提示 - 尝试定义您在代码中编写的每个变量。编译器不能自己推断任何东西。
  3. 正如评论中提到的,我发现了另一个问题,要移动到下一行,您应该写“\n”(它是反斜杠)。

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;

}

【讨论】:

    【解决方案2】:

    Num1 和 num2 未定义,函数中的一个将屏蔽另一个。

    【讨论】:

    • "Num1 和 num2 未定义" 只是重复 OP 提到的错误消息,并且“函数中的一个将掩盖另一个 " 在上下文中没有意义,因为正如您之前所说,在函数体中定义之前没有定义。我看不出这个答案有任何帮助。我建议你扩展你试图提出的两点。
    猜你喜欢
    • 2011-04-28
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多