Date: 24.02.2017 19:01:31
Что происходит? Да ничего особенного, посмотрите сами:
static void Main(string[] args) { unchecked { short sh; sh = (short)Int32.MaxValue; Console.WriteLine(sh.ToString()); } }
.maxstack 1 .locals init ([0] int16 sh) IL_0000: ldc.i4.m1 //Push -1 onto the stack as int32. IL_0001: stloc.0 //Pop a value from stack into local variable 0. IL_0002: ldloca.s sh //Load address of local variable with index indx, short form IL_0004: call instance string [mscorlib]System.Int16::ToString() IL_0009: call void [mscorlib]System.Console::WriteLine(string) IL_000e: retДля целочисленных типов без смены знаковости, операция преобразования является просто другой интерпретацией того же участка памяти. Специальные операции преобразования есть при преобразовании signed <-> unsigned, или из целых в вещественные.
Автор: VadimTagil