c - Why does printf literally print (null) and what exactly happens? -
in c programming exercise i'm doing (just simplifying):
printf( "%s", 0);
the output is
(null)
what happens here? assume printf
interprets 0 char *
, null
? how replicate result like
char string[] = null; //compiler-error printf( "%s", string);
?
firstly,
printf("%s", 0);
leads undefined behavior (ub). %s
in printf
requires char *
pointer argument. passing 0
, int
. alone breaks code,
printf("%s", 42);
would. specific ub fact 0
zero not make difference.
secondly, if want attempt pass null-ponter %s
format specifier, have like
printf("%s", (char *) 0);
of course, leads undefined behavior well, since %s
requires pointer valid string argument, , (char *) 0
not valid string pointer. implementations prefer handle such situations gracefully , print (null)
.
in particular case got lucky: printf("%s", 0)
"worked" same way printf("%s", (char *) 0)
, implementation saved day outputting (null)
.
Comments
Post a Comment