例如,当我划分两个整数并想要返回一个浮点数时,我迷信地写了这样的东西:
int a = 2, b = 3;
float c = (float)a / (float)b;
Run Code Online (Sandbox Code Playgroud)
如果我不投射a和b浮动,它将进行整数除法并返回一个int.
类似地,如果我想将带符号的8位数与无符号8位数相乘,我会在乘法之前将它们转换为带符号的16位数,以免出现溢出:
u8 a = 255;
s8 b = -127;
s16 = (s16)a * (s16)b;
Run Code Online (Sandbox Code Playgroud)
在完全不进行转换或仅转换其中一个变量时,编译器在这些情况下的行为究竟如何?我是否真的需要显式地转换所有变量,或者只是左边的那个变量,还是右边的变量?