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