Déclaration de retour (C)

  • 06/10/2020
  • 4 minutes à lire
    • c
  • n
  • c
  • n
  • iv je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je n’ai pas de problème avec le fait que je ne suis pas en mesure de le faire. met fin à l’exécution d’une fonction et renvoie le contrôle à la fonction appelante. L’exécution reprend dans la fonction appelante au point immédiatement après l’appel. Une instruction return peut renvoyer une valeur à la fonction appelante. Pour plus d’informations, consultez Type de retour.

    Syntaxe

    jump-statement:
    returnexpressionopt ;

    La valeur de l’expression, si elle est présente, est renvoyée à la fonction appelante. Si expression est omise, la valeur de retour de la fonction n’est pas définie. L’expression, si elle est présente, est évaluée puis convertie en type renvoyé par la fonction. Lorsqu’une instruction return contient une expression dans des fonctions qui ont un type de retour void, le compilateur génère un avertissement et l’expression n’est pas évaluée.

    Si aucune instruction return n’apparaît dans une définition de fonction, le contrôle revient automatiquement à la fonction appelante après l’exécution de la dernière instruction de la fonction appelée. Dans ce cas, la valeur de retour de la fonction appelée n’est pas définie. Si la fonction a un type de retour autre que void, c’est un bogue grave et le compilateur imprime un message de diagnostic d’avertissement. Si la fonction a un type de retour void, ce comportement est correct, mais peut être considéré comme un style médiocre. Utilisez une instruction return simple pour clarifier votre intention.

    En tant que bonne pratique d’ingénierie, spécifiez toujours un type de retour pour vos fonctions. Si une valeur de retour n’est pas requise, déclarez que la fonction a le type de retour void. Si aucun type de retour n’est spécifié, le compilateur C suppose un type de retour par défaut de int.

    De nombreux programmeurs utilisent des parenthèses pour enfermer l’argument d’expression de l’instruction return. Cependant, C ne nécessite pas les parenthèses.

    Le compilateur peut émettre un message de diagnostic d’avertissement concernant le code inaccessible s’il trouve des instructions placées après l’instruction return.

    Dans une fonction main, l’instruction et l’expression return sont facultatives. Ce qui arrive à la valeur renvoyée, si une valeur est spécifiée, dépend de l’implémentation. Spécifique à Microsoft : L’implémentation Microsoft C renvoie la valeur d’expression au processus qui a appelé le programme, tel que cmd.exe. Si aucune expression return n’est fournie, le runtime Microsoft C renvoie une valeur indiquant le succès (0) ou l’échec (une valeur non nulle).

    Exemple

    Cet exemple est un programme en plusieurs parties. Il montre l’instruction return, et comment elle est utilisée à la fois pour terminer l’exécution de la fonction et, éventuellement, pour renvoyer une valeur.

    // C_return_statement.c// Compile using: cl /W4 C_return_statement.c#include <limits.h> // for INT_MAX#include <stdio.h> // for printflong long square( int value ){ // Cast one operand to long long to force the // expression to be evaluated as type long long. // Note that parentheses around the return expression // are allowed, but not required here. return ( value * (long long) value );}

    La fonction square renvoie le carré de son argument, dans un type plus large pour éviter une erreur arithmétique. Spécifique à Microsoft : Dans l’implémentation Microsoft C, le type long long est suffisamment grand pour contenir le produit de deux valeurs int sans débordement.

    Les parenthèses autour de l’expression return dans square sont évaluées dans le cadre de l’expression et ne sont pas requises par l’instruction return.

    double ratio( int numerator, int denominator ){ // Cast one operand to double to force floating-point // division. Otherwise, integer division is used, // then the result is converted to the return type. return numerator / (double) denominator;}

    La fonction ratio renvoie le rapport de ses deux arguments int sous forme de valeur double à virgule flottante. L’expression return est forcée d’utiliser une opération à virgule flottante en convertissant l’un des opérandes en double. Sinon, l’opérateur de division entière serait utilisé et la partie fractionnaire serait perdue.

    void report_square( void ){ int value = INT_MAX; long long squared = 0LL; squared = square( value ); printf( "value = %d, squared = %lld\n", value, squared ); return; // Use an empty expression to return void.}

    La fonction report_square appelle square avec une valeur de paramètre de INT_MAX, la plus grande valeur entière signée qui tient dans un int. Le résultat long long est stocké dans squared, puis imprimé. La fonction report_square a un type de retour void, elle n’a donc pas d’expression dans son instruction return.

    void report_ratio( int top, int bottom ){ double fraction = ratio( top, bottom ); printf( "%d / %d = %.16f\n", top, bottom, fraction ); // It's okay to have no return statement for functions // that have void return types.}

    La fonction report_ratio appelle ratio avec des valeurs de paramètres de 1 et INT_MAX . Le résultat double est stocké dans fraction, puis imprimé. La fonction report_ratio a un type de retour void, elle n’a donc pas besoin de renvoyer explicitement une valeur. L’exécution de report_ratio « tombe du bas » et ne renvoie aucune valeur à l’appelant.

    int main(){ int n = 1; int x = INT_MAX; report_square(); report_ratio( n, x ); return 0;}

    La fonction main appelle deux fonctions : report_square et report_ratio. Comme report_square ne prend aucun paramètre et renvoie void, nous n’affectons pas son résultat à une variable. De même, report_ratio renvoie void, nous n’enregistrons donc pas non plus sa valeur de retour. Après chacun de ces appels de fonction, l’exécution se poursuit à l’instruction suivante. Ensuite, main renvoie une valeur de 0 (généralement utilisée pour signaler le succès) pour terminer le programme.

    Pour compiler l’exemple, créez un fichier de code source nommé C_return_statement.c. Ensuite, copiez tout l’exemple de code, dans l’ordre indiqué. Enregistrez le fichier et compilez-le dans une fenêtre d’invite de commande de développeur en utilisant la commande :

    cl /W4 C_return_statement.c

    Puis, pour exécuter l’exemple de code, entrez C_return_statement.exe à l’invite de commande. La sortie de l’exemple ressemble à ceci :

Related Posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *