tipos significa salir que para for comando c++ visual-c++

c++ - significa - ¿Por qué MSVC elige un largo largo como el tipo para-2147483648?



salir de if c# (1)

Mi fragmento:

auto i = -2147483648; int j = 3; std::swap(i, j); // Compile error about mismatched types here.

El compilador afirma que el literal i es long long . ¿Porqué es eso? -2147483648 encaja en una int en MSVC x64.

Mi compilador es MSVC, el objetivo es 64 bits.


Contrario a la creencia popular, -2147483648 no es un literal: C ++ no admite valores literales negativos.

Es, de hecho, una expresión constante evaluable en tiempo de compilación que consiste en una negación unaria del literal 2147483648.

En MSVC x64, que tiene 32 bit int s y long s, 2147483648 es demasiado grande para cualquiera de los dos, por lo que falla al tipo de long long que observa.