小编Tom*_*omK的帖子

依赖整数提升是一种不好的编程习惯吗?

我目前正在为嵌入式系统(C 和 C++)编写一些代码,并且在尝试最小化内存使用时,我注意到我使用了很多依赖于整数提升的代码。例如(据我所知,这段代码在 c 和 c++ 中是相同的):

uint8_t brightness = 40;
uint8_t maxval = 255;
uint8_t localoutput = (brightness * maxval) / 100;
Run Code Online (Sandbox Code Playgroud)

因此,即使亮度 * 255 大于 uint8_t 中可以存储的值,如果我是正确的,由于整数提升,这仍然会产生正确的结果。亮度是一个百分比,因此它永远不应该高于 100,因此本地输出永远不应该高于 255。我的问题是是否有任何意外行为(例如亮度 * maxval 大于 255 因此有溢出)或任何显着差异c++ 和 c 之间如何处理这种语法就是这种情况。似乎只是输出正确的答案,或者更建议将变量设为 uint16_t 类型,因为中间计算可能高于 255,并且将内存损失视为理所当然。

c c++ type-conversion integer-promotion

7
推荐指数
1
解决办法
256
查看次数

标签 统计

c ×1

c++ ×1

integer-promotion ×1

type-conversion ×1