mio frammento:Perché MSVC seleziona una lunghezza lunga come il tipo per -2147483648?
auto i = -2147483648;
int j = 3;
std::swap(i, j); // Compile error about mismatched types here.
Il compilatore afferma che il letterale i
è un long long
. Perché? -2147483648 si adatta a un int
su MSVC x64.
Il mio compilatore è MSVC, l'obiettivo è 64 bit.
correlati [Numero minimo di 32 bit di fusione (-2147483648) per il numero di serie positivo (2147483648.0)] (http://stackoverflow.com/q/11536389/995714), [Perché 0 <-0x80000000?] (http://stackoverflow.com/q/34182672/995714), [(-2147483648> 0) restituisce true in C++?] (http://stackoverflow.com/q/14695118/995714) –
Per divertimento, cerca il tuo definizione del compilatore di 'INT_MIN'. Anche quando 'INT' è 32 bit,' INT_MIN' non è definito come '(-2147483648)' proprio per questo motivo. – MSalters
Sono esitante a chiudere questo duplicato dell'ultima domanda; opinioni benvenute – MSalters