Since your qualifiers do not match the actual values, you invoke undefined behavior. This means that anything can happen, and especially the behavior can change between program calls (if format specifiers read more data than is actually provided) or at least between compiler settings.
, , , int . , .
: float double , 8 .
:
void main(){
float a=3;
int b=5;
printf("%08x %08x %08x\n", a, b);
printf("%08x %08x %08x\n", b, a);
printf("%d %d %d\n", a, b);
printf("%d %d %d\n", b, a);
}
00000000 40080000 00000005
00000005 00000000 40080000
0 1074266112 5
5 0 1074266112
, . printf(). - ( %08x),
00 00 00 00 00 00 08 40 05 00 00 00
05 00 00 00 00 00 00 00 00 00 08 40
,
00 00 00 00 -> 00000000 -> 0
00 00 08 40 -> 40080000 -> 1074266112
05 00 00 00 -> 00000005 -> 5
.
%d, ,
0 1074266112
5 0
.
, , b , , "" a.