c - 测试多个unsigned int的减法

标签 c

经过几次不成功的搜索,我仍然不知道是否有办法将两个 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/

相关文章:

c - 指针解引用线程安全吗?

c - 调试断言失败(文件名!= nullptr)

c++ - 递归函数可以内联吗?

C语言: float % float why expression must have integral type

c - 如何获取从索引a到索引b的数组的最大元素?

c - Open MPI 的矩阵乘法错误

c++ - 如何在 autoconf 中检查 clang 的支持编译标志

c - 有人知道如何使用 TOPCASED 吗?

C:没有打印出我想要的内容

c - 为什么我们在传递给 printf 时不需要取消引用指向字符串的指针?