C语言中常用的库文件
0x01 <assert.h>
C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。如果已在引用 <assert.h> 的源文件中定义 NDEBUG 为宏名称,则 assert 宏的定义如下:
#define assert(ignore) ((void)0)
assert 断言就是假设一个情况会发生,然后才会执行他后面的代码。这个宏通常用来判断程序中是否出现了明显非法的数据。如果出现了,则终止程序以免导致严重的后果,同时也能够查找出错误。具体更加详细的用法请参见 assert 断言的用法
0x02 <math.h>
math.h 头文件定义了各种数学函数和一个宏。在这个库中所有可用的功能都带有一个 double 类型的参数,且都返回 double 类型的结果。
常用的函数:
-
double pow(double x, double y) 返回 x 的 y 次幂。
#include <stdio.h> #include <math.h> int main () { printf("值 8.0 ^ 3 = %lf\n", pow(8.0, 3)); printf("值 3.05 ^ 1.98 = %lf", pow(3.05, 1.98)); return(0); } /* 值 8.0 ^ 3 = 512.000000 值 3.05 ^ 1.98 = 9.097324 */
-
double sqrt(double x) 返回 x 的平方根。
#include <stdio.h> #include <math.h> int main () { printf("%lf 的平方根是 %lf\n", 4.0, sqrt(4.0) ); printf("%lf 的平方根是 %lf\n", 5.0, sqrt(5.0) ); return(0); } /* 4.000000 的平方根是 2.000000 5.000000 的平方根是 2.236068 */
-
double ceil(double x) 返回大于或等于 x 的最小的整数值。
#include <stdio.h> #include <math.h> int main () { float val1, val2, val3, val4; val1 = 1.6; val2 = 1.2; val3 = 2.8; val4 = 2.3; printf ("value1 = %.1lf\n", ceil(val1)); printf ("value2 = %.1lf\n", ceil(val2)); printf ("value3 = %.1lf\n", ceil(val3)); printf ("value4 = %.1lf\n", ceil(val4)); return(0); } /* value1 = 2.0 value2 = 2.0 value3 = 3.0 value4 = 3.0 */
-
double fabs(double x) 返回 x 的绝对值。
#include <stdio.h> #include <math.h> int main () { int a, b; a = 1234; b = -344; printf("%d 的绝对值是 %lf\n", a, fabs(a)); printf("%d 的绝对值是 %lf\n", b, fabs(b)); return(0); } /* 1234 的绝对值是 1234.000000 -344 的绝对值是 344.000000 */
-
double floor(double x) 返回小于或等于 x 的最大的整数值。
#include <stdio.h> #include <math.h> int main () { float val1, val2, val3, val4; val1 = 1.6; val2 = 1.2; val3 = 2.8; val4 = 2.3; printf("Value1 = %.1lf\n", floor(val1)); printf("Value2 = %.1lf\n", floor(val2)); printf("Value3 = %.1lf\n", floor(val3)); printf("Value4 = %.1lf\n", floor(val4)); return(0); } /* Value1 = 1.0 Value2 = 1.0 Value3 = 2.0 Value4 = 2.0 */
-
double fmod(double x, double y) 返回 x 除以 y 的余数。
#include <stdio.h> #include <math.h> int main () { float a, b; int c; a = 9.2; b = 3.7; c = 2; printf("%f / %d 的余数是 %lf\n", a, c, fmod(a,c)); printf("%f / %f 的余数是 %lf\n", a, b, fmod(a,b)); return(0); } /* 9.200000 / 2 的余数是 1.200000 9.200000 / 3.700000 的余数是 1.800000 */
这里选择使用函数而不是运算符 % 的原因是:% 运算法只支持两个 int 类型的整型之间的运算,不支持其他类型之间的取余。
0x03 <stdio.h> & <stdlib.h> & <string.h> & <time.h>
这三个头文件中的函数大部分都是很重要的,所以就不单列出来了,有需要的话可以看菜鸟相关页的详解: