我正在读取一个 24 位值,目前是一个uint32_t
变量。
在将我的头撞到墙上计算两个这样的变量之间的差异并思考“它是无符号的!为什么这个溢出是个问题?!”之后,我意识到这些值溢出了包含它们的变量的大小。
这是一个计数器,因此已知一个比另一个“大”,尽管可能已经溢出。
因此,0x1 - 0x2 = 0xFFFFFFFF
,但应该是0x00FFFFFF
。
我应该如何最好地处理这个问题?
- 定义一个类型
uint24
; if
/else
在进行适当的算术运算之前较大;- 还有什么我没有想到的?
“最佳”应解释为“最佳实践”/“最易读”/“最安全”。