Тип возвращаемого значения C ++ (целое число) не соответствует типу функции - PullRequest
0 голосов
/ 21 июня 2020
#include <iostream>
#include <ctime>
using namespace std;


void randNum()
{
    int num1 = (rand() % 12) + 1;
    int num2 = (rand() % 12) + 1;
    int answer;
    answer = num1 * num2;

    return answer, num1, num2;
}
int main()
{
    srand(time(NULL));
}

Я получаю, что тип возвращаемого значения ошибки не соответствует типу функции. Ответ является целым числом, но он не вернется, несмотря на это.

Ответы [ 3 ]

2 голосов
/ 21 июня 2020

3 вещи вернуть нельзя. Вы можете обернуть его структурой, если используете sh. И сделайте так, чтобы ваша функция возвращала структуру вместо void. В основном вызовите вашу функцию

#include <iostream>
#include <ctime>
using namespace std;


struct three_values {
    int a;
    int b;
    int c;
};

three_values randNum()
{
    three_values return_me;
    int num1 = (rand() % 12) + 1;
    int num2 = (rand() % 12) + 1;
    int answer;
    answer = num1 * num2;
    return_me.a = num1;
    return_me.b = num2;
    return_me.c = answer;
    return return_me;
}

int main()
{
    srand(time(NULL));
    three_values var = randNum();

    std::cout << "num_1 = " << var.a << ", " << "num_2 = " << var.b << std::endl;
    std::cout << var.a << "*" << var.b << " = " << var.c << std::endl;
}

Возможный вывод:

num_1 = 6, num_2 = 7                                                         
6*7 = 42  
1 голос
/ 21 июня 2020

Объявлено, что ваша функция возвращает void, в C ++ это означает, что она ничего не возвращает. Сначала вам нужно изменить тип возвращаемого значения сигнатуры функции на тип, который вы планировали вернуть (например, int).

Кроме того, как уже написано - в C ++ вы не можете возвращать несколько переменных, как в Python. Вы можете передавать значения через ссылки или указатели в параметре функции или через возврат структуры, содержащей все эти значения.

0 голосов
/ 21 июня 2020

посмотрите свой код! вы пытаетесь вернуть значение из функции void и возвращаете несколько значений. Это совершенно неверно. Вместо Void randNum () вы должны использовать int randNum () . И возвращать только ответ.

это правильный код >>

#include <iostream>
#include <ctime>
using namespace std;


int randNum()
{
    int num1 = (rand() % 12) + 1;
    int num2 = (rand() % 12) + 1;
    int answer;
    answer = num1 * num2;

    return answer;
}
int main()
{
    srand(time(NULL));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...