L'appel d'une fonction principale
Je suis en train d'apprendre C++ et j'ai un peu de code ici:
using namespace std;
int main()
{
cout<<"This program will calculate the weight of any mass on the moon\n";
double moon_g();
}
double moon_g (double a, double b)
{
cout<<"Enter the mass in kilograms. Use decimal point for any number entered";
cin>>a;
b=(17*9.8)/100;
double mg=a*b;
return mg;
}
Il compile, mais quand je le lance il ne s'imprime:
This program will calculate the weight of any mass on the moon
mais n'exécute pas la moon_g
fonction.
double possible de Le Définitif, C++ Guide du Livre et de la Liste
merci à tous pour votre aide!
donc, la seule façon d'appeler une fonction en c++, la fonction principale est avec cout<<certaines fonctions?
Non, bien sûr que non. La réponse ci-dessous démontre que. Quel livre êtes-vous d'utiliser? Avez-vous encore lu?
merci à tous pour votre aide!
donc, la seule façon d'appeler une fonction en c++, la fonction principale est avec cout<<certaines fonctions?
Non, bien sûr que non. La réponse ci-dessous démontre que. Quel livre êtes-vous d'utiliser? Avez-vous encore lu?
OriginalL'auteur user3150381 | 2014-01-04
Vous devez vous connecter pour publier un commentaire.
Cette ligne:
ne fait pas ne, ça c'est juste stipule qu'une fonction
double moon_g()
existe. Ce que vous voulez, c'est quelque chose comme ceci:Cela ne fonctionne pas encore, parce que vous n'avez pas de fonction
double moon_g()
, ce que vous avez est une fonctiondouble moon_g(double a, double b)
. Mais ces arguments ne sont pas vraiment utilisés pour n'importe quoi (bien, ils sont, mais il n'y a pas de raison de les avoir passées en tant que arguments). Afin de les éliminer de votre fonction comme ceci:(Et déclarer la fonction avant de l'appeler.) D'autres améliorations sont possibles, mais ce sera suffisant pour l'instant.
OriginalL'auteur Beta
C'est une déclaration de fonction:
cela ne peut pas appeler une fonction, et si vous ne l'avez correcte, ce qui signifie que l'ajout de deux paramètres étant donné que c'est la façon dont on définit ci-dessous:
il ne serait pas travailler parce que vous avez besoin soit de déplacer la définition de
moon_g
avantmain
ou ajouter une déclaration avantmain
comme ceci:Bien qu'il semble
a
etb
ne sont pas entrées, mais les valeurs que vous voulez retourner àmain
alors vous devez utiliser des références, et il aurait besoin d'être déclarée et définie comme ceci:Utile de fil à lire surtout si vous êtes débutant serait Quelle est la différence entre une définition et une déclaration?.
Le compilateur que vous utilisez fait une différence ici
clang
donne l'avertissement suivant:alors je ne peux pas obtenir
gcc
niVisual Studio
pour m'avertir à ce sujet. Il est utile dans le long terme, pour tenter de code dans différentes C++ compilateurs quand vous le pouvez, il peut être une expérience très pédagogique et vous n'avez pas à installer puisqu'il y a beaucoup de en ligne compilateurs C++ disponible en ligne.OriginalL'auteur Shafik Yaghmour
Il y a une grande différence entre l'appel d'une fonction et les déclarer comme il en existe une différence entre les variables locales et les arguments de la fonction.
Je suggère la lecture des tutoriels en premier.
De toute façon, c'est la façon dont le code devrait ressembler à:
Emplacement de main() n'a pas d'importance, emplacement de fonctions que vous appelez de main() questions. Le code source C++, les fichiers sont compilés "ligne par ligne", de sorte que vous devez d'abord déclarer au moins de l'en-tête de la fonction, avant vous pouvez l'appeler. Dans, par exemple, C# de tels détails n'ont pas d'importance car c'est la langue moderne, tandis que le C/C++ est toujours en conservant les anciennes limites de 4KO de ram qui pas le droit de lire tout le fichier en mémoire en une fois. (On pourrait dire que split .h et .le rpc est de rendre le code plus facile à lire, mais d'un autre côté avancé IDE de fournir des outils pour gérer du code)
cplusplus.com est souvent écrit à la hâte et non sur des faits vérifiés. Il n'est pas un wiki. Éviter de compter sur elle.
OriginalL'auteur PTwr
Il y a deux problèmes dans votre code.
Tout d'abord, si vous voulez appeler votre fonction
vous devez fournir les deux paramètres
a
etb
.Mais
a
etb
sont calculées dans le corps de définition de la fonction, il est inutile de déclarer les deux paramètres. Vous pouvez écrire comme cela.Ensuite, dans la fonction principale, votre fonction d'appel énoncé est faux. Vous pouvez recevoir la valeur de retour. Donc, vous devez écrire le code comme ceci.
Enfin, il est surtout recommandé que la fonction qui sera appelée par une autre fonction doit être déclarée ou définie précédemment.
Oh, mon erreur, vous devez déclarer le
a
etb
dans la définition du corps de la fonction au lieu de dans les arguments de la liste. J'ai modifier mon code de nouveau. désolé pour mon erreur.En outre,
double ret = moon_g()
,ret
va stocker la valeur de retour, calculés par moon_g();OriginalL'auteur Jeff