Instrução de retorno (C)

  • 06/10/2020
  • 4 minutos para ler
    • c
    • n
    • M
    • g
    • S

Uma return instrução termina a execução da função e retorna o controle para a função chamada. A execução recomeça na função de chamada no ponto imediatamente após a chamada. Uma declaração return pode devolver um valor à função de chamada. Para mais informações, consulte o tipo Return.

Sintaxe

ir-declaração:
return expressionopt ;

O valor da expressão, se presente, é retornado para a função chamadora. Se a expressão for omitida, o valor de retorno da função é indefinido. A expressão, se presente, é avaliada e então convertida para o tipo retornado pela função. Quando uma return instrução contém uma expressão em funções que tem um void tipo de retorno, o compilador gera um aviso, e a expressão não é avaliada.

If no return statement appears in a function definition, control automatically returns to the calling function after the last statement of the called function is executed. Neste caso, o valor de retorno da função chamada é indefinido. Se a função tem um tipo de retorno diferente de void, é um erro grave, e o compilador imprime uma mensagem de diagnóstico de aviso. Se a função tem um tipo de retornovoid, este comportamento é bom, mas pode ser considerado um estilo pobre. Use uma simples return declaração para deixar a sua intenção clara.

Como uma boa prática de engenharia, especifique sempre um tipo de retorno para suas funções. Se não for necessário um valor de retorno, declare que a função tem void tipo de retorno. Se um tipo de retorno não for especificado, o compilador C assume um tipo de retorno padrão de int.

muitos programadores usam parênteses para incluir o argumento de expressão do return afirmação. No entanto, C não requer os parênteses.

O compilador pode emitir uma mensagem de diagnóstico de Aviso sobre o código inacessível se encontrar quaisquer declarações colocadas após a declaração return.

In amain function, thereturn statement and expression are optional. O que acontece com o valor devolvido, se for especificado, depende da implementação. Microsoft-specific: the Microsoft C implementation returns the expression value to the process that invocated the program, such as cmd.exe. Se não for indicada a expressão return, a execução Microsoft C devolve um valor que indica sucesso (0) ou falha (um valor não-zero).

exemplo

este exemplo é um programa em várias partes. Ele demonstra oreturn, e como ele é usado tanto para terminar a execução da função, e opcionalmente, para retornar um valor.

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

o square função devolve o quadrado do seu argumento, num tipo mais amplo para evitar um erro aritmético. Microsoft-specific: In the Microsoft C implementation, the long long type is large enough to hold the product of two int values without overflow.

Os parênteses em torno return expressão square são avaliados como parte da expressão, e não são necessários por return instrução.

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

ratio retorna a relação de seus dois int argumentos como um ponto flutuante double valor. The return expression is forced to use a floating-point operation by casting one of the operands to double. Caso contrário, o operador da divisão inteira seria usado, e a parte fracionária seria perdida.

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.}

report_square chamadas de função square com um valor de parâmetro de INT_MAX, o maior valor inteiro que se encaixa em um int. The long long result is stored in squared, then printed. The report_square function has avoid return type, so it doesn’t have an expression in itsreturn statement.

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.}

report_ratio chamadas de função ratio com o parâmetro valores de 1 e INT_MAX. The double result is stored in fraction, then printed. The report_ratio function has avoid return type, so it doesn’t need to explicitly return a value. Execução de report_ratio “cai do fundo” e não devolve nenhum valor à pessoa que ligou.

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

main chamadas de função de duas funções: report_square e report_ratio. Como report_square não toma parâmetros e devolve void, não atribuímos o seu resultado a uma variável. Da mesma forma, report_ratio devolve void, por isso também não guardamos o seu valor de retorno. Após cada uma destas chamadas de função, a execução continua na próxima declaração. Then mainreturns a value of0 (typically used to report success) to end the program.

para compilar o exemplo, crie um ficheiro de código-fonte chamado C_return_statement.c. Em seguida, copie todo o código de exemplo, na ordem mostrada. Salve o arquivo, e compilá-lo em um Desenvolvedor janela de prompt de comando usando o comando:

cl /W4 C_return_statement.c

em Seguida, executar o código de exemplo, digite C_return_statement.exe no prompt de comando. O resultado do exemplo se parece com este:

Related Posts

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *