1. What will be the output of the program? #include<stdio.h> #define MAN(x, y) ((x)>(y)) ? (x):(y); int main() { int i=10, j=5, k=0; k = MAN(++i, j++); printf("%d, %d, %d\n", i, j, k); return 0; }
Ask Your Doubts Here
Comments
By: guest on 01 Jun 2017 06.00 pm
The macro MAN(x, y) ((x)>(y)) ? (x):(y); returns the biggest number of given two numbers. Step 1: int i=10, j=5, k=0; The variable i, j, k are declared as an integer type and initialized to value 10, 5, 0 respectively. Step 2: k = MAN(++i, j++); becomes, => k = ((++i)>(j++)) ? (++i):(j++); => k = ((11)>(5)) ? (12):(6); => k = 12 Step 3: printf("%d, %d, %d\n", i, j, k); It prints the variable i, j, k. In the above macro step 2 the variable i value is increemented by 2 and variable j value is increemented by 1. Hence the output of the program is 12, 6, 12