- 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.
- 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.
- 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.
- 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.
- 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.
- 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.Here 10 is given as input which should have been
scanned successfully. So number of items read is 1.
- #define f(g,g2) g##g2
main(){
int var12=100;
printf("%d",f(var,12));
}
Answer:
100
- 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).
- main(){
extern int i;
i=20;
printf("%d",sizeof(i));
}
Answer:
Linker error: undefined
symbol '_i'.
Explanation:
extern declaration specifies
that the variable i is defined somewhere else. The compiler passes the external
variable to be resolved by the linker. So compiler doesn't find an error.
During linking the linker searches for the definition of i. Since it is not
found the linker flags an error.
- main(){
printf("%d", out);
}
int out=100;
Answer:
Compiler error: undefined
symbol out in function main.
Explanation:
The rule is that a variable
is available for use from the point of declaration. Even though a is a global
variable, it is not available for main. Hence an error.
- main(){
extern out;
printf("%d", out);
}
int out=100;
Answer:
100
Explanation:
This is the correct way of
writing the previous program.
No comments:
Post a Comment