#define M0(x) (x)*(x)<4.0?0.0:1.0 char pixels[] = {M0(0.0), M0(1), M0(2.0f)}; /* tests below should evaluate to 2. */ char test_neg = { (-0.) ? 1. : 2. }; char test_ge = { ((-1.) >= 0.) ? 1. : 2. }; char test_cast[] = { 1 >= (0?1U:(-1)) ? 1. : 2., ((double)1) >= (0?1U:(-1)) ? 1. : 2. }; double a = 2 >= 5 ? 5 ? (long)0 || 0 ? 0. >= 0 ?: 0 : 2 : 5 : 0; extern int f(void); /* no call should be evaluated. */ char no_call[] = { 1 ? 1 : f(), 0?f():2 };