如何解决只想知道示例中的演员表是否多余
| 只想知道下面示例中的演员表是否多余。 uint16_t basic_units = 4587U; uint8_t int_val =(uint8_t)((((uint16_t)(basic_units * 5U))/ 1000U);解决方法
“ 0”强制转换是多余的。如果
basic_units * 5U
在除以1000之前会溢出正常的ѭ1overflow,则在计算中将uint16_t
强制转换会产生中间结果的(意外)结果。
, 我认为(uint16_t)在
(uint8_t)((((uint16_t)(basic_units *
5U))/ 1000U)
是多余的。
仅仅是因为
Uint16_t是以下内容的同义词
\“无符号短裤\”
和
uint8_t只是unsigned的typedef
烧焦
, 您能否详细说明冗余部分。您尝试做的是一种不安全的做法,并且在进行缩短转换(将16位转换为8位)时非常不建议这样做。
压力
如果您编写uint8_t int_val =(uint8_t)((basic_units * 5U)/ 1000U)就足够了;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。