Инициализатор в этой декларации
int result = a * b + b + c ? b : a;
эквивалентно
int result = ( a * b + b + c ) ? b : a;
Подвыражение a * b + b + c
оценивается как 20
. Так как он не равен 0, тогда он контекстно преобразуется в true
.
Таким образом, значение условного выражения является вторым подвыражением, равным b
, равным 10.
Я думаю, что вы имеете в виду следующий инициализатор в объявлении
int result = a * b + b + ( c ? b : a );