Karmaşık türler, C99 standardından beri C dilindedir ( -std=c99
GCC seçeneği). Bazı derleyiciler daha önceki modlarda bile karmaşık türleri uygulayabilir, ancak bu standart olmayan ve taşınabilir olmayan uzantıdır (örneğin, IBM XL, GCC, intel, ...).
Http://en.wikipedia.org/wiki/Complex.h adresinden başlayabilirsiniz - bu, complex.h dosyasındaki işlevlerin açıklamasını verir.
Bu kılavuz http://pubs.opengroup.org/onlinepubs/009604499/basedefs/complex.h.html ayrıca makrolar hakkında bazı bilgiler verir.
Karmaşık bir değişkeni bildirmek için kullanın
double _Complex a; // use c* functions without suffix
veya
float _Complex b; // use c*f functions - with f suffix
long double _Complex c; // use c*l functions - with l suffix
Karmaşık bir değer vermek için, aşağıdaki _Complex_I
makroyu kullanın complex.h
:
float _Complex d = 2.0f + 2.0f*_Complex_I;
(aslında burada (0,-0i)
kompleksin tek yarısında sayılar ve NaN'lerle ilgili bazı problemler olabilir )
Modül, cabs(a)
/ cabsl(c)
/ cabsf(b)
; Gerçek kısmı creal(a)
, Hayali olan cimag(a)
. carg(a)
karmaşık argüman içindir.
Gerçek bir görsel parçasına doğrudan erişmek (okumak / yazmak) için bu taşınabilir olmayan GCC uzantısını kullanabilirsiniz :
__real__ a = 1.4;
__imag__ a = 2.0;
float b = __real__ a;