C Miscellaneous - Study Mode
[#41] What will be the output of the following C code? main()
{
unsigned a=10
long unsigned b=5l
printf(ā%lu%uā,a,b)
}
Correct Answer
(A) 105
[#42] What will be the error in the following C code? main()
{
long float a=-25.373e22
printf("%lf",a)
}
Correct Answer
(B) Long and float cannot be used together
[#43] Determine output: void main()
{
int const *p=5
printf("%d", ++(*p))
}
Correct Answer
(D) Compiler Error
Explanation
Solution: p is a pointer to a "constant integer". But we tried to change the value of the "constant integer".
[#44] Determine Output: void main()
{
char s[]="man"
int i
for(i=0
s[i]
i++)
printf("%c%c%c%c ", s[i], *(s+i), *(i+s), i[s])
}
Correct Answer
(D) None of These
Explanation
Solution: Correct Output : mmmm aaaa nnnn s[i], *(i+s), *(s+i), i[s] are all different ways of expressing the same idea. Generally array name is the base address for that array. Here s is the base address. i is the index number/displacement from the base address. So, indirecting it with * is same as s[i]. i[s] may be surprising. But in the case of C it is same as s[i].
[#45] Determine Output: void main()
{
float me = 1.1
double you = 1.1
if(me==you)
printf("I hate Examveda")
else
printf("I love Examveda")
}
Correct Answer
(B) I love Examveda
Explanation
Solution: For floating point numbers (float, double, long double) the values cannot be predicted exactly. Depending on the number of bytes, the precession with the value represented varies. Float takes 4 bytes and long double takes 10 bytes. So float stores 0.9 with less precision than long double. Rule of Thumb: Never compare or at-least be cautious when using floating point numbers with relational operators (== , >, <, <=, >=,!= ) .