Я не думал, что это возможно, но, очевидно, в Objective C это разрешено:
int a = b ?: c;
Итак, вы видите, что они здесь делают: они пропускают вторую часть тернарного выражения, так что, если b не равно нулю, b используется как вторая часть.
Это умно, но насколько я знаю, это против K&R C и, вероятно, ANSI C.
Если нет, то я годами упускал из виду ужасно хитрый синтаксический трюк ... увы!
Обновление: Это gcc.