C | Macro & Preprocessor | Question 6
#include <stdio.h> #define square(x) x*x int main() { int x; x = 36/square(6); printf ( "%d" , x); return 0; } |
(A) 1
(B) 36
(C) 0
(D) Compiler Error
Answer: (B)
Explanation: Preprocessor replaces square(6) by 6*6 and the expression becomes x = 36/6*6 and value of x is calculated as 36. Note that the macro will also fail for expressions “x = square(6-2)”
If we want correct behavior from macro square(x), we should declare the macro as
#define square(x) ((x)*(x))
Please Login to comment...