名稱空間
變體
操作

複數運算

來自 cppreference.com
< c‎ | numeric
 
 
 
複數運算
型別和虛數常量
(C99)
(C99)    
(C11)
(C99)
操作
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
冪函式和指數函式
(C99)
(C99)
(C99)
(C99)
三角函式
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
雙曲函式
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
 

如果實現定義了宏常量 __STDC_NO_COMPLEX__,則不提供複數型別、標頭檔案 <complex.h> 以及此處列出的所有名稱。

(C11 起)

C 程式語言,從 C99 開始,透過三個內建型別 double _Complexfloat _Complexlong double _Complex(參閱 _Complex)支援複數數學。當包含標頭檔案 <complex.h> 時,這三種複數型別也可以作為 double complexfloat complexlong double complex 訪問。

除了複數型別,可能還支援三種虛數型別:double _Imaginaryfloat _Imaginarylong double _Imaginary(參閱 _Imaginary)。當包含標頭檔案 <complex.h> 時,這三種虛數型別也可以作為 double imaginaryfloat imaginarylong double imaginary 訪問。

標準算術運算子 +-*/ 可以與實數、複數和虛數型別以任意組合使用。

建議但不要求定義 __STDC_IEC_559_COMPLEX__ 的編譯器支援虛數。POSIX 建議檢查宏 _Imaginary_I 是否已定義以識別虛數支援。

(C99 起)
(C11 之前)

如果定義了 __STDC_IEC_559_COMPLEX__ __STDC_IEC_60559_COMPLEX__(C23 起),則支援虛數。

(C11 起)
 
定義在標頭檔案 <complex.h>

目錄

型別
虛數型別宏
(關鍵字宏) [編輯]
複數型別宏
(關鍵字宏) [編輯]
虛數常量
虛數單位常量 i
(宏常量) [編輯]
複數單位常量 i
(宏常量) [編輯]
(C99)
複數或虛數單位常量 i
(宏常量) [編輯]
操作
(C11)(C11)(C11)
從實部和虛部構造複數
(函式宏) [編輯]
(C99)(C99)(C99)
計算複數的實部
(函式) [編輯]
(C99)(C99)(C99)
計算複數的虛部
(函式) [編輯]
(C99)(C99)(C99)
計算複數的模
(函式) [編輯]
(C99)(C99)(C99)
計算複數的幅角
(函式) [編輯]
(C99)(C99)(C99)
計算複共軛
(函式) [編輯]
(C99)(C99)(C99)
計算黎曼球面上的投影
(函式) [編輯]
指數函式
(C99)(C99)(C99)
計算複數以 e 為底的指數
(函式) [編輯]
(C99)(C99)(C99)
計算複數自然對數
(函式) [編輯]
冪函式
(C99)(C99)(C99)
計算複數冪函式
(函式) [編輯]
(C99)(C99)(C99)
計算復平方根
(函式) [編輯]
三角函式
(C99)(C99)(C99)
計算復正弦
(函式) [編輯]
(C99)(C99)(C99)
計算復餘弦
(函式) [編輯]
(C99)(C99)(C99)
計算復正切
(函式) [編輯]
(C99)(C99)(C99)
計算復反正弦
(函式) [編輯]
(C99)(C99)(C99)
計算復反餘弦
(函式) [編輯]
(C99)(C99)(C99)
計算復反正切
(函式) [編輯]
雙曲函式
(C99)(C99)(C99)
計算復雙曲正弦
(函式) [編輯]
(C99)(C99)(C99)
計算復雙曲餘弦
(函式) [編輯]
(C99)(C99)(C99)
計算復雙曲正切
(函式) [編輯]
(C99)(C99)(C99)
計算復反雙曲正弦
(函式) [編輯]
(C99)(C99)(C99)
計算復反雙曲餘弦
(函式) [編輯]
(C99)(C99)(C99)
計算復反雙曲正切
(函式) [編輯]

[編輯] 注意

以下函式名稱可能(C23 起)保留供未來新增到 <complex.h>,並且在包含該標頭檔案的程式中不可用:cerfcerfccexp2cexpm1clog10clog1pclog2clgammactgammacsinpiccospictanpicasinpicacospicatanpiccompoundncpowncpowrcrootncrsqrtcexp10m1cexp10cexp2m1clog10p1clog2p1clogp1(C23 起),以及它們帶有 -f 和 -l 字尾的變體。

儘管 C 標準將反雙曲函式命名為“復反正弦”等,但雙曲函式的反函式是面積函式。它們的引數是雙曲扇形的面積,而不是弧。正確的名稱是“復反雙曲正弦”等。有些作者使用“復面積雙曲正弦”等。

如果一個複數或虛數的一個部分是無窮大,即使另一部分是 NaN,它也是無窮大。

如果複數或虛數的兩個部分都不是無窮大也不是 NaN,則它是有限的。

如果複數或虛數的兩個部分都是正零或負零,則它是零。

儘管 MSVC 提供了 <complex.h> 標頭檔案,但它不將複數作為原生型別實現,而是作為 struct 實現,這與標準 C 複數型別不相容,並且不支援 +-*/ 運算子。

[編輯] 示例

#include <complex.h>
#include <stdio.h>
#include <tgmath.h>
 
int main(void)
{
    double complex z1 = I * I;     // imaginary unit squared
    printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1));
 
    double complex z2 = pow(I, 2); // imaginary unit squared
    printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2));
 
    double PI = acos(-1);
    double complex z3 = exp(I * PI); // Euler's formula
    printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3));
 
    double complex z4 = 1 + 2 * I, z5 = 1 - 2 * I; // conjugates
    printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4 * z5), cimag(z4 * z5));
}

輸出

I * I = -1.0+0.0i
pow(I, 2) = -1.0+0.0i
exp(I*PI) = -1.0+0.0i
(1+2i)*(1-2i) = 5.0+0.0i

[編輯] 參考文獻

擴充套件內容
  • C23 標準 (ISO/IEC 9899:2024)
  • 6.10.8.3/1/2 __STDC_NO_COMPLEX__ (p: 待定)
  • 6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__ (p: 待定)
  • 7.3 複數運算 <complex.h> (p: 待定)
  • 7.25 型別通用數學 <tgmath.h> (p: 待定)
  • 7.31.1 複數運算 <complex.h> (p: 待定)
  • 附錄 G (規範性) IEC 60559 相容複數運算 (p: 待定)
  • C17 標準 (ISO/IEC 9899:2018)
  • 6.10.8.3/1/2 __STDC_NO_COMPLEX__ (p: 128)
  • 6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__ (p: 128)
  • 7.3 複數運算 <complex.h> (p: 136-144)
  • 7.25 型別通用數學 <tgmath.h> (p: 272-273)
  • 7.31.1 複數運算 <complex.h> (p: 391)
  • 附錄 G (規範性) IEC 60559 相容複數運算 (p: 469-479)
  • C11 標準 (ISO/IEC 9899:2011)
  • 6.10.8.3/1/2 __STDC_NO_COMPLEX__ (p: 177)
  • 6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__ (p: 177)
  • 7.3 複數運算 <complex.h> (p: 188-199)
  • 7.25 型別通用數學 <tgmath.h> (p: 373-375)
  • 7.31.1 複數運算 <complex.h> (p: 455)
  • 附錄 G (規範性) IEC 60559 相容複數運算 (p: 532-545)
  • C99 標準 (ISO/IEC 9899:1999)
  • 6.10.8/2 __STDC_IEC_559_COMPLEX__ (p: 161)
  • 7.3 複數運算 <complex.h> (p: 170-180)
  • 7.22 型別通用數學 <tgmath.h> (p: 335-337)
  • 7.26.1 複數運算 <complex.h> (p: 401)
  • 附錄 G (資訊性) IEC 60559 相容複數運算 (p: 467-480)

[編輯] 另請參閱

C++ 文件 關於 複數運算