0
why this output is 339 ??? #include<iostream> using namespace std; int x(int &a,int &b) { a=1; b=3; return a*b; } int main() { int a=3; int b=4; int c=x(b,b); cout<<a<<b<<c; }
3 Answers
+ 2
int x(int &a,int &b)
This function takes references as arguments, which means it can directly modify the content of the variables.
So by passing b twice to it, here is what happens.
local a and b inside the function are references to the global b
a=1; // global b is set to 1
b=3; // global b is set to 3 (the previous line did nothing here)
return a*b; // return (global b)*(global b) = 9
And the global b still holds 3 after the call since the value was directly modified.
cout<<a<<b<<c thus prints 339.
(Of course, when I say global b, I mean the b in the scope of main. It's not an actual global variable.)
+ 1
when you call the function x you are reassigning the value of b so after calling function b becomes 3 hence answer is 339
0
thanks Zen