Saturday 7 January 2012

Frequently Asked Questions in Technical Round at MNCs like TCS, WIPRO, INFOSYS,..etc – 2

Predict the output or error(s) for the following:


1)

#include<stdio.h>

main()

{

  char s[]={'a','b','c','\n','c','\0'};


  char *p,*str,*str1;


  p=&s[3];


  str=p;


  str1=s;


  printf("%d",++*p + ++*str1-32);


}

Answer:

M


Explanation:

p is pointing to character '\n'.str1 is pointing to character 'a' ++*p meAnswer:"p is pointing to '\n' and that is incremented by one." the ASCII value of '\n' is 10. then it is incremented to 11. the value of ++*p is 11. ++*str1 meAnswer:"str1 is pointing to 'a' that is incremented by 1 and it becomes 'b'. ASCII value of 'b' is 98. both 11 and 98 is added and result is subtracted from 32.


i.e. (11+98-32)=77("M");


2)

main()

{

int i;


printf("%d",scanf("%d",&i));     // value 10 is given as input here


}

Answer:

1


Explanation:

Scanf returns number of items successfully read and not 1/0.  Here 10 is given as input which should have been scanned successfully. So number of items read is 1.


3)

#define f(g,g2) g##g2

main()

{

int var12=100;


printf("%d",f(var,12));


}

Answer:

100


4)

main()

{

int i=0;


 for(;i++;printf("%d",i)) ;


printf("%d",i);


}

Answer:

1


Explanation:

before entering into the for loop the checking condition is "evaluated". Here it evaluates to 0 (false) and comes out of the loop, and i is incremented (note the semicolon after the for loop).

No comments:

Post a Comment