You try to use %d
for float
:
d
specifier is used for signed decimal integer
f
specifier is used for decimal floating point
Using wrong specifier leads to Undefined behavior
You relied on address of an automatic variable:
I try to predict the output by viewing the memory near a
a
is an automatic variable, its address changes every time you compile the code, so memory-near-a also changes every time you compile the code.
So, “viewing the memory near a” also causes Undefined behavior.
Solution:
You have nothing to do with Undefined behavior (in this case), so just forget it for saving time, it will make your life easier.