Dlaczego 1 nie jest większy niż -0x80000000. Wiem, że ma to coś wspólnego z przepełnieniem. Ale czy ktoś może wyjaśnić dlaczego? czy 0x80000000 nie jest stałą, jak sądzę?Dlaczego 1 nie jest większy niż -0x80000000
assert(1 > -0x80000000);
Aktor uruchamia się w C++. Dlaczego?
Jestem wdzięczny za udzieloną odpowiedź. Ale czy standard C++ definiuje, że stała musi być przechowywana w 32-bitowej liczbie całkowitej? Dlaczego kompilator nie rozpoznał, że 80000000 nie pasuje do 32-bitowej liczby całkowitej i używa do tego 64-bitowego? Mam na myśli, że największym 32-bitowym int może być 0x7FFFFFFF. 0x80000000 jest oczywiście większy. Dlaczego kompilator nadal używa do tego 32 bitów?
Jaką wartość uważasz "-0x80000000" w rzeczywistości? –
Pachnie jak zadanie domowe. –
Ponieważ twoje 'unsigned's mają 32-bitowe wartości. – Deduplicator