This is a continuation of last post.
Before seeing the answer try to predict it & then see the explanation.
All the Best!!
6. main()
{
extern int i;
i=20;
printf("%d",i);
}
7. main()
{
int i=-1,j=-1,k=0,l=2,m;
m=i++&&j++&&k++||l++;
printf("%d %d %d %d %d",i,j,k,l,m);
}
8. main()
{
char *p;
printf("%d %d ",sizeof(*p),sizeof(p));
}
9. main()
{
int i=3;
switch(i)
{
default:printf("zero");
case 1: printf("one");
break;
case 2:printf("two");
break;
case 3: printf("three");
break;
}
}
10. main()
{
printf("%x",-1<<4);
}
=======================================================
6.
Answer:
Linker Error : Undefined symbol '_i'
Explanation:
extern storage class in the following declaration,
extern int i;
specifies to the compiler that the memory for i is allocated in some other program and that
address will be given to the current program at the time of linking. But linker finds that no
other variable of name i is available in any other program with memory space allocated for it.
Hence a linker error has occurred .
7.
Answer:
0 0 1 3 1
Explanation :
Logical operations always give a result of 1 or 0 . And also the logical AND
(&&) operator has higher priority over the logical OR (||) operator. So the expression ‘i++ &&
j++ && k++’ is executed first. The result of this expression is 0 (-1 && -1 && 0 = 0). Now the
expression is 0 || 2 which evaluates to 1 (because OR operator always gives 1 except for ‘0 ||
0’ combination- for which it gives 0). So the value of m is 1. The values of other variables are
also incremented by 1.
8.
Answer:
1 2
Explanation:
The sizeof() operator gives the number of bytes taken by its operand. P is a
character pointer, which needs one byte for storing its value (a character). Hence sizeof(*p)
gives a value of 1. Since it needs two bytes to store the address of the character pointer
sizeof(p) gives 2.
9.
Answer :
three
Explanation :
The default case can be placed anywhere inside the loop. It is executed only
when all other cases doesn't match.
10.
Answer:
fff0
Explanation :
-1 is internally represented as all 1's. When left shifted four times the least
significant 4 bits are filled with 0's.The %x format specifier specifies that the integer value be
printed as a hexadecimal value.
... to be continued !!
=======================================================
Thanks for coming till this point!!
VSG
SQL DBA
Before seeing the answer try to predict it & then see the explanation.
All the Best!!
6. main()
{
extern int i;
i=20;
printf("%d",i);
}
7. main()
{
int i=-1,j=-1,k=0,l=2,m;
m=i++&&j++&&k++||l++;
printf("%d %d %d %d %d",i,j,k,l,m);
}
8. main()
{
char *p;
printf("%d %d ",sizeof(*p),sizeof(p));
}
9. main()
{
int i=3;
switch(i)
{
default:printf("zero");
case 1: printf("one");
break;
case 2:printf("two");
break;
case 3: printf("three");
break;
}
}
10. main()
{
printf("%x",-1<<4);
}
=======================================================
6.
Answer:
Linker Error : Undefined symbol '_i'
Explanation:
extern storage class in the following declaration,
extern int i;
specifies to the compiler that the memory for i is allocated in some other program and that
address will be given to the current program at the time of linking. But linker finds that no
other variable of name i is available in any other program with memory space allocated for it.
Hence a linker error has occurred .
7.
Answer:
0 0 1 3 1
Explanation :
Logical operations always give a result of 1 or 0 . And also the logical AND
(&&) operator has higher priority over the logical OR (||) operator. So the expression ‘i++ &&
j++ && k++’ is executed first. The result of this expression is 0 (-1 && -1 && 0 = 0). Now the
expression is 0 || 2 which evaluates to 1 (because OR operator always gives 1 except for ‘0 ||
0’ combination- for which it gives 0). So the value of m is 1. The values of other variables are
also incremented by 1.
8.
Answer:
1 2
Explanation:
The sizeof() operator gives the number of bytes taken by its operand. P is a
character pointer, which needs one byte for storing its value (a character). Hence sizeof(*p)
gives a value of 1. Since it needs two bytes to store the address of the character pointer
sizeof(p) gives 2.
9.
Answer :
three
Explanation :
The default case can be placed anywhere inside the loop. It is executed only
when all other cases doesn't match.
10.
Answer:
fff0
Explanation :
-1 is internally represented as all 1's. When left shifted four times the least
significant 4 bits are filled with 0's.The %x format specifier specifies that the integer value be
printed as a hexadecimal value.
... to be continued !!
=======================================================
Thanks for coming till this point!!
VSG
SQL DBA
No comments:
Post a Comment