Since you specified %d
instead of %f
, what you're really seeing is the binary representation of d
as an integer.
Also, since the datatypes don't match, the code actually has undefined behavior.
EDIT:
Now to explain why you don't see the 2
:
float
gets promoted to double
on the stack. Type double
is (in this case) 8 bytes long. However, since your printf
specifies two integers (both 4 bytes in this case), you are seeing the binary representations of 1.0
as a type double
. The 2 isn't printed because it is beyond the 8 bytes that your printf
expects.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…