What will be output if you will compile and execute the following c code?
#define x 5+2
void main(){
int i;
i=x*x*x;
printf("%d",i);
}
(A) 343
(B) 27
(C) 133
(D) Compiler error
(E) None of above
________________________________________
Explanation:
As we know #define is token pasting preprocessor it only paste the value of micro constant in the program before the actual compilation start. If you will see intermediate file you will find:
test.c 1:
test.c 2: void main(){
test.c 3: int i;
test.c 4: i=5+2*5+2*5+2;
test.c 5: printf("%d",i);
test.c 6: }
test.c 7:
You can absorb #define only pastes the 5+2 in place of x in program. So,
i=5+2*5+2*5+2
=5+10+10+2
=27
No comments:
Post a Comment