Funções C e C ++ sem uma declaração de retorno [duplicado]
Esta pergunta já tem uma resposta aqui:
Por que esse trecho de C ++ é compilado (a função non-void não retorna um valor) [duplicado] 7 respostasAo examinar o código no trabalho, encontrei um código (aparentemente) ofensivo no qual uma função tinha um tipo de retorno, mas sem retorno. Eu sabia que o código funcionava, mas assumi que era apenas um bug no compilador.
Escrevi o seguinte teste e executei-o usando meu compilador(gcc (Homebrew gcc 5.2.0) 5.2.0)
#include <stdio.h>
int f(int a, int b) {
int c = a + b;
}
int main() {
int x = 5, y = 6;
printf("f(%d,%d) is %d\n", x, y, f(x,y)); // f(5,6) is 11
return 0;
}
Análogo ao código que encontrei no trabalho, esse padrão é retornar o resultado da última expressão executada na função.
eu encontreiesta pergunta, mas não estava satisfeito com a resposta. Eu sei que com-Wall -Werror
esse comportamento pode ser evitado, mas por que é uma opção? Por que é issoainda permitido?