Members BookmarksPolls Fresher Jobs Funny Pictures MCA Projects New Member FAQ  



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


website counter



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.

Feedbacks      
Popular Tags   What are tags ?   Search Tags  
(No tags found.)

Post Feedback


This is a strictly moderated forum. Only approved messages will appear in the site. Please use 'Spell Check' in Google toolbar before you submit.
You must Sign In to post a response.
Next Resource: C Debugging - Part 3
Previous Resource: C Debugging - Part 5
Return to Discussion Resource Index
Post New Resource
Category: Placement Papers


Post resources and earn money!
 
Related Resources


Contact Us    Privacy Policy    Terms Of Use   

SpiderWorks Technologies Pvt Ltd. 2006 - 2007 All Rights Reserved.