Community Sites
Create your own community website and start earning today !
It's Free !
 
Communities 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.

website counter



C Debugging - Part 10


Posted Date: 05 May 2008    Resource Type: Articles/Knowledge Sharing    Category: Placement Papers

Posted By: Ramkumar       Member Level: Diamond
Rating:     Points: 1



101) void main()

{

void *v;

int integer=2;

int *i=&integer;

v=i;

printf("%d", (int*)*v) ;

}

Answer:

Compiler Error. We cannot apply indirection on type void*.

Explanation:

Void pointer is a generic pointer type. No pointer arithmetic can be done on it. Void pointers are normally used for,

1. Passing generic pointers to functions and returning such pointers.

2. As a intermediate pointer type.

3. Used when the exact pointer type will be known at a later point of time.



102) void main()

{

int i=i++,j=j++, k=k++;

printf(“%d%d%d”,i,j,k);

}

Answer:

Garbage values.

Explanation:

An identifier is available to use in program code from the point of its declaration.

So expressions such as i = i++ are valid statements. The i, j and k are automatic variables and so they contain some garbage value. Garbage in is garbage out (GIGO).





103) void main()

{

static int i=i++, j=j++, k=k++;

printf(“i = %d j = %d k = %d”, i, j, k);

}

Answer:

i = 1 j = 1 k = 1

Explanation:

Since static variables are initialized to zero by default..



104) void main()

{

while(1){

if(printf("% d",printf( "%d")))

break;

else

continue;

}

}

Answer:

Garbage values

Explanation:

The inner printf executes first to print some garbage value. The printf returns no of characters printed and this value also cannot be predicted. Still the outer printf prints something and so returns a non-zero value. So it encounters the break statement and comes out of the while statement.



104) main()

{

unsigned int i=10;

while(i-->=0)

printf("%u ",i);



}

Answer:

10 9 8 7 6 5 4 3 2 1 0 65535 65534…..

Explanation:

Since i is an unsigned integer it can never become negative. So the expression i-- >=0 will always be true, leading to an infinite loop.



105) #include

main()

{

int x,y=2,z,a;

if(x=y%2) z=2;

a=2;

printf("%d %d ",z,x);

}

Answer:

Garbage-value 0

Explanation:

The value of y%2 is 0. This value is assigned to x. The condition reduces to if (x) or in other words if(0) and so z goes uninitialized.

Thumb Rule: Check all control paths to write bug free code.



106) main()

{

int a[10];

printf("%d", *a+1-*a+3) ;

}

Answer:

4

Explanation:

*a and -*a cancels out. The result is as simple as 1 + 3 = 4 !



107) #define prod(a,b) a*b

main()

{

int x=3,y=4;

printf("%d", prod(x+2, y-1));

}

Answer:

10

Explanation:

The macro expands and evaluates to as:

x+2*y-1 => x+(2*y)-1 => 10



108) main()

{

unsigned int i=65000;

while(i++!=0) ;

printf("%d", i);

}

Answer:

1

Explanation:

Note the semicolon after the while statement. When the value of i becomes 0 it comes out of while loop. Due to post-increment on i the value of i while printing is 1.



109) main()

{

int i=0;

while(+(+i-- )!=0)

i-=i++;

printf("%d", i);

}

Answer:

-1

Explanation:

Unary + is the only dummy operator in C. So it has no effect on the expression and now the while loop is, while(i--!=0) which is false and so breaks out of while loop. The value –1 is printed due to the post-decrement operator.


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 9
Previous Resource: C Debugging - Part 11
Return to Discussion Resource Index
Post New Resource
Category: Placement Papers


Post resources and earn money!
 
Related Resources



Watch TV Channels
  • Watch Asianet TV online
  • Kairali TV in Internet
  • Surya TV online
  • Amritha TV Channel

  • Contact Us    Privacy Policy    Terms Of Use   

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