C++ / Java: переключить логическое выражение?
Есть ли короткий способ переключить логическое значение?
С целыми числами мы можем выполнять такие операции:
int i = 4;
i *= 4; // equals 16
/* Which is equivalent to */
i = i * 4;
Так есть ли что-то для логических (например, *=
оператор для целых)?
В C++:
bool booleanWithAVeryLongName = true;
booleanWithAVeryLongName = !booleanWithAVeryLongName;
// Can it shorter?
booleanWithAVeryLongName !=; // Or something?
В Java:
boolean booleanWithAVeryLongName = true;
booleanWithAVeryLongName = !booleanWithAVeryLongName;
// Can it shorter?
booleanWithAVeryLongName !=; // Or something?
4 ответа
Такого оператора нет, но это немного короче: booleanWithAVeryLongName ^= true;
Как насчет простой функции (в C++):
void toggle (bool& value) {value = !value;}
Тогда вы используете это как:
bool booleanWithAVeryLongName = true;
toggle(booleanWithAVeryLongName);
Я думаю, что лучшей аналогией было бы то, что вы ищете логический эквивалент унарного operator ++
Я уверен, что не существует.
Я никогда не задумывался об этом, но, думаю, вы всегда можете сделать XOR с TRUE:
booleanWithAVeryLongName ^= TRUE;
Не уверен, что это сильно экономит и немного трудновато читать.
Не совсем так, но в C/C++ есть операторы для побитовых И / ИЛИ с присваиванием.
Для логических ANDS/OR между выражениями - я не думаю, что есть.
Тем не менее, в C вы на самом деле не имеете тип bool, только целые, поэтому вы можете использовать целочисленные операторы для выполнения таких сочетаний клавиш.