Why this code is printing '0'? Shouldn't it print '20' as reference to local variable 'x' is being returned?
#include<iostream>
using namespace std;
int &fun()
{
    int x = 20;
    return x;
}
int main()
{
    cout << fun();
    return 0;
}
Why this code is printing '0'? Shouldn't it print '20' as reference to local variable 'x' is being returned?
#include<iostream>
using namespace std;
int &fun()
{
    int x = 20;
    return x;
}
int main()
{
    cout << fun();
    return 0;
}
The program has undefined beahaviour because it returns a reference to a local object that in general will be destroyed after exiting the function.
A correct function implementation can look like for example
int & fun()
{
    static int x = 20;
    return x;
}
or
int & fun( int &x )
{
    x = 20;
    return x;
}
