3 回答

TA贡献1865条经验 获得超7个赞
您为什么担心结转?只要您测量的持续时间在24.9天以内,并且您可以计算相对持续时间,就可以了。只要您只关心自己那部分运行时间(而不是直接在起点和终点进行小于或大于比较),系统就可以运行多长时间了。即这个:
int before_rollover = Int32.MaxValue - 5;
int after_rollover = Int32.MinValue + 7;
int duration = after_rollover - before_rollover;
Console.WriteLine("before_rollover: " + before_rollover.ToString());
Console.WriteLine("after_rollover: " + after_rollover.ToString());
Console.WriteLine("duration: " + duration.ToString());
正确打印:
before_rollover: 2147483642
after_rollover: -2147483641
duration: 13
您不必担心标志位。C#和C一样,可以让CPU处理。
在嵌入式系统中,我经常遇到这种情况。例如,我永远不会直接比较beforerollover <afterrollover。我将始终执行减法来找到将过渡考虑在内的持续时间,然后根据该持续时间进行任何其他计算。
- 3 回答
- 0 关注
- 1405 浏览
添加回答
举报