Sail E0 Webinar
Question


What will be the output of the program?


#include<stdio.h>
int main()
{
int x, y, z;
x=y=z=1;
z = ++x || ++y && ++z;
printf("x=%d, y=%d, z=%d\n", x, y, z);
return 0;
}
Options:
A .  x=2, y=1, z=1
B .  x=2, y=2, z=1
C .  x=2, y=2, z=2
D .  x=1, y=2, z=1
Answer: Option A

Step 1: x=y=z=1; here the variables x ,y, z are initialized to value '1'.

Step 2: z = ++x || ++y && ++z; becomes z = ( (++x) || (++y && ++z) ). Here ++x

becomes 2. So there is no need to check the other side because ||(Logical OR) condition is 

satisfied.(z = (2 || ++y && ++z)). There is no need to process ++y && ++z. Hence it returns

 '1'. So the value of variable z is '1'

Step 3: printf("x=%d, y=%d, z=%d`setminus`n", x, y, z); It prints "x=2, y=1, z=1". here x is increemented

 in previous step. y and z are not increemented.




Was this answer helpful ?
Next Question

Submit Solution

Your email address will not be published. Required fields are marked *

Latest Videos

Latest Test Papers