I
出自cppreference.com
| 在標頭 <complex.h> 定義
|
||
| |
(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++ 中的虛數單位)。
示例
運行此代碼
#include <stdio.h>
#include <complex.h>
int main(void)
{
printf("I = %.1f%+.1fi\n", creal(I), cimag(I));
double complex z1 = I * I; // 虚数单位平方
printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1));
double complex z = 1.0 + 2.0*I; // 在 C11 前组成复数的通常途径
printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
}
輸出:
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) |
由實部和虛部構建複數 (宏函數) |
operator""i 的 C++ 文檔
| |