_Imaginary
и _Complex
- ключевые слова в стандарте языка C99, используемые для определения мнимых и сложных типов переменных с плавающей точкой; они не являются частью языка C ++. Они не являются типами данных сами по себе - они изменяют типы float
, double
и long double
. Например:
float _Imaginary x; // imaginary 32-bit number
double _Complex y; // complex 64-bit number
long double _Complex z; // complex 80-bit number
_Imaginary
значения в основном эквивалентны обычным действительным значениям, кроме случаев, когда вы добавляете вещественное значение с мнимым значением, вы получаете значение _Complex
.
Заголовочный файл <complex.h>
определяет макросы imaginary
как _Imaginary
и complex
как _Complex
, а также I
как _Complex_I
или _Imaginary_I
(мнимая единица). Это сделано для того, чтобы старые программы на C могли использовать complex
и imaginary
в качестве идентификаторов; новые программы должны использовать complex
и imaginary
вместо _Complex
и _Imaginary
. Обратите внимание, что идентификаторы, начинающиеся со знака подчеркивания, за которым следует заглавная буква, зарезервированы реализацией, поэтому устаревший код никогда не должен использовать _Complex
или _Imaginary
.
C ++, с другой стороны, не использует это и вместо этого имеет шаблонные типы std::complex<float>
, std::complex<double>
и std::complex<long double>
для работы с комплексными числами. Эти классы функционируют очень похоже на типы C99, но не являются взаимозаменяемыми.