C99 includes the keyword _Complex, which supports complex arithmetic. The following _Complex types are defined:
float _Complex double _Complex long double _Complex
The reason that _Complex, rather than complex, was specified as a keyword is that many existing C programs had already defined their own custom complex data types using the name complex. By defining the keyword _Complex, C99 avoids breaking this preexisting code.
The header <complex.h> defines (among other things) the macro complex, which expands to _Complex. Thus, for new C programs, it is best to include <complex.h> and then use the complex macro.