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;

}

 

Choose the correct answer:
A) 12
B) 15
C) 13
D) 11
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
Feedback