Saturday 13 April 2013

#define



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