C'est autorisé dans GNU, comme un obscur extension de C
5.7 Conditions avec Omis Opérandes
Le milieu opérande dans une conditionnelle
l'expression peut être omis. Ensuite, si le
le premier opérande est différente de zéro, sa valeur est
la valeur du conditionnel
de l'expression.
Par conséquent, l'expression
x ? : y
a la valeur de x si c'est différent de zéro;
sinon, la valeur de y.
Cet exemple est parfaitement équivalent
pour
x ? x : y
Dans ce cas simple, la capacité de
omettre le milieu opérande n'est pas
particulièrement utile. Quand il devient
utile est le premier opérande n',
ou peut (si c'est une macro argument),
contenir un effet secondaire. Puis en répétant
l'opérande dans le milieu serait
effectuer le côté effet deux fois.
En omettant le milieu opérande utilise le
la valeur déjà calculée sans le
effets indésirables de la re-calculer.
Comme vous pouvez probablement le deviner, en évitant ce qui est recommandé pour des raisons de lisibilité et des raisons de portabilité. Je suis honnêtement surpris de voir une telle grammaire-incompatible extension à C.