Skip to content
Related Articles

Related Articles

C | Macro & Preprocessor | Question 1
  • Difficulty Level : Hard
  • Last Updated : 12 Jan, 2013




#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.

Attention reader! Don’t stop learning now. Get hold of all the important C++ Foundation and STL concepts with the C++ Foundation and STL courses at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :