Условный оператор используется как часть выражения .Так что
x ? y : z
является выражением.Вы можете использовать его везде, где требуется выражение.Однако
if (some_condition) some_action;
является оператором , и, вообще говоря, выражения и операторы не являются взаимозаменяемыми.Так что, если вы пытаетесь избавиться от оператора if
, это невозможно сделать с помощью ?:
С другой стороны, some_condition
является (логическим) выражением, поэтому вы может записать:
if (x ? y : z) some_action;
, если x, y, z сами являются логическими подвыражениями.Таким образом, в исходных терминах это допустимо:
if (!again ? true : false)
break;
Но это избыточно и сокращается до
if (!again)
break;
, поэтому при написании этого с использованием оператора ?:
есть отрицательное значение.