Исправление bugfixer, (текущая версия) :
Это не баг, это фича.
Это не «фича», и не баг printf(), а прямое следствие ABI - int’ы и float’ы передаются через разные регистры, и просто так «звёзды сошлись» что в оригинальном примере ваш -3.7 «выжил» в соответствующем регистре между 2ым и 4ым printf(). Очевидный баг (а точнее UB) именно в 4ом printf`е. Добавьте любые операциями над floats между - вы увидите как всё «поплывёт».
Исправление bugfixer, :
Это не баг, это фича.
Это не «фича», и не баг printf(), а прямое следствие ABI - float’ы передаются через разные регистры, и просто так «звёзды сошлись» что в оригинальном примере ваш -3.7 «выжил» в соответствующем регистре между 2ым и 4ым printf(). Очевидный баг (а точнее UB) именно в 4ом printf`е. Добавьте любые операциями над floats между - вы увидите как всё «поплывёт».
Исправление bugfixer, :
Это не баг, это фича.
Это не «фича», и не баг printf(), а прямое следствие ABI - float’ы передаются через другие регистры, и просто так «звёзды сошлись» что в оригинальном примере ваш -3.7 «выжил» в соответствующем регистре между 2ым и 4ым printf(). Очевидный баг (а точнее UB) именно в 4ом printf`е. Добавьте любые операциями над floats между - вы увидите как всё «поплывёт».
Исходная версия bugfixer, :
Это не баг, это фича.
Это не «фича», и не баг, а прямое следствие ABI - float’ы передаются через другие регистры, и просто так «звёзды сошлись» что ваш -3.7 «выжил» в соответствующем регистре между 2ым и 4ым printf(). Очевидный баг (точнее UB) именно в 4ом printf`е. Добавьте любые операциями над floats между - вы увидите как всё «поплывёт».