文章目录
运算符
算术和位运算符即使在两个操作数类型不同的情况下也可以应用。例如,你可以计算 y = x + z
,其中 x
是 uint8
类型,z
是 uint32
类型。在这种情况下,将使用以下机制来确定运算执行的类型(这对于溢出非常重要)以及运算符结果的类型:
- 如果右操作数的类型可以隐式转换为左操作数的类型,则使用左操作数的类型。
- 如果左操作数的类型可以隐式转换为右操作数的类型,则使用右操作数的类型。
- 否则,不允许进行运算。
如果其中一个操作数是字面量数字,它首先会转换为其“移动类型”,即可以容纳该值的最小类型(相同位宽的无符号类型被认为比有符号类型更小)。如果两个操作数都是字面量数字,则运算会使用实际所需的无限精度进行计算,以确保在结果与非字面量类型一起使用时不会丢失精度。
运算符的结果类型与执行运算的类型相同,比较运算符的结果类型总是 bool
。
运算符 **
(指数运算)、<<
和 >>
使用左操作数的类型进行运算和返回结果。
三元运算符
三元运算符用于形如 <表达式> ? <真表达式> : <假表达式&g