Proszę o wytłumaczenie poniższego przykładu. Po skompilowaniu otrzymuje wynik u=2.000000. Znam pojęcie operatora trójargumentowego oraz przesunięcia bitowego, jednak jak sama próbuje to liczyć to wynik zawsze wychodzi różny od 2.000000.
int main
{
double u = 0xBADCAB1E ? 1<<1 : 0xDEADCODE
printf("u=%lf\n", u)
}