32) main()
{
int i=1;
while (i<=5)
{
printf("%d",i);
if (i>2)
goto here;
i++;
}
}
fun()
{
here:
printf("PP");
}
Answer:
Compiler
error: Undefined label 'here' in function main
Explanation:
Labels
have functions scope, in other words The scope of the labels is limited to
functions . The label 'here' is available in function fun() Hence it is not
visible in function main.
33)
main()
{
static char
names[5][20]={"pascal","ada","cobol","fortran","perl"};
int i;
char *t;
t=names[3];
names[3]=names[4];
names[4]=t;
for (i=0;i<=4;i++)
printf("%s",names[i]);
}
Answer:
Compiler
error: Lvalue required in function main
Explanation:
Array
names are pointer constants. So it cannot be modified.
34) void
main()
{
int i=5;
printf("%d",i++ + ++i);
}
Answer:
Output
Cannot be predicted exactly.
Explanation:
Side
effects are involved in the evaluation of
i
35) void
main()
{
int i=5;
printf("%d",i+++++i);
}
Answer:
Compiler
Error
Explanation:
The
expression i+++++i is parsed as i ++ ++ + i which is an illegal combination of
operators.
36) #include<stdio.h>
main()
{
int i=1,j=2;
switch(i)
{
case 1:
printf("GOOD");
break;
case j:
printf("BAD");
break;
}
}
Answer:
Compiler
Error: Constant expression required in function main.
Explanation:
The case
statement can have only constant expressions (this implies that we cannot use
variable names directly so an error).
Note:
Enumerated
types can be used in case statements.
37) main()
{
int i;
printf("%d",scanf("%d",&i)); // value 10 is given as input here
}
Answer:
1
Explanation:
Scanf
returns number of items successfully read and not 1/0. Here 10 is given as input which should have
been scanned successfully. So number of items read is 1.
38) #define
f(g,g2) g##g2
main()
{
int var12=100;
printf("%d",f(var,12));
}
Answer:
100
39) main()
{
int i=0;
for(;i++;printf("%d",i))
;
printf("%d",i);
}
Answer:
1
Explanation:
before
entering into the for loop the checking condition is "evaluated".
Here it evaluates to 0 (false) and comes out of the loop, and i is incremented
(note the semicolon after the for loop).
40) #include<stdio.h>
main()
{
char s[]={'a','b','c','\n','c','\0'};
char *p,*str,*str1;
p=&s[3];
str=p;
str1=s;
printf("%d",++*p + ++*str1-32);
}
Answer:
M
Explanation:
p is
pointing to character '\n'.str1 is pointing to character 'a' ++*p . "p is pointing to '\n' and that is incremented by one." the
ASCII value of '\n' is 10. then it is incremented to 11. the value of ++*p is
11. ++*str1 . "str1 is pointing to 'a' that is incremented by 1 and
it becomes 'b'. ASCII value of 'b' is 98. both 11 and 98 is added and result is
subtracted from 32.
i.e.
(11+98-32)=77("M");
No comments:
Post a Comment