Namespaces
Variants
Views
Actions

_Complex_I

From cppreference.com
< c‎ | numeric‎ | complex
 
 
 
Complex number arithmetic
Types and the imaginary constant
(C99)
_Complex_I
(C99)    
(C11)
(C99)
I
(C99)
Manipulation
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
Power and exponential functions
(C99)
(C99)
(C99)
(C99)
Trigonometric functions
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
Hyperbolic functions
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
 
Defined in header <complex.h>
#define _Complex_I /* unspecified */
(since C99)

The _Complex_I macro expands to a value of type const float _Complex with the value of the imaginary unit.

[edit] Notes

This macro may be used when I is not available, such as when it has been undefined by the application.

Unlike _Imaginary_I and CMPLX , use of this macro to construct a complex number may lose the sign of zero on the imaginary part.

[edit] Example

Run this code
#include <stdio.h>
#include <complex.h>
 
#undef I
#define J _Complex_I // can be used to redefine I
 
int main(void)
{
 // can be used to construct a complex number
 double complex z = 1.0 + 2.0 * _Complex_I;
 printf ("1.0 + 2.0 * _Complex_I = %.1f%+.1fi\n", creal (z), cimag (z));
 
 // sign of zero may not be preserved
 double complex z2 = 0.0 + -0.0 * _Complex_I;
 printf ("0.0 + -0.0 * _Complex_I = %.1f%+.1fi\n", creal (z2), cimag (z2));
}

Possible output:

1.0 + 2.0 * _Complex_I = 1.0+2.0i
0.0 + -0.0 * _Complex_I = 0.0+0.0i

[edit] References

  • C23 standard (ISO/IEC 9899:2024):
  • 7.3.1/4 _Complex_I (p: TBD)
  • C17 standard (ISO/IEC 9899:2018):
  • 7.3.1/4 _Complex_I (p: 136)
  • C11 standard (ISO/IEC 9899:2011):
  • 7.3.1/4 _Complex_I (p: 188)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.3.1/2 _Complex_I (p: 170)

[edit] See also

the imaginary unit constant i
(macro constant) [edit]
(C99)
the complex or imaginary unit constant i
(macro constant) [edit]
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/numeric/complex/Complex_I&oldid=147475"

AltStyle によって変換されたページ (->オリジナル) /