一、基礎用法
#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` 類型作為參數。
原創文章,作者:DCASO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/368603.html