I
定义于头文件 <complex.h>
|
||
#define I /* unspecified */ |
(C99 起) | |
I
宏展开成 _Complex_I 或 _Imaginary_I 。若实现不支持虚数类型,则该宏始终展开成 _Complex_I 。
一个程序可以取消定义,并能在紧随其后重定义宏 I 。
注意
该宏名字不是 i ,虽然这是数学上的虚数单位名称。因为 i
已经用于大量 C 程序中,例如作为循环变量。
宏 I 常用于组成复数,通过如 x + y*I 的表达式。
若 I
被定义成 _Complex_I ,则该表达式在 y
为 -0.0
时创建虚部为 +0.0
的值,这对拥有分支的复变函数有显著影响。宏 CMPLX 提供精确构造复数的方法。
GCC 提供了一种不可移植的扩展,它允许通过在实数字面量后指定后缀 i
: 1.0fi
、 1.0i
及 1.0li
是 GNU C 中的虚数单位。 C++14 起,类似的方式是标准 C++ 的一部分( 1.0if
、 1.0i
及 1.0il
是 C++ 中的虚数单位)。
示例
运行此代码
输出:
I = 0.0+1.0i I * I = -1.0+0.0i z = 1.0+2.0i
引用
- C11 standard (ISO/IEC 9899:2011):
- 7.3.1/6 I (p: 188)
- G.6/1 I (p: 537)
- C99 standard (ISO/IEC 9899:1999):
- 7.3.1/4 I (p: 170)
- G.6/1 I (p: 472)
参阅
(C99) |
虚数单位常量 i (宏常量) |
(C99) |
复数单位常量i (宏常量) |
(C11)(C11)(C11) |
由实部和虚部构建复数 (宏函数) |