LINUX.ORG.RU

История изменений

Исправление 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 между - вы увидите как всё «поплывёт».