Answer will be 5, 10
and 5 , 10
At first of the C program when main will call , value of a will declare as 5 and value of b will be 10 and will print it for first time
Now, function make_it will call and passes the value b,a,a+b
as value of x,y,z.
So, x=10 , y=5 , z=15
But here variable passed as call by value (not call by reference). So, x=x*(y+z)
will be equal to 200
Next is a shift operation
There are two shift operation
Left Shift(<<)
and right shift(>>)
. Shift operation done bitwise.So, we need to convert the number in binary and then have to do shift operation
Value of x
is 200
, and it's binary is 11001000
and if we do left shift , it will be 10010000
, which is 144
And finally z=x+y=200+144=344
But all these changes are for local variables and for function make_it() itself. So, there is no change in main() function. And that is why it will print 5 and 10 again in 2nd printf statement