Programming Languages
C
Objective
Mar 07, 2013
What will be output of following c code?
#include<stdio.h>
#define p(a,b) a##b
#define call(x) #x
int main(){
do{
int i=15,j=3;
printf("%d",p(i-+,+j));
}
while(*(call(625)+3));
return 0;
}
Detailed Explanation
First iteration:
p(i-+,+j)
=i-++j // a##b
=i - ++j
=15 – 4
= 11
While condition is : *(call(625)+ 3)
= *(“625” + 3)
Note: # preprocessor operator convert the operand into the string.
=*(It will return the memory address of character ‘\0’)
= ‘\0’
= 0 //ASCII value of character null character
Since loop condition is false so program control will come out of the for loop
Discussion (0)
No comments yet. Be the first to share your thoughts!
Share Your Thoughts