Pages

Friday

C Aptitude Questions with Answers Part 13

1)
main() {
   char *cptr,c; 
   void *vptr,v; 
   c=10;  v=0; 
   cptr=&c; vptr=&v; 
   printf("%c%v",c,v); 
} 

Answer:
Compiler error (at line number 4): size of v is Unknown.
Explanation:
You can create a variable of type void * but not of type void, since void is an empty type. In the second line you are creating variable vptr of type void * and v of type void hence an error.

2)
main() {
   char *str1="abcd"; 
   char str2[]="abcd"; 
   printf("%d %d %d",sizeof(str1),sizeof(str2),sizeof("abcd")); 
} 

Answer:
2 5 5
Explanation:
In first sizeof, str1 is a character pointer so it gives you the size of the pointer variable. In second sizeof the name str2 indicates the name of the array whose size is 5 (including the '\0' termination character). The third sizeof is similar to the second one.

3)
main() {
  char not; 
  not=!2; 
  printf("%d",not); 
} 

Answer:
0
Explanation:
! is a logical operator. In C the value 0 is considered to be the boolean value FALSE, and any non-zero value is considered to be the boolean value TRUE. Here 2 is a non-zero value so TRUE. !TRUE is FALSE (0) so it prints 0.

4)
#define FALSE -1 
#define TRUE   1 
#define NULL   0 
main() { 
   if(NULL) 
      puts("NULL"); 
   else if(FALSE) 
     puts("TRUE"); 
   else 
     puts("FALSE"); 
} 

Answer:
TRUE
Explanation:
The input program to the compiler after processing by the preprocessor is,

main(){ 
if(0) 
   puts("NULL"); 
else if(-1) 
   puts("TRUE"); 
else 
   puts("FALSE"); 
} 

Preprocessor doesn't replace the values given inside the double quotes. The check by if condition is boolean value false so it goes to else. In second if -1 is boolean value true hence "TRUE" is printed.

5)
main() {
   int k=1; 
   printf("%d==1 is ""%s",k,k==1?"TRUE":"FALSE");
} 

Answer:
1==1 is TRUE
Explanation:
When two strings are placed together (or separated by white-space) they are concatenated (this is called as "stringization" operation). So the string is as if it is given as "%d==1 is %s". The conditional operator( ?: ) evaluates to "TRUE".

No comments:

Post a Comment