Thursday, 3 July 2014

#19. Concepts in C -- only through Examples & Explanations

This is a continuation of last post. 

Before seeing the answer try to predict it & then see the explanation.

All the Best!!

56) main()
{
char *cptr,c;
void *vptr,v;
c=10; v=0;
cptr=&c; vptr=&v;
printf("%c%v",c,v);
}

57) main()
{
char *str1="abcd";
char str2[]="abcd";
printf("%d %d %d",sizeof(str1),sizeof(str2),sizeof("abcd"));
}

58)main()
{
char not;
not=!2;

printf("%d",not);
}

59) #define FALSE -1
#define TRUE 1
#define NULL 0
main() {
if(NULL)
puts("NULL");
else if(FALSE)
puts("TRUE");
else
puts("FALSE");
}


60) main()
int k=1;
printf("%d==1 is ""%s",k,k==1?"TRUE":"FALSE");
}

========================================================

56.
Answer:
Compiler error (at line number 4): size of v is Unknown.
Explanation:
You can create a variable of type void * but not of type void, since void is an
empty type. In the second line you are creating variable vptr of type void *
and v of type void hence an error.

57.
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.

58.
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.

59.
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.

60.
Answer:
1==1 is TRUE
Explanation:
When two strings are placed together (or separated by white-space) they are
concatenated (this is called as "stringization" operation). So the string is as if
it is given as "%d==1 is %s". The conditional operator( ?: ) evaluates to

"TRUE".

To be continued...
========================================================

Thanks for coming till this point!!
VSG
SQL DBA



No comments:

Post a Comment