经过几次不成功的搜索,我仍然不知道是否有办法将两个 unsigned int
(或更多)相减并检测这个相减的结果是否为负数(或不是)。
我已经尝试过类似的事情:
if(((int)x - (int)y) < 0)
但我认为这不是最好的方法。
最佳答案
意识到你的意图
unsigned int x;
unsigned int y;
if (x - y < 0)
在数学上等同于:
unsigned int x;
unsigned int y;
if (y > x)
编辑
我可以断言确定性证据的问题并不多,但我可以针对这个问题。这是基本的不等式代数:
x - y < 0
两边加y:
x < y, which is the same as y > x.
如果需要,您可以对更多变量执行类似操作:
x - y - z < 0 == x < y + z, or y + z > x
参见 chux's comment to his own answer ,但是,对于处理多个值时有关整数溢出的有效警告。
关于c - 测试多个unsigned int的减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20132401/