Логические и условная операции в C++
Операнды И (&&) и ИЛИ (||) могут иметь арифметический тип или быть указателями.
Операнды в каждой операции могут быть различных типов.
Преобразования типов не производятся, каждый операнд оценивается с точки зрения его эквивалентности нулю (операнд, равный нулю - false, не равный нулю — true).
Результат логической операции: true или false.
Результат операции логическое И имеет значение true если оба операнда true.
Результат операции логическое ИЛИ имеет значение true, если хоть один операнд true.
Логические операции выполняются слева направо.
Если значения первого операнда достаточно, чтобы определить результат операции, второй операнд не вычисляется.
Условная операция ?:
Тернарная, так как у нее три операнда
операнд_1 ? операнд_2 : операнд_3Первый операнд - арифметический тип или указатель. Оценивается по эквивалентности нулю (равный нулю - false, не равный нулю — true).
Правило: Если результат вычисления операнда 1 равен true, то результатом условной операции будет значение второго операнда, иначе — третьего операнда.
Вычисляется всегда либо второй операнд, либо третий. Их тип может различаться. Условная операция - сокращенная форма оператора if.
Пример. Условная операция
#includeРезультат: Наибольшее число: 11int main(){ int a = 11, b = 4, max; max = (b > a) ? b : a; printf("Наибольшее число: %d ", max): return 0; }
Пример. Требуется, чтобы некоторая целая величина увеличивалась на 1, если ее значение не превышает n, а иначе принимала значение 1:
Решение