当前位置:嗨网首页>书籍在线阅读

16-复数和虚数类型

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

3.4.7 复数和虚数类型

许多科学和工程计算都要用到复数和虚数。C99标准支持复数类型和虚数类型,但是有所保留。一些独立实现,如嵌入式处理器的实现,就不需要使用复数和虚数(VCR芯片就不需要复数)。一般而言,虚数类型都是可选项。C11标准把整个复数软件包都作为可选项。

简而言之,C语言有 3 种复数类型: float _Complexdouble _Complexlong double _Complex 。例如, float _Complex 类型的变量应包含两个 float 类型的值,分别表示复数的实部和虚部。类似地,C语言的 3 种虚数类型是 float _Imaginarydouble _Imaginarylong double _Imaginary

如果包含 complex.h 头文件,便可用 complex 代替 _Complex ,用 imaginary 代替 _Imaginary ,还可以用 I 代替 -1 的平方根。

为何C标准不直接用 complex 作为关键字来代替 _Complex ,而要添加一个头文件(该头文件中把 complex 定义为 _Complex )?因为标准委员会考虑到,如果使用新的关键字,会导致以该关键字作为标识符的现有代码全部失效。例如,之前的 C99 ,许多程序员已经使用 struct complex 定义一个结构来表示复数或者心理学程序中的心理状况(关键字 struct 用于定义能存储多个值的结构,详见第 14 章)。让 complex 成为关键字会导致之前的这些代码出现语法错误。但是,使用 struct _Complex 的人很少,特别是标准使用首字母是下划线的标识符作为预留字以后。因此,标准委员会选定 _Complex 作为关键字,在不用考虑名称冲突的情况下可选择使用 complex