Что такое возвращаемое значение, если мы не возвращаем ничего из не возвращаемой 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
ценность?