I
|
定义于头文件
<complex.h>
|
||
|
#define I /* 未指定 */
|
(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 标准 (ISO/IEC 9899:2011):
-
- 7.3.1/6 I (页: 188)
-
- G.6/1 I (页: 537)
- C99 标准 (ISO/IEC 9899:1999):
-
- 7.3.1/4 I (页: 170)
-
- G.6/1 I (页: 472)
参见
|
(C99)
|
虚数单位常量 i
(宏常量) |
|
(C99)
|
复数单位常量 i
(宏常量) |
|
(C11)
(C11)
(C11)
|
根据实部和虚部构造复数
(函数宏) |
|
C++ 文档
关于
operator""i
|
|