( NevemTeve | 2024. 12. 27., p – 19:45 )

Ennél bonyolultabb, mégpedig az összeadás során fellépő előléptetés (promotion) miatt. Megpróbálok táblázatot táblázni a mérések alapján:


+value f1+value  f2+value  f3+value         f4+value
+1     0         0         ffffffff80000000 40000000
+1U    0         0                 80000000 40000000
+1L    200000000 100000000         80000000 40000000
+1UL   200000000 100000000         80000000 40000000

Azt mondanám, hogy a következő rangfokozatok vannak (csökkenő sorrendben):

1UL    64-bites unsigned
1L     64-bites signed
f1     33-bites unsigned
1U,f2  32-bites unsigned
1      32-bites signed
f3     31-bites unsigned
f4     30-bites unsigned

Amikor két értéket összeadunk, a kettő közül az alacsonyabb rangút előléptetjük a magasabb rangúéval azonosra, hogy pl f3+1 esetén ez 32-bites signed, f3+1U esetén 32-bites unsigned.