-1
votes

C ++ Type de valeur de retour (Entier) ne correspond pas au type de la fonction

#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));
}
I get the error return value type does not match the function type.  Answer is an integer but it won't return regardless.

3 commentaires

Regardez le type de retour de votre fonction ( void ). Est-ce que cela correspond à ce que vous retournez? En outre, ce n'est pas la manière dont vous retournez plusieurs valeurs d'une fonction C. Vous devez soit transmettre les valeurs comme des arguments d'entrée d'entrée / sortie par adresse ou renvoyer une structure définie pour contenir les valeurs en question. Ce code ne fait ni. Réponse de retour, num1, num2; est finalement retour num2; qui est très probable pas ce que vous vouliez.


Connexes: Stackoverflow.com/a/321080/509868


En raison du nombre de questions comme celle-ci, je considère que je considère qu'il doit exister un une émission-programmation-la-programmation-réutilisation SOIN SO avec une description "La question a été posée en raison d'une hypothèse non cochée et incorrecte Cette syntaxe du langage de programmation X fonctionnera exactement de la même manière dans un langage de programmation complètement différent Y. " - Dans ce cas, le X est Python et Y est C ++.


3 Réponses :


2
votes

Vous ne pouvez pas retourner 3 choses. Vous pouvez l'envelopper dans une structure si vous le souhaitez. Et rendre votre fonction renvoie la structure au lieu de vide. Dans Main, appelez votre fonction xxx

sortie possible: xxx


3 commentaires

Vous mélangez C et C ++ ici. Après avoir défini le type type trois_values ​​, le mot clé struct n'est pas nécessaire pour l'utiliser. Et, de la sorte, de cela est considéré comme une pratique assez médiocre en C ++, même s'il est techniquement autorisé en raison de la compatibilité rédaction avec C.


Au risque de semblant complètement immodéré, je sais.


Eh bien, vous n'avez pas vraiment besoin de définir une structure dans ce cas. Peut très bien utiliser C ++ 11's's std :: tuple < / a>, comme c'est ce que c'est là pour.



1
votes

Votre fonction est déclarée pour renvoyer le vide, en C ++, cela signifie que cela ne renvoie rien. Vous devez d'abord modifier le type de retour de signature de fonction au type que vous avez prévu de revenir (par exemple. int).

En outre, comme écrit déjà - en C ++, vous ne pouvez pas retourner plusieurs variables comme vous faites à Python. Vous pouvez transmettre des valeurs de retour via des références ou des pointeurs dans le paramètre de la fonction ou via un retour d'une structure contenant toutes ces valeurs.


0 commentaires

0
votes

Regardez votre code! Vous essayez de retourner une valeur d'une fonction forte> Void forte> et de retourner plusieurs valeurs. C'est totalement faux. Plutôt void randnum () fort> Vous devez utiliser int randnum () strong> em>. Et renvoyer uniquement la réponse.

Ceci est CODE CODE >> P>

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


0 commentaires