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 (== , >, <, <=, >=,!= ) .