Pages

Thursday

C Aptitude Questions with Answers Part 27

1)
1. const char *a;
2. char* const a;
3. char const *a;
-Differentiate the above declarations.

Answer:
1. 'const' applies to char * rather than 'a' ( pointer to a constant char )
*a='F' : illegal
a="Hi" : legal

2. 'const' applies to 'a' rather than to the value of a (constant pointer to char )
*a='F' : legal
a="Hi" : illegal

3. Same as 1.

2)
main(){
  int i=5,j=10; 
  i=i&=j&&10; 
  printf("%d %d",i,j); 
} 
 

Answer:
1 10
Explanation:
The expression can be written as i=(i&=(j&&10)); The inner expression (j&&10) evaluates to 1 because j==10. i is 5. i = 5&1 is 1. Hence the result.

3)
main() {
  int i=4,j=7; 
  j = j || i++ && printf("YOU CAN"); 
  printf("%d %d", i, j); 
} 

Answer:
4 1
Explanation:
The boolean expression needs to be evaluated only till the truth value of the expression is not known. j is not equal to zero itself means that the expression’s truth value is 1. Because it is followed by || and true || (anything) => true where (anything) will not be evaluated. So the remaining expression
is not evaluated and so the value of i remains the same. Similarly when && operator is involved in an expression, when any of the operands become false, the whole expression’s truth value becomes false
and hence the remaining expression will not be evaluated. false && (anything) => false where (anything) will not be evaluated.

4)
main() {
  register int a=2; 
  printf("Address of a = %d",&a); 
  printf("Value of a   = %d",a); 
}

Answer:
Compier Error: '&' on register variable

& (address of ) operator cannot be applied on register variables.

5)
main() {
    float i=1.5; 
  switch(i) {
    case 1: printf("1"); 
    case 2: printf("2"); 
    default : printf("0"); 
  } 
} 

Answer:
Compiler Error: switch expression not integral
Explanation:
Switch statements can be applied only to integral types.

No comments:

Post a Comment