如果数值表达式包含不同数值类型的操作数(常量和变量),则根据以下规则将操作数提升为更大的类型:
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
之前,get
和b2 (b1+b2)
将转换为int:int i2=(b1+b2)+i1
最佳答案
括号的优先级高于+
,因此转换通常在添加了b1
和b2
之后进行。但是,+
的byte
运算符does not have an overload,因此必须首先将byte
提升为int
。
进一步阅读:
关于c# - 表达式中的操作数是否根据以下规则提升为更大的类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3080597/