1、8. 信号 9. 可变参数表 10. 公共定义 11. 输入输出 12. 实用函数 13. 日期与时间函数 诊断中只定义了一个带参的宏assert,其定义形式如下:void assert (int 表达式)assert宏用于为程序增加诊断功能,它可以测试一个条件并可能使程序终止。在执行语句:assert(表达式);时,如果表达式为0,则在终端显示一条信息:Assertion failed: 0, file 源文件名, line 行号Abnormal program termination然后调用abort终止程序的执行。 在中,带参宏assert是被定义为条件编译的,如果在源文件中定义了宏ND
2、EBUG,则即使包含了头文件,assert宏也将被忽略。字符类别测试在头文件中定义了一些测试字符的函数。在这些函数中,每个函数的参数都是整型int,而每个参数的值或者为EOF,或者为char类型的字符。中定义的标准函数列表如下:中定义的函数函数定义, 函数功能简介int isalnum(int c), 检查字符是否是字母或数字int isalpha(int c), 检查字符是否是字母int isascii(int c), 检查字符是否是ASCII码int iscntrl(int c), 检查字符是否是控制字符int isdigit(int c), 检查字符是否是数字字符int isgraph(
3、int c), 检查字符是否是可打印字符int islower(int c), 检查字符是否是小写字母int isprint(int c), 检查字符是否是可打印字符int ispunct(int c), 检查字符是否是标点字符int isspace(int c), 检查字符是否是空格符int isupper(int c), 检查字符是否是大写字母int isxdigit(int c), 检查字符是否是十六进制数字字符int toupper(int c), 将小写字母转换为大写字母int tolower(int c), 将大写字母转换为小写字母, , 有关中定义的这些标准函数以及一些常用的非标
4、准字符处理函数将在第十一章中进行详细地介绍。错误处理中定义了两个常量,一个变量。1、 EDOM它表示数学领域错误的错误代码。2、 ERANGE它表示结果超出范围的错误代码。3、 errno这是一个变量,该值被设置成用来指出系统调用的错误类型。整型常量中定义了一些表示整型大小的常量。下面给出这些常量的字符表示以及含义,见下表。 中定义的字符常量字符常量, 取值, 含义CHAR_BIT, 8, char类型的位数CHAR_MAX, 255或127, char类型最大值CHAR_MIN, 0或-127, char类型最小值INT_MIN, -32767, int类型最小值INT_MAX , 3276
5、7, int类型最大值LONG_MAX, 2147483647, long类型最大值LONG_MIN, -2147483647, long类型最小值SCHAR_MAX, 127, signed char 类型最大值SCHAR_MIN, -127, signed char 类型最小值SHRT_MAX, 32767, short类型的最大值SHRT_MIN, -32767, short类型的最小值UCHAR_MAX, 255, unsigned char 类型最大值UINT_MAX, 65535, unsigned int 类型最大值ULONG_MAX, 4294967295, unsigned
6、long 类型最大值USHRT_MAX, 65535, unsigned short类型的最大值地域环境中,定义了7个常量,一个结构,2个函数。 1、常量的定义LC_ALL:传递给setlocale的第一个参数,指定要更改该locale的哪个方面。LC_COLLATE:strcoll和strxfrm的行为。LC_CTYPE:字符处理函数。LC_MONETARY:localeconv返回的货币信息。LC_NUMERIC:localeconv返回的小数点和货币信息。LC_TIME:strftime的行为。以上扩展成具有唯一取值的整型常数表达式,可作为setlocale的第一个参数。NULL:由实现
7、环境定义的空指针。2、struct lconv结构该结构用于存储和表示当前locale的设置。其结构定义如下:struct lconv char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_di
8、gits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; ;3、函数struct Iconv *localeconv(void);函数localeconv将一个struct Iconv类型的对象的数据成员设置成为按照当前地域环境的有关规则进行数量格式化后的相应值。char *setlocale(int category,char * locale);函数setlocale
9、用于更改和查询程序的整个当前地域环境或部分设置。地域环境变量由参数category(上面定义的6个常量)和locale指定。数学函数在中定义了一些数学函数和宏,用来实现不同种类的数学运算。下面给出中标准数学函数的函数定义及功能简介,见下表。double exp(double x);, 指数运算函数, 求e的x次幂函数double log(double x), 对数函数ln(x)double log10(double x); , 对数函数logdouble pow(double x, double y);, 指数函数(x的y次方)double sqrt(double x); , 计算平方根函数d
10、ouble ceil(double x); , 向上舍入函数double floor(double x);, 向下舍入函数double fabs(double x);, 求浮点数的绝对值double ldexp(double x, int n); , 装载浮点数函数double frexp(double x, int* exp); , 分解浮点数函数double modf(double x, double* ip); , 分解双精度数函数double fmod(double x, double y);, 求模函数double sin(double x); , 计算x的正弦值函数double c
11、os(double x);, 计算x的余弦值函数double tan(double x);, 计算x的正切值函数double asin(double x);, 计算x的反正弦函数double acos(double x); , 计算x的反余弦函数double atan(double x); , 反正切函数1double atan2(double y, double x); , 反正切函数2double sinh(double x); , 计算x的双曲正弦值double cosh(double x); , 计算x的双曲余弦值double tanh(double x); , 计算x的双曲正切值在标
12、准库中,还有一些与数学计算有关的函数定义在其他头文件中。非局部跳转中定义了一种特别的函数调用和函数返回顺序的方式。这种方式不同于以往的函数调用和返回顺序,它允许程序流程立即从一个深层嵌套的函数中返回。中定义了两个宏:int setjmp(jmp_buf env); /*设置调转点*/和longjmp(jmp_buf jmpb, int retval); /*跳转*/宏setjmp的功能是将当前程序的状态保存在结构env ,为调用宏longjmp设置一个跳转点。setjmp将当前信息保存在env中供longjmp使用。其中env是jmp_buf结构类型的,该结构定义为:typedef struc
13、t unsigned j_sp; unsigned j_ss; unsigned j_flag; unsigned j_cs; unsigned j_ip; unsigned j_bp; unsigned j_di; unsigned j_es; unsigned j_si; unsigned j_ds; jmp_buf1;直接调用setjmp时,返回值为0,这一般用于初始化(设置跳转点时)。以后再调用longjmp宏时用env变量进行跳转。程序会自动跳转到setjmp宏的返回语句处,此时setjmp的返回值为非0,由longjmp的第二个参数指定。下面通过例子来理解中定义的这两个宏。例程9-1 非局部跳转演示。#include jmp_buf env; /*定义jmp_buf类型变量*/int main(void) int value; value = setjmp(env); /*调用setjmp,为longjmp设置跳转点*/ if (value != 0) printf(Longjmp with valu
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1