Monday, 20 February 2012

Frequently Asked Questions in Technical Round at MNCs like TCS, WIPRO, INFOSYS,..etc – 10

Predict the output or error(s) for the following:


1)

main()

{

char *str1="abcd";


char str2[]="abcd";


printf("%d %d %d",sizeof(str1),sizeof(str2),sizeof("abcd"));


}

Answer:

2 5 5


Explanation:

In first sizeof, str1 is a character pointer so it gives you the size of the pointer variable. In second sizeof the name str2 indicates the name of the array whose size is 5 (including the '\0' termination character). The third sizeof is similar to the second one.


2)

main()

{

char not;


not=!2;


printf("%d",not);


}

Answer:

0


Explanation:

! is a logical operator. In C the value 0 is considered to be the boolean value FALSE, and any non-zero value is considered to be the boolean value TRUE. Here 2 is a non-zero value so TRUE. !TRUE is FALSE (0) so it prints 0.


3)

#define FALSE -1

#define TRUE   1

#define NULL

main()

{

if(NULL)


puts("NULL");


else if(FALSE)


puts("TRUE");


else


puts("FALSE");


}

Answer:

TRUE


Explanation:

The input program to the compiler after processing by the preprocessor is,


main()


{


if(0)


puts("NULL");


else if(-1)


puts("TRUE");


else


puts("FALSE");


}


Preprocessor doesn't replace the values given inside the double quotes. The check by if condition is boolean value false so it goes to else. In second if -1 is boolean value true hence "TRUE" is printed

No comments:

Post a Comment