Members Bookmarks 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.

Paid Surveys


website counter



C Debugging - Part 13


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

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



131) main()

{

char str1[] = {‘s’,’o’,’m’,’e’};

char str2[] = {‘s’,’o’,’m’,’e’,’\0’};

while (strcmp(str1, str2))

printf(“Strings are not equal\n”);

}

Answer:

“Strings are not equal”

“Strings are not equal”

….

Explanation:

If a string constant is initialized explicitly with characters, ‘\0’ is not appended automatically to the string. Since str1 doesn’t have null termination, it treats whatever the values that are in the following positions as part of the string until it randomly reaches a ‘\0’. So str1 and str2 are not the same, hence the result.



132) main()

{

int i = 3;

for (;i++=0;) printf(“%d”,i);

}



Answer:

Compiler Error: Lvalue required.

Explanation:

As we know that increment operators return rvalues and hence it cannot appear on the left hand side of an assignment operation.



133) void main()

{

int *mptr, *cptr;

mptr = (int*)malloc( sizeof(int) );

printf(“%d”,*mptr);

int *cptr = (int*)calloc( sizeof(int) ,1);

printf(“%d”,*cptr);

}

Answer:

garbage-value 0

Explanation:

The memory space allocated by malloc is uninitialized, whereas calloc returns the allocated memory space initialized to zeros.



134) void main()

{

static int i;

while(i<=10)

(i>2)?i++:i--;

printf(“%d”, i);

}

Answer:

32767

Explanation:

Since i is static it is initialized to 0. Inside the while loop the conditional operator evaluates to false, executing i--. This continues till the integer value rotates to positive value (32767). The while condition becomes false and hence, comes out of the while loop, printing the i value.



135) main()

{

int i=10,j=20;

j = i, j?(i,j)?i:j: j;

printf("%d %d",i,j);

}



Answer:

10 10

Explanation:

The Ternary operator ( ? : ) is equivalent for if-then-else statement. So the question can be written as:

if(i,j)

{

if(i,j)

j = i;

else

j = j;

}

else

j = j;





136) 1. const char *a;

2.. char* const a;

3. char const *a;

-Differentiate the above declarations.



Answer:

1. 'const' applies to char * rather than 'a' ( pointer to a constant char )

*a='F' : illegal

a="Hi" : legal



2. 'const' applies to 'a' rather than to the value of a (constant pointer to char )

*a='F' : legal

a="Hi" : illegal



3. Same as 1.



137) main()

{

int i=5,j=10;

i=i&=j&&10;

printf("%d %d",i,j);

}



Answer:

1 10

Explanation:

The expression can be written as i=(i&=(j&&10)); The inner expression (j&&10) evaluates to 1 because j==10. i is 5. i = 5&1 is 1. Hence the result.



138) main()

{

int i=4,j=7;

j = j || i++ && printf("YOU CAN");

printf("%d %d", i, j);

}



Answer:

4 1

Explanation:

The boolean expression needs to be evaluated only till the truth value of the expression is not known. j is not equal to zero itself means that the expression’s truth value is 1. Because it is followed by || and true || (anything) => true where (anything) will not be evaluated. So the remaining expression is not evaluated and so the value of i remains the same.

Similarly when && operator is involved in an expression, when any of the operands become false, the whole expression’s truth value becomes false and hence the remaining expression will not be evaluated.

false && (anything) => false where (anything) will not be evaluated.



139) main()

{

register int a=2;

printf("Address of a = %d",&a);

printf("Value of a = %d",a);

}

Answer:

Compier Error: '&' on register variable

Rule to Remember:

& (address of ) operator cannot be applied on register variables.



140) main()

{

float i=1.5;

switch(i)

{

case 1: printf("1");

case 2: printf("2");

default : printf("0");

}

}

Answer:

Compiler Error: switch expression not integral

Explanation:

Switch statements can be applied only to integral types.



Regards,
Ram...




Responses

Author: Prasad    18 May 2008Member Level: Gold   Points : 2
Hi Thanks for your guide and useful informations


Author: ArunRanjith    19 May 2008Member Level: Silver   Points : 2
It is very helpful for me
Thank you for your information
It help on while i am teaching


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 12
Previous Resource: C Debugging - Part 14
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.