c语言中带符号整数的模运算



在阅读了"你应该总是使用'int'对于C中的数字,即使它们是非负的?我还是不知道在下面的情况下该怎么办。

两个远程设备正在各自的位置计数事件。它们定期将计数器读数报告给PC机,PC机的反馈算法以某种方式将计数器读数的差异保持在一定范围内。事件序列是无穷无尽的,因此读数以模2^n报告。对于模算术,建议使用无符号整数。然而,这种差异很可能变成负值。在计算差值之前将读数转换为有符号整数在我测试它的平台上工作得很好(也就是说,我以2^n为模得到的差值幅度很小)。将读数声明为已在接口中签名的,将生成优雅的代码。但是,代码应该是可移植的。我应该认真对待ub的警告吗?

我应该认真对待ub警告吗?

如果你不想让你的编译器或CPU捉弄你,你的代码应该是自由的。

最新更新