Тернарник внутри блока if - порядок операций C#
Не могу понять порядок выполнения операций в следующем коде
var a = true;
var b = true;
var c = true;
if (a == true
|| b == true
|| c ? false : true)
{
// Сюда не попадаем
var q = 10;
Console.WriteLine(q);
}
Если завернуть тернарник в скобки (c ? false : true), то тогда попадаем внутрь блока if. Разве тернарный оператор не считается за единую операцию? И если он таким не является, то всё равно не укладывается в голове почему игнорируются остальные сравнения?
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Условный тернарный оператор имеет почти самый низкий приоритет, поэтому сначала выполняется логическое ИЛИ, а потом уже результат используется в тернарнике, примерно так:
if ( (a == true || b == true || c)
? false : true)
Скобки вокруг тернарного оператора помогают реализовать именно ту логику, которую вы хотите.
P.S. a == true не надо писать, достаточно просто использовать a