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