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 respostas

Observei 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áticasivalor?

questionAnswers(1)

yourAnswerToTheQuestion