基础类型之间的转换
隐式转换
隐式类型转换是在某些情况下由编译器自动应用的,例如在赋值、传递函数参数和应用运算符时。一般来说,当值类型之间的隐式转换是语义上合理的且没有信息丢失时,才会发生。
例如,uint8
可以转换为 uint16
,int128
可以转换为 int256
,但 int8
不能转换为 uint256
,因为 uint256
无法容纳像 -1
这样的负值。
如果对不同类型的操作数应用运算符,编译器会尝试将其中一个操作数隐式转换为另一个操作数的类型(赋值时也是如此)。这意味着运算总是在其中一个操作数的类型下执行。
关于哪些隐式转换是可能的,更多的细节请参阅相关类型的章节。
以下是一个例子,y
和 z
是加法的操作数,它们的类型不同,但 uint8
可以隐式转换为 uint16
,而 uint16
不能隐式转换为 uint8
。因此,在加法执行之前,y
会被转换为 z
的类型(即 uint16
)。表达式 y + z