If I write a complex double constant -3.I (as opposed to 0-3.I), what is it supposed to evaluate to? This program:
#include <stdio.h> int main(void) { const __complex double C1 = (-3.I); const __complex double C2 = (0-3.I); printf ("%f %f\n", __real__ C1, __imag__ (C1)); printf ("%f %f\n", __real__ C2, __imag__ (C2)); return 0; } when compiled with gcc-4.1.2 (and mainline) yields: -0.000000 -3.000000 0.000000 -3.000000 Note the sign difference in the real part. When I compile it with g++-4.1.2, I get: compl.c: In function 'int main()': compl.c:5: error: wrong type argument to unary minus Is this supposed to happen or is it a bug in complex number parsing? (Sorry if this is a gcc-help question.) Thanks, --Kaveh