如何在C中找到绝对值?

How to find absolute value in C?

我需要简化代码,然后消除检查减法是否为 <0 的底层 if,如果条件为真,我乘以 * -1 以便进行减法 > 0(绝对值)。

不知道有没有函数或者运算符可以直接在绝对值中进行计算?

int i, j, N, max, s, s1;
s = v[i] - v[j];
s1 = i - j;
if (s1 < 0){
    s1 *= -1;
}
if (s < 0){
    s *= -1;
}

正如评论所说:

s = abs(x - y)

abs(以及实验室、llabs)的联机帮助页:https://linux.die.net/man/3/abs

看起来您是在某种 for 循环中执行此操作(i,j 是 希望 循环索引,否则您需要更具描述性地命名变量)。在这种情况下,您应该能够构建它,使得 j 永远不会大于 i 以提高性能。

绝对值

为了避免 abs(v[i] - v[j])int 溢出 及其 未定义的行为 (UB),请利用unsigned 范围通常是 int 正范围的两倍并执行 unsigned 数学运算。

// int s;
unsigned s;
if (v[i] > v[j]) {
  s = 0u + v[i] - v[j];
} else {
  s = 0u + v[j] - v[i];
}