Qual é o valor de retorno se não retornarmos algo de uma função digitada com retorno não nulo em c ++? [Experimental] [duplicado]
Esta pergunta já tem uma resposta aqui:
Por que sair do final de uma função não nula sem retornar um valor não produz um erro do compilador? 8 respostasObservei que, se eu não retornar nenhum valor de uma função vazia com umint
tipo de retorno é1
. Mas no caso abaixo está mostrando4 3 2
como o / p (este é o valor da variável estáticasi
sendo impresso aqui? se eu imprimirsi
Receberei o / p como 2 3 4, no reverso do que recebo agora. existe algo a ver com a pilha da função push e pop aqui neste caso?). Também observei que se eu usar float como tipo de retorno, ele imprimiránan nan nan
como o / p. Esse compilador de comportamento depende (tentei com o gcc e o devcpp, observei o mesmo)? O que realmente está acontecendo aqui? Por favor, compartilhe seus pensamentos sobre isso.
#include<iostream>
using namespace std;
int f(int i){
static int si = i;
si = si + i;
///return si;
}
int main(){
cout<<f(1)<<" "<<f(1)<<" "<<f(1);
//cout<<" "<<f(1); //if I uncomment this line then the o/p is: 4 3 2 5, it looks like it's printing the value of si.
}
Parece que o comportamento decout
causando a impressão reversa da variável estáticasi
valor?