я, конечно, прошу прощения, но привык иметь по всем вопросам свое мнение и вот никак не могу удержаться, чтобы в очередной раз его не высказать: какую траву надо было курить, чтобы сделать стандартом такую кучу противоречий?!

язык Си, имхо, типичный пример того, как не надо делать языки программирования! в язык намеренно введено огромное количество способов сделать одно и то же, но всякий раз с разными побочными эффектами, а чтобы эти эффекты как-то устаканить, введено огромное количество разных оговорочек... в итоге никакой логики в ее естественном понимании применить невозможно: только привыкнешь, что какое-то действо делается вот так вот, как обнаруживаешь, что почти такое же категорически нельзя делать аналогично! зачем все это?!
имхо, в очередной раз повторюсь: язык Си - это кафтан, сшитый
стальным тросом стандарта из кусочков всевозможных материй - от дерюги до тончайшего шелка. а все потому, что хотелось все и сразу...
WiseLord писал(а): в таких ситуациях лучше всё же скобками пользоваться
я, конечно, и тут с собственным пониманием снова вылезу.. имхо, единственное правило, которое логично помогает справиться с Си, заключается в том, что не надо даже знать про множество вариантов извращений, которые позволяет делать Си из кода, а следует придерживаться минимального набора возможностей (см. бритва Оккама). касательно тернарного оператора это выливается в то, что я говорил ранее: его назначение - возвращать одно из двух значений, поэтому использовать в нем операнды, для которых возврат значения является
побочным эффектом, не надо.
а про скобки согласен: в Си их много не бывает.