What is the output of printf("%d")?
|
1. When we write printf("%d",x); this means compiler will print the
|
value of x. But as here, there is nothing after %d so compiler will show
|
in output window garbage value.
|
2. When we use %d the compiler internally uses it to access the
|
argument in the stack (argument stack). Ideally compiler determines
|
the offset of the data variable depending on the format specification
|
string. Now when we write printf("%d",a) then compiler first accesses
|
the top most element in the argument stack of the printf which is %d
|
and depending on the format string it calculated to offset to the actual
|
data variable in the memory which is to be printed. Now when only %d
|
will be present in the printf then compiler will calculate the correct
|
offset (which will be the offset to access the integer variable) but as
|
the actual data object is to be printed is not present at that memory
|
location so it will print what ever will be the contents of that memory
|
location.
|
3. Some compilers check the format string and will generate an error
|
without the proper number and type of arguments for things like
|
printf(...) and scanf(...).
Blog Author: Vijay Kumar
|
No comments:
Post a Comment