Perché 1 non è maggiore di -0x80000000. So che ha qualcosa a che fare con l'overflow. Ma qualcuno può spiegare perché? 0x80000000 non è una costante penso che sia?Perché 1 non è maggiore di -0x80000000
assert(1 > -0x80000000);
I trigger di asserzione in C++. Perché?
Sono grato per alcune delle risposte fornite. Ma lo standard C++ definisce che la costante deve essere memorizzata in un numero intero a 32 bit? Perché il compilatore non ha riconosciuto che 80000000 non è adatto per un numero intero a 32 bit e utilizza 64 bit per questo? Voglio dire, il più grande int a 32 bit può essere 0x7FFFFFFF. 0x80000000 è ovviamente più grande di quello. Perché il compilatore usa ancora 32 bit per quello?
Quale valore pensi che '-0x80000000' rappresenti effettivamente? –
Gli odori come i compiti. –
Poiché i '' non firmati 'hanno 32 bit di valore. – Deduplicator