C | Macro & Preprocessor | Question 1

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <stdio.h>
#define PRINT(i, limit) do \
                        { \
                            if (i++ < limit) \
                            { \
                                printf("GeeksQuiz\n"); \
                                continue; \
                            } \
                        }while(1)
  
int main()
{
    PRINT(0, 3);
    return 0;
}

chevron_right


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.



My Personal Notes arrow_drop_up