Pages

Thursday

C Aptitude Questions with Answers Part 5

21.
   #define square(x) x*x 
main() 
{ 
int i; 
i = 64/square(4); 
printf("%d",i); 
} 

Answer:
64
Explanation:
the macro call square(4) will substituted by 4*4 so the expression becomes i = 64/4*4 . Since / and * has equal priority the expression will be evaluated as (64/4)*4 i.e. 16*4 = 64

22.
   main() {
char *p="hai friends",*p1; 
p1=p; 
while(*p!='\0') ++*p++; 
printf("%s   %s",p,p1); 
} 

Answer:
ibj!gsjfoet
Explanation:
++*p++ will be parse in the given order
*p that is value at the location currently pointed by p will be taken
++*p the retrieved value will be incremented
when ; is encountered the location will be incremented that is p++ will be executed
Hence, in the while loop initial value pointed by p is ‘h’, which is changed to ‘i’ by executing ++*p and pointer moves to point, ‘a’ which is similarly changed to ‘b’ and so on. Similarly blank space is converted to ‘!’. Thus, we obtain value in p becomes “ibj!gsjfoet” and since p reaches ‘\0’ and p1 points to p thus p1doesnot print anything.

23.
  #include <stdio.h> 
#define a 10 
main() 
{ 
#define a 50 
printf("%d",a); 
} 

Answer:
50 
Explanation:
The preprocessor directives can be redefined anywhere in the program. So  the most recently assigned value will be taken.

24.
   #define clrscr() 100 
main() 
{ 
clrscr(); 
printf("%d\n",clrscr()); 
} 


Answer: 
100 
Explanation: 
Preprocessor  executes  as  a  seperate  pass  before  the  execution  of  the 
compiler.  So  textual  replacement  of  clrscr()  to  100  occurs.The  input    program  to  compiler 
looks like this : 
    main() 
    { 
         100; 
         printf("%d\n",100); 
    } 

100; is an executable statement but with no action. So it doesn't give any problem 

25.
   main() 
{ 
   printf("%p",main);
}

Answer: 
Some address will be printed.
Explanation:
Function names are just addresses (just like array names are addresses).
main() is also a function. So the address of function main will be printed. %p in printf specifies
that the argument is an address. They are printed as hexadecimal numbers.

No comments:

Post a Comment