Как выглядит тернарный оператор?
логическое выражение ? выражение 1 : выражение 2
Сравнить это можно с той же конструкцией if..then..else:
Код: Выделить всё
if (логическое выражение) then выражение 1 else выражение 2
Но вся суть тернарного оператора в том, что он может быть использован там где "if" не может присутствовать.
Например, простое применение:
Код: Выделить всё
new x, y;
x = (y == 0) ? 0 : 1
Здесь мы видим, условие - если y равно 0, тогда присвоим x число 0, иначе число 1.
По логике это тоже что:
Код: Выделить всё
new x, y;
if(y == 0) x = 0; else x = 1;
А теперь приведу несколько примеров применения данного оператора:
Код: Выделить всё
max = (a > b) ? a : b;
Получим макс. значение двух переменных.
Код: Выделить всё
SetPlayerColor(playerid, (PlayerInfo[playerid][pAdmin] > 0) ? COLOR_RED : COLOR_WHITE);
Здесь мы в одной строке написали, что игроку будет присвоен красный цвет если он админ выше 0 го уровня, иначе игрок получит белый цвет.
Код: Выделить всё
SetPlayerHealth(playerid, (PlayerInfo[playerid][Vip]) ? 100.0 : 50.0);
Даем игроку 100HP если он VIP, иначе 50.0.
Код: Выделить всё
ini_openFile((isLogged[playerid]) ? ("file1.ini") : ("file2.ini"));
Если игрок залогинился откроем файл1 иначе файл2.
И подобных примеров множество, применять можно во многих задачах. Надеюсь вы найдете этому применение :)
Пример использования:
Например, на конструкции if/else одно выражение может выглядеть вот так:
Код: Выделить всё
if( z > y )
{
x = 5;
}
else
{
x = 3;
}
А вот так это будет выглядеть на тернарном операторе:
Код: Выделить всё
x = ( z > y ) ? 5 : 3;