这是调用者任务在发送消息时分配的 16 位无符号值。对于每条新消息,值递增 1,最终循环并产生序列 0、1、2、……65533、65534、65535、0 等。所以我需要一个计数器来查找目标。我需要帮助来获得最有效的环绕方式。例如,如果当前值为 65534 而我的目标计数为 5,我需要一个函数来环绕并将目标设置为正确的值。
最佳答案
如果您使用的是 unsigned int
计数器,那么您可以简单地执行 (x + 5) & 0xffffU
- 无需检查溢出,因为 unsigned 中的算术类型在 C 中定义为环绕,无符号类型必须使用纯二进制表示。
关于c - 环绕整数的最优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20257210/