Что такое возвращаемое значение, если мы не возвращаем ничего из не возвращаемой void функции с типом возврата в c ++? [Experimental] [duplicate]

На этот вопрос уже есть ответ здесь:

Почему выпадение из конца непустой функции без возврата значения не приводит к ошибке компилятора? 8 ответов

Я заметил, что если я не верну какое-либо значение из пустой функции сint тип возврата1, Но в приведенном ниже случае это показывает4 3 2 как о / п (это значение статической переменнойsi печататься здесь? если я распечатаюsi Я получу o / p как 2 3 4, в противоположность тому, что я получаю сейчас. в этом случае что-то делать со стеком функции push и pop здесь?). Также я заметил, что если я использую float в качестве типа возврата, то он печатаетnan nan nan как о / п. Зависит ли это поведение компилятора (я пробовал и с gcc, и с devcpp, наблюдал то же самое)? Что на самом деле здесь происходит? Пожалуйста, поделитесь своими мыслями по этому поводу.

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

Похоже, поведениеcout вызывая обратную печать статической переменнойsiценность?

Ответы на вопрос(1)

Ваш ответ на вопрос