只想知道示例中的演员表是否多余

问题描述

| 只想知道下面示例中的演员表是否多余。 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)就足够了;