【发布时间】:2008-10-29 03:55:06
【问题描述】:
例如,当我将两个整数相除并希望返回一个浮点数时,我迷信地写了这样的东西:
int a = 2, b = 3;
float c = (float)a / (float)b;
如果我不将 a 和 b 转换为浮点数,它将进行整数除法并返回一个 int。
同样,如果我想将一个有符号的 8 位数字与一个无符号的 8 位数字相乘,我会在相乘之前将它们转换为有符号的 16 位数字,以免溢出:
u8 a = 255;
s8 b = -127;
s16 = (s16)a * (s16)b;
当根本不进行转换或仅转换其中一个变量时,编译器在这些情况下的行为究竟如何?我真的需要显式转换所有变量,还是只转换左边的变量,还是右边的变量?
【问题讨论】: