如果数值表达式包含不同数值类型的操作数(常量和变量),则根据以下规则将操作数提升为更大的类型:
- 如果操作数的类型为
byte
,sbyte
,char
,short
,ushort
,它们将被转换为int
类型 - 如果其中一个操作数是
int
,则所有操作数都转换为int
- 如果表达式还包含类型为
uint
and的操作数int
,则所有操作数都转换为long
- 如果操作数之一是
long
,则所有操作数都转换为long
- 如果表达式包含 and 类型的操作数
ulong
,long
则操作数转换为float
- 如果其中一个操作数是
float
,则所有操作数都转换为float
- 如果操作数之一是
double
,则所有操作数都转换为double
假设数字表达式包含不同类型的操作数,所有操作数是否会首先转换为单个数字类型,然后运行时才会尝试计算结果?例如,如果变量b1
andb2
是byte
类型,whilei1
是int
类型,将b1
和 b2get
在计算之前转换为 int (b1+b2)
:
int i2=(b1+b2)+i1