My Profile
Active Members
TodayLast 7 Days
more...
Awards & Gifts
Online Exams
Fresher Jobs
Our fresher job section is exclusively for fresh graduates! Find jobs for freshers in major Indian
cities including Bangalore, Chennai, Hyderabad, Pune or Kochi
Resources
Find educational articles, blogs, discussion threads and other resources.
Colleges
Find details about any college in India or search for courses.
Advertisements
|
C Debugging - Part 4
Posted Date: 05 May 2008 Resource Type: Articles/Knowledge Sharing Category: Placement Papers
|
Posted By: Ramkumar Member Level: Diamond Rating: Points: 3
|
|
|
|
Note : All the programs are tested under Turbo C/C++ compilers.
It is assumed that,
Ø Programs run under DOS environment,
Ø The underlying machine is an x86 system,
Ø Program is compiled using Turbo C/C++ compiler.
The program output may depend on the information based on this assumptions (for example sizeof(int) == 2 may be assumed).
Predict the output or error(s) for the following:
31) main()
{
char *p;
p="Hello";
printf("%c\n" ,*&*p);
}
Answer:
H
Explanation:
* is a dereference operator & is a reference operator. They can be applied any number of times provided it is meaningful. Here p points to the first character in the string "Hello". *p dereferences it and so its value is H. Again & references it to an address and * dereferences it to the value H.
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
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
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 meAnswer:"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 meAnswer:"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");
Regards, Ram...
|
Responses
|
No responses found. Be the first to respond and make money from revenue sharing program.
|
|
|