絕對值在c語言中可以用使用abs()函數或fabs()或使用條件運算符、使用條件運算符、使用位運算 ^ 和 >>。
1、使用標準庫函數 abs() 或 fabs()
這是最簡單和最常用的方法,只需要引入頭文件 <stdlib.h> 或 <math.h>,然後調用 abs() 函數或 fabs() 函數即可。
abs() 函數適用於整數,fabs() 函數適用於浮點數。這種方法的優點是方便、快速、通用,缺點是可能會占用較多的內存空間。
使用標準庫函數 abs() 或 fabs()的方法:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
int x = -10;定義壹個整數變量 x
double y = -3.14;定義壹個浮點數變量 y
int abs_x = abs(x);調用 abs() 函數計算 x 的絕對值
double abs_y = fabs(y);調用 fabs() 函數計算 y 的絕對值
printf("The absolute value of %d is %d.\n", x, abs_x);輸出 x 和其絕對值
printf("The absolute value of %f is %f.\n", y, abs_y);輸出 y 和其絕對值
return 0;
運行結果:
The absolute value of -10 is 10.
The absolute value of -3.140000 is 3.140000.
2、使用條件運算符
這是壹種自定義的方法,可以根據壹個數的正負來返回它的絕對值。x > 0 ?x : -x 就表示 x 的絕對值。這種方法的優點是簡潔、靈活、節省空間,缺點是可能會降低程序的可讀性和效率。?
使用條件運算符的方法:
#include <stdio.h>
#define ABS(x) ((x) < 0 ? -(x) : (x))定義壹個宏 ABS(x) 來計算任意類型數據的絕對值
int main()
int x = -10;定義壹個整數變量 x
double y = -3.14;定義壹個浮點數變量 y
char c = 'A';定義壹個字符變量 c
printf("The absolute value of %d is %d.\n", x, ABS(x));輸出 x 和其絕對值
printf("The absolute value of %f is %f.\n", y, ABS(y));輸出 y 和其絕對值
printf("The absolute value of %c is %c.\n", c, ABS(c));輸出 c 和其絕對值
return 0;
運算結果;
The absolute value of -10 is 10.
The absolute value of -3.140000 is 3.140000.
The absolute value of A is A.
3、使用位運算 ^ 和 >>
這是壹種利用二進制運算來計算整數絕對值的方法。(x ^ (x >> 31)) - (x >> 31) 就表示 x 的絕對值。這種方法的優點是高效、巧妙、節省空間,缺點是只適用於整數,且可能會引起溢出或錯誤。
使用位運算 ^ 和 >>的方法:
#include <stdio.h>
int abs(int x)
int mask = x >> (sizeof(int) * 8 - 1); 將 x 的符號位移到最右側,得到壹個掩碼 mask
return (x + mask) ^ mask;將 x 和 mask 相加,再和 mask 異或,得到 x 的絕對值
int main()
int x = -10;定義壹個整數變量 x
int abs_x = abs(x);調用自定義的 abs() 函數計算 x 的絕對值
printf("The absolute value of %d is %d.\n", x, abs_x);輸出 x 和其絕對值
return
運算結果:
The absolute value of -10 is 10.