I
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header <complex.h>
   | 
||
|   #define I /* unspecified */  | 
(since C99) | |
The I macro expands to either Complex_I or Imaginary_I. If the implementation does not support imaginary types, then the macro always expands to Complex_I.
| This section is incomplete Reason: on what condition imaginary types are supported? The standard seems unclear. Maybe when __STDC_IEC_559_COMPLEX__ is defined?  | 
A program may undefine and perhaps then redefine the imaginary macro.
[edit] See also
|    (C99)  | 
   the complex unit constant i  (macro constant)  | 
|    (C99)  | 
   the imaginary unit constant i  (macro constant)  |