Другие языки программирования и технологии
Мудрёный код на C++
Разбираюсь в коде на плюсах. Как можно написать в более понятном виде строку? i = (d_a > d_b) ? d_a : d_b; Или объясните на словах
> Или объясните на словах
На словах эта "мудреная премудрость" звучит так: если d_a больше d_b, то присвоить i значение d_a, иначе присвоить i значение d_b
На словах эта "мудреная премудрость" звучит так: если d_a больше d_b, то присвоить i значение d_a, иначе присвоить i значение d_b
Это оператор выдает MAX из двух d_a или d_b .Это единственный оператор с тремя операндами.
В первом операнде оценивается истинность высказывания. В данном примере, больше ли d_a.
Если истина, тогда результатом является второй операнд, иначе - третий.
К примеру
i = (d_a < d_b) ? d_a : d_b;
вернет MIN из двух d_a или d_b
а
i = (d_a < 0) ? -d_a : d_a;
вернет ABS(d_a) -абсолютное значение d_a
В первом операнде оценивается истинность высказывания. В данном примере, больше ли d_a.
Если истина, тогда результатом является второй операнд, иначе - третий.
К примеру
i = (d_a < d_b) ? d_a : d_b;
вернет MIN из двух d_a или d_b
а
i = (d_a < 0) ? -d_a : d_a;
вернет ABS(d_a) -абсолютное значение d_a
Примерно так:
d_b , -____-" , O_o, :DD
А теперь смысл:
Конструкция x?y:z расшифровывается как если (тоесть if() ) x==true, выполнить y, иначе (тоесть блок else) z
В вашем случае:
d_a больше чем d_b ??
Если да (true), тогда вернуть d_a. Тоесть присвоить i= значение d_a.
Иначе (false) присвоить i значение d_b
Конструкция абсолютно верная и применяется вместо if else для простых выражений и упрощения вида.
В if() - else форме это выглядело бы как:
if ( d_a > d_b ){
i=d_a;
}
else{
i=d_b;
}
или
if (d_a>d_b) i=d_a;
else i=d_b;
но всеравно указанный вами вариант самый изящный (если понять и разобраться c "x?y:z" на примерах)
d_b , -____-" , O_o, :DD
А теперь смысл:
Конструкция x?y:z расшифровывается как если (тоесть if() ) x==true, выполнить y, иначе (тоесть блок else) z
В вашем случае:
d_a больше чем d_b ??
Если да (true), тогда вернуть d_a. Тоесть присвоить i= значение d_a.
Иначе (false) присвоить i значение d_b
Конструкция абсолютно верная и применяется вместо if else для простых выражений и упрощения вида.
В if() - else форме это выглядело бы как:
if ( d_a > d_b ){
i=d_a;
}
else{
i=d_b;
}
или
if (d_a>d_b) i=d_a;
else i=d_b;
но всеравно указанный вами вариант самый изящный (если понять и разобраться c "x?y:z" на примерах)
Выбирает БОЛЬШЕЕ из d_a и d_b.