绝对值在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.