Играя с основными типами в C # (.NET Core 2.1), я только что увидел, что в Visual Studio 2017 (версия 15.9.2) декомпилированный код для класса Int16
показывает следующее:
public const Int16 MaxValue = 32767;
public const Int16 MinValue = --32768;
Обратите внимание на два знака минуса в минимальном значении.Также для Int32
:
public const Int32 MaxValue = 2147483647;
public const Int32 MinValue = --2147483648;
И Int64
:
public const Int64 MaxValue = 9223372036854775807;
public const Int64 MinValue = --9223372036854775808;
Тем не менее в декомпилированном коде для класса Double
значение отображается правильно (только с одним знаком минус)):
public const Double MinValue = -1.7976931348623157E+308;
public const Double MaxValue = 1.7976931348623157E+308;
Очевидно, что если я пытаюсь написать short value = --32768;
, компилятор выдает ошибку при попытке уменьшить постоянное значение.
Страница справки для класса Int16
показано, что минимальное значение:
public const short MinValue = -32768;
И исходный код для .NET Core показывает это:
public const short MaxValue = (short)0x7FFF;
public const short MinValue = unchecked((short)0x8000);
Итак, ямне просто любопытноПочему декомпилятор показывает, что минимальное значение для класса Int16
равно --32768
?