int test=2, a = 55, b = 22;
(test==1) ? a = 1 : b = 2;
printf("%d %d\n", a,

;
В голоМ С некорректна (С99) тоже, как я понимаю вопрос приоритетов (они в одной строчке)
Но в С++ проходит без единой запинки, да еще и выдает вполне ожидаемые результаты. Это что за сюрприз на старости лет ?
Похоже тут отличие присвоения от иницииализации. Хорошая тема валить на собеседовании