https://www.cnblogs.com/wuyudong/p/c99-new-feature.html
1.復數(shù)(complex)
complex.h是C標準函數(shù)庫中的頭文件,提供了復數(shù)算術(shù)所需要的宏定義與函數(shù)聲明。
#definecomplex? _Complex#define_Complex_I? ((const float _Complex)__I__)#defineI? _Complex_I
C99規(guī)定了關(guān)鍵字_Complex。因而有3種復數(shù)類型:
double _Complex
float _Complex
long double _Complex
次序不是必須遵守的,比如float _Complex也可以寫成_Complex float。_Complex_I擴展為類型為const float _Complex的常量值,其值為虛數(shù)單位。C99規(guī)定complex作為宏擴展為_Complex。但C++未定義complex宏。gcc僅支持complex type,不支持imaginary type。因此宏I擴展為_Complex_I。
<complex.h>里面還包含了不少支持復數(shù)的數(shù)學函數(shù)(c打頭的就是):
1、ccos,csin,ctan,cacos,casin,catan:復數(shù)域內(nèi)的三角函數(shù),有對應(yīng)的f和l版本。
2、ccosh,csinh,ctanh,cacosh,casinh,catanh:復數(shù)域內(nèi)的雙曲函數(shù),有對應(yīng)的f和l版本。
3、cexp,clog,cabs,cpow,csqrt:復數(shù)域內(nèi)的指數(shù)、對數(shù)、絕對值、冪函數(shù),有對應(yīng)的f和l版本。
4、carg,cimag,creal,conj,cproj:獲取象限角、虛數(shù)部分、實數(shù)部分、a=x及b=-y、Riemann球上的投影,有對應(yīng)的f和l版本。
代碼:
#include#includeint main()?
{
? ? doublecomplex cmp =1.3+2.3*I;
? ? printf("%f + %fi\n", creal(cmp), cimag(cmp));
? ? return0;?
}?
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
1、_Complex是一種新增的數(shù)據(jù)類型,用來表示復數(shù)。C99
新增了復數(shù)類型(_Complex)和虛數(shù)類型(_Imaginary)。簡單來說,C99 提供了三種復數(shù)類型:
float _Complex,double _Complex,和 long double _Complex。
對于float _Complex類型的變量來說,它包含兩個 float類型的值,一個用于表示復數(shù)的實部(real part),
另一個用于表示虛部(imaginary part)。類似地,double _Complex 包含兩個 double類型的值。
C99也提供了三種虛數(shù)類型:float _Imaginary,double _Imaginary,以及 long double_Imaginary。
虛數(shù)類型只有虛部,沒有實部。
2、包含標準頭文件 complex.h 后,就可以用 complex來代表 _Complex,用imaginary來代表 _Imaginary,以及用 I來代表虛數(shù)單位?i,也就是 -1的平方根。例如:
#include <complex.h>
double _Complex x = 5.2;
double complex y = 5.0 * I;
double complex z = 5.2 – 5.0 * I;
3、
注意:_Complex類型對于獨立式環(huán)境(freestanding
environment)來說是可選的??蛇x的意思是,不強制必須支持這種類型。而所謂獨立式環(huán)境,是指 C
程序可以在沒有操作系統(tǒng)的情況下運行。_Imaginary類型在任何環(huán)境下都是可選的。目前的編譯器對這兩種類型的支持都不太好。