一、基礎用法
#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-tw/n/368603.html
微信掃一掃
支付寶掃一掃