例如 u16 a; u16 b = 61111; u16 c = 111; a = (b * c ) / 100; b*c会超出u16的范围,/100会符合u16的范围内。 该怎么显式转换才比较合适?
以STM32为例,(b * c )的结果会自动转化为无符号32位数(uint32_t,或u32);
然后再除100;
得到的结果,再转化为16位数(u16),只保留最低16位。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
uint32_t x;
x=b*c;
x/=100;
a=(uint16_t)x;
这样麻烦点,但是所有的向下转换都是显式的,这样比较安全点。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
明白 ,谢谢
长知识了,谢谢啦