Не требуется приведение типов при умножении типов Byte - C#
Формулировка задачи:
Читал тут книгу(Г. Шилдт, "Полный справочник по C#"), и нашел такое (ст. 77)
Поскольку при умножении, например, 2 чисел типа byte, результат будет приведен к int, то надо вручну привести тип, и там такой пример
А тепер вопрос
Почему так?
byte b = 10; b = (byte) (b*b);//ручное приведение типа от результата int к byte
byte b = 10; b *= b;//никакого приведения типа не требуеться, компилиться и без него, и результат акой же, как и у (byte) (b*b), т.е. 100
Решение задачи: «Не требуется приведение типов при умножении типов Byte»
textual
Листинг программы
IL_0006: ldstr "0"
IL_000b: call void [mscorlib]System.Console::WriteLine(string)
IL_0010: nop
IL_0011: ldloc.0
IL_0012: ldloc.0
IL_0013: mul
IL_0014: conv.u1
IL_0015: stloc.0
IL_0016: ldstr "1"
IL_001b: call void [mscorlib]System.Console::WriteLine(string)
IL_0020: nop
IL_0021: ldloc.0
IL_0022: ldloc.0
IL_0023: mul
IL_0024: conv.u1
IL_0025: stloc.0
IL_0026: ldstr "."
IL_002b: call void [mscorlib]System.Console::WriteLine(string)