В C++ применяется расширенное толкование истинности. Оно заключается в том, что в условиях можно использовать не только логические, но и числовые выражения. При определении истинности числовых выражений (то есть, при преобразовании числовых значений в логические) ноль преобразуется в значение false, любое ненулевое числовое значение – в значение true.
Логические выражения, в свою очередь, могут использоваться в числовых выражениях. В таких случаях значение false преобразуется в числовое значение 0, а значение true – в числовое значение 1.
3.5. Операция ?
C++ имеет очень мощную тернарную операцию ?, которую можно использовать вместо конструкции if-else все с той же целью – сокращения записи программ. Операция ? имеет следующий вид:
операнд_1 ? операнд_2 : операнд_3
где операнд_1, операнд_2 и операнд_3 – это выражения.
Результатом выполнения операции ? является значение второго или третьего операнда в зависимости от истинности первого. Если логическим значением первого операнда является true, результатом операции является значение второго операнда, если false – третьего. Пример:
y = x >= 9 ? 100 : 200;
3.6. Операция «запятая»
Знак “запятая” часто используется для разделения элементов каких-либо последовательностей (например, при пречислении объявляемых переменных или параметров функции).
Кроме того, в языке определена операция “запятая”, которая связывает (группирует) два или более действий (выражений) и обеспечивает их последовательное выполнение (вычисление). Приоритет операции "запятая" ниже, чем у всех остальных операций C++.
Если операция "запятая" связывает два выражения, первым вычисляется значение ее левого операнда. Значением же операции "запятая" является значение выражения, находящегося справа от нее. Операций "запятая" в выражении может быть несколько, в этом случае они выполняются слева направо, а значением всего выражения будет значение самого правого операнда.