是否有一种简短的方法来切换布尔值?
使用整数,我们可以执行以下操作:
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?
答案 0 :(得分:25)
没有这样的操作符,但这有点短:booleanWithAVeryLongName ^= true;
答案 1 :(得分:6)
一个简单的函数(在C ++中):
void toggle (bool& value) {value = !value;}
然后你就像使用它一样:
bool booleanWithAVeryLongName = true;
toggle(booleanWithAVeryLongName);
答案 2 :(得分:2)
我认为更好的类比是你正在寻找一元operator ++
的布尔等价物,我很确定它不存在。
我从未真正考虑过这个问题,但我猜你总是可以将其与TROR结合起来:
booleanWithAVeryLongName ^= TRUE;
不确定它会节省多少,但读起来有点痛苦。
答案 3 :(得分:0)
不完全是这样,但在C / C ++中,存在具有赋值的按位AND / OR运算符。
对于表达式之间的逻辑ANDS / OR,我认为没有。
然而,在C中你没有真正的bool类型,只是整数,所以你可以使用整数运算符来完成这样的快捷方式。