Если числовое выражение содержит операнды (константы и переменные) различных числовых типов, операнды повышаются до более крупных типов в соответствии со следующими правилами:
- , если операнды имеют типы
byte
, sbyte
, char
, short
, ushort
, они преобразуются в int
тип
- Если один из операндов равен
int
, то все операнды преобразуются в int
- если выражение также содержит операнды типов
uint
и int
, то все операнды преобразуются в long
- Если один из операндов равен
long
, то все операнды преобразуются в long
- если выражение содержит операнды типа
ulong
и long
, то операнды преобразуются в float
- Если один из операндов равен
float
, то все операнды преобразуются в float
- если один из операндов равен
double
, то все операнды преобразуются в double
Предполагая, что числовые выражения содержат операнды разных типов, все ли операнды сначала преобразуются в один числовой тип, и только тогда среда выполнения попытается вычислить результат? Например, если переменные b1
и b2
имеют тип byte
, а i1
имеет тип int
, b1
и b2 get
преобразуются в int до вычисления (b1+b2)
:
int i2=(b1+b2)+i1