Se si dispone quanto segue:fa il corto circuito operatore ternario in un modo definito
if (x)
{
y = *x;
}
else
{
y = 0;
}
Poi comportamento è garantito da definire in quanto possiamo solo dereferenziarlo x
se non è 0
Può il stesso dicasi per:
y = (x) ? *x : 0;
Questo sembra funzionare come previsto (anche compilato con -Wpedantic
sul g ++)
È garantito?
Sì - L'operatore ternario è solo zucchero sintattico –
Sì. (Troppo breve per essere pubblicato come risposta). – JSF
Non c'è "cortocircuito" nell'espressione ternaria. E non valuta prematuramente o esegue alcun ramo prima che la condizione sia stata completamente valutata. –