阅读完所有答案和评论后,即使它们是非负数,您是否应该始终对 C 中的数字使用“int”?我仍然不确定在以下情况下该怎么做。
两个远程设备正在对各自位置的事件进行计数。他们定期向 PC 报告计数器读数,其中反馈算法以某种方式将计数器读数的差异保持在范围内。事件序列是无止境的,因此读数以 2^n 为模报告。对于模运算,建议使用无符号整数。然而,差异很可能会变成负数。在计算差异之前将读数转换为有符号整数在我测试它的平台上工作得很好(也就是说,我得到的差异模 2^n 的值很小)。在界面中将读数声明为已签名会产生优雅的代码。但是,代码应该是可移植的。我应该认真对待 UB 警告吗?