Оператор: используется следующим образом:
condition ? value_if_true : value_if_false
Условие вычисляется истинным или ложным, как логическое выражение. Исходя из оценки булевого условия, все выражение возвращает value_if_true, если условие истинно, а value_if_false в противном случае. Обычно два подвыражения value_if_true и value_if_false должны иметь один и тот же тип, который определяет тип всего выражения. Важность этой проверки типов заключается в наиболее распространенных операторах условного присваивания оператора. При таком использовании она выступает как выражение в правой части оператора присваивания, следующим образом:
variable = condition ? value_if_true : value_if_false .
Это означает, что если условие перед? истинна операция до: двоеточие осуществляется еще один после проводят, а затем полученное значение присваивается I.SO, если вы напишете его в другое, если заявление было бы:
if(thisWay->gens-9 < 1)
{
i=1;
}
else
{
i=thisWay->gens - 9;
}
посмотрите «условный оператор» в своей книге или ссылке –
Вы также можете использовать max (1, thisWay-> gens-9), который дает тот же результат. –