«неопределенные» переменные и аргументы - PullRequest
0 голосов
/ 04 ноября 2019

Я студент, пишу свою первую функцию, поэтому я уверен, что это будет очевидной ошибкой с моей стороны. В строке 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;

}

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Позвольте мне рассказать вам о проблемах в вашем коде.

  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;

}
0 голосов
/ 09 ноября 2019

Num1 и num2 не определены, и один в функции будет маскировать другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...