Из любопытства я начал задаваться вопросом, возможно ли иметь тернарное выражение, которое, если оно оценивает значение false, ничего не делает в ложной ветки.
Т.е. есть способ написать что-то вроде этого:
variable = (someBool) ? i : <do nothing>;
В отличие от:
if (someBool) {
variable = i;
}
Я пробовал ((void)0)
или while(false){};
как no-op, но компилятор ожидает выражения.
UPDATE:
Я понял, что вопрос потерял какой-то смысл, потому что я попытался сделать код проще. Первоначальная идея, которую я имел, состояла в том, чтобы инициализировать статическую переменную var с помощью trernary - используя статический var как условие:
static int var = (var != 0) ? var = 1 : (var already initialized, do nothing);
Это предполагает, что неинициализированные переменные инициализируются на 0, что не всегда верно (или никогда не происходит в релизах, не совсем уверен). Так что, возможно, это гипотетический вопрос.