#include <stdio.h> #define PRINT(i, limit) do \ { \
if (i++ < limit) \
{ \
printf ( "GeeksQuiz\n" ); \
continue ; \
} \
} while (1)
int main()
{ PRINT(0, 3);
return 0;
} |
How many times GeeksQuiz is printed in the above program?
(A) 1
(B) 3
(C) 4
(D) Compile-time error
Answer: (D)
Explanation: The PRINT macro gets expanded at the pre-processor time i.e. before the compilation time. After the macro expansion, the if expression becomes: if (0++ < 3). Since 0 is a constant figure and represents only r-value, applying increment operator gives compile-time error: lvalue required. lvalue means a memory location with some address.