Già; personalmente con l'operatore ? ho preso la pratica di mettere tra parentesi ogni "pezzo" dell'espressione se non è banale, e spesso anche l'intero blocco per andare sul sicuro:
codice:
var = 10 + abs(z+y) * ((obj!=NULL && obj->IsInitialized())?(obj->GetValue()+obj->GetValue2()):1)
; se l'espressione è piuttosto intricata (come in questo caso) anche abbondare con i ritorni a capo non va mai male:
codice:
var = 
    10 + abs(z + y) 
    *
      (
        (obj != NULL && obj->IsInitialized())
            ?
        (obj->GetValue() + obj->GetValue2())
            :
        1
      )
.