一、基础用法
#include <iostream> #include <cmath> int main() { int x = -1; int abs_x = std::abs(x); std::cout<< abs_x << std::endl; return 0; }
C++ 中的 `abs()` 函数用来计算整数的绝对值。当参数为整型时,直接调用即可。当参数为浮点型时,需要使用 `fabs()` 函数计算浮点型的绝对值。
二、自定义函数
#include <iostream> template <typename T> T my_abs(T x) { return x < 0 ? -x : x; } int main() { int x = -1; int abs_x = my_abs(x); std::cout<< abs_x << std::endl; return 0; }
除了使用标准库提供的 `abs()` 函数,我们也可以自己定义一个函数来计算绝对值。上面的代码中使用了一个模板函数,可以适用于不同类型的参数。
三、位运算的技巧
#include <iostream> int my_abs(int x) { int mask = x >> 31; return (x + mask) ^ mask; } int main() { int x = -1; int abs_x = my_abs(x); std::cout<< abs_x << std::endl; return 0; }
在 C++ 中,我们可以通过位运算来计算整数的绝对值。以 int 类型为例,我们可以通过右移 31 位来取到数值的最高位,然后将最高位与数值相加后异或最高位的结果来得到绝对值。
四、cmath 库的使用
#include <iostream> #include <cmath> int main() { double x = -1.23; double abs_x = std::fabs(x); std::cout << abs_x << std::endl; return 0; }
除了上面提到的两种方法外,我们还可以使用 `cmath` 头文件中的 `fabs()` 函数计算浮点型的绝对值。需要注意的是,这里要使用 `double` 类型作为参数。