带有符号整数的模运算在c中的未定义行为?

时间:2013-04-14 01:52:35

标签: c unsigned undefined-behavior signed

阅读Should you always use 'int' for numbers in C, even if they are non-negative?中的所有答案和评论后,我仍然不确定在以下情况下该怎么做。

两个远程设备正在计算各自位置的事件。他们定期向PC报告计数器读数,其中反馈算法以某种方式将计数器读数的差异保持在界限内。事件序列是无穷无尽的,因此读数以2 ^ n为模进行报告。对于模运算,建议使用无符号整数。然而,差异可能会变得消极。在计算差值之前将读数转换为有符号整数在我测试它的平台上工作得很好(也就是说,我得到的差值模2 ^ n,其值大小很小)。在接口中声明已经签名的读数会产生优雅的代码。但是,代码应该是可移植的。我要带U.B.严重警告?

1 个答案:

答案 0 :(得分:2)

  

我要接U.B.严重警告?

如果你不想让你的编译器或CPU玩弄你,你的代码应该没有UB。