2009-12-10 3 views

Répondre

0

Une fonction ou un procédé C++ peut renvoyer une valeur bool comme true ou false. Un programme (c'est-à-dire la fonction main) doit renvoyer une valeur int, par exemple 0 pour signaler le 'succès'.

+0

ok donc le résultat du principal obtiennent le même comportement que le shell :-) Merci – AskMan

+0

Oui le résultat de main * est * la valeur qui sera vue par le shell. – ChrisW

+0

@Chris - la valeur vue par le shell est influencée par ce qui est retourné par 'main'. Ils ne sont pas nécessairement la même valeur cependant. Essayez de retourner 1024 et vous aurez probablement zéro dans le shell! –

5

En C++, il est courant d'utiliser boolean return pour indiquer true pour le succès et false pour l'échec.

Il est également courant d'utiliser une valeur de retour entière où zéro indique le succès et non nul pour indiquer un échec ou toute autre condition (souvent les nombres négatifs peuvent indiquer des erreurs, tandis que positifs indiquent un autre résultat). Quelle que soit l'approche choisie, l'important est de la documenter et de la rendre cohérente dans la base de code.

+1

Il existe une autre convention dans laquelle zéro est faux et non nul est vrai. –

0

Les fonctions C standard qui renvoient un nombre entier reviennent généralement supérieures ou égales à zéro pour la réussite et -1 pour l'échec. Lorsque -1 est renvoyé, errno est généralement défini pour fournir une erreur plus spécifique. Zéro indique un succès générique où les nombres supérieurs à zéro sont considérés comme réussis et fournissent des détails supplémentaires.

Considérons quelque chose comme recvfrom(). Une valeur de retour de -1 indique un échec total avec errno défini sur un code détaillé. Une valeur de retour de zéro signifie que le socket a été arrêté de manière ordonnée et que les appels supplémentaires ne retourneront pas de données. Une valeur de retour supérieure à zéro signifie que les données ont été reçues et le nombre d'octets reçus est ce qui a été renvoyé.

2

En C et sa bibliothèque d'exécution 0 signifie succès (parfois l'erreur d'interrogation est requise).

En C++ monde est plus coloré:

  • bool pour le succès/échec
  • énumération s'il y a plus d'états
  • exceptions pour ... bien des cas exceptionnels et construction/destruction objet; parfois ils ne sont pas disponibles ou autorisés (principalement des plates-formes intégrées, parfois des jeux pour maximiser les performances)

NE PAS mélanger la convention d'utilisation booléenne et "0", le résultat est simplement un code prêtant à confusion (voir l'exemple). Si vous avez besoin de plusieurs valeurs, utilisez une énumération, un paramètre de retour supplémentaire ou une exception selon la situation.

introduit bool et la confusion de code '0':

// sorry for abuse of "C" for educational purposes 
bool isSame(s1,s2) { return s1==s2; } 
int isSame2(s1, s2) { return strcmp(s1.cstr(), s2.cstr()); } 

if (isSame(..) && !isSame2(..)) ... 
0

Je comprends que vous soyez poser deux questions:

  • comment voulez-vous retourner l'état du programme en C++
  • comment effectuer des fonctions de retour état en C++

Les réponses de base sont les suivantes.

En général, le programme (programme principal()) renvoie 0 pour le succès, et d'autres valeurs - erreurs - pour l'échec

Si une fonction peut réussir ou d'échouer, il est, en général, typée comme bool et retourne true ou false.

Si une fonction peut renvoyer des valeurs multiples, il sera, en général, le retour int ou ENUM valeurs. Essayez de lancer des exceptions pour les cas exceptionnels.

Questions connexes