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