标准函数库
算术
求商和余数的函数div。
字符串转换
函数atoi和atol执行基数为10的转换;
而函数strtol和strtoul允许你在转化时指定基数,同时还允许访问字符串的剩余部分。
浮点表示形式
函数modf把一个浮点值分成整数和小数两个部分。
非本地跳转
setjmp和longjmp函数提供了一种类似goto语句的机制,但它并不局限于一个函数的作用域之内。这些函数常用于深层嵌套的函数调用链。
信号
信号表示一种事件,它可能异步地发生,也就是并不予程序执行过程的任何时间同步。
信号处理函数
由于信号可能在任何时候发生,所以由信号处理函数修改的变量的值可能会在任何时候发生改变。因此,我们不能指望这些变量在两条相邻的程序语句中肯定具有相同的值。volatile关键字告诉编译器这个事实,防止它以一种可能修改程序含义的方式“优化”程序。
通常情况下,上面的程序会认为第二个测试和第一个测试具有相同的结果
而如果把变量value声明为volatile类型的,就不会进行此类优化。
有时,如果不用volatile修饰符,可能无法编写多线程程序,要么编译器失去大量优化的机会。
终止执行
abort函数用于不正常地终止一个正在执行的程序;atexit函数可以把一些函数注册为退出函数exit function;exit函数用于正常终止程序;
断言
宏assert(test)用于检测test是否为真。用这种方法可以使调试变得更容易。并且我们可以在头文件assert.h被包含之前,添加#define NDEBUG皆可以禁用所有的断言。
总结
frexp和ldexp函数在创建与机器无关的浮点数表示形式方面是很有用的。frexp函数用于计算一个给定值的表示形式;ldexp函数用于解释一个表示形式,恢复它的原先值;qsort函数把一个数组中的值按照升序进行排序;bsearch函数用于在一个已经排好序的数组中用二分法查找一个特定的值;locale就是一组函数,根据世界各国的约定差异对C程序的行为进行调整;- 使用
setjmp和longjmp可能导致晦涩难懂的代码; - 使用断言可以简化程序的调试;