C ++ / Java:切换布尔语句?

时间:2010-06-18 13:56:34

标签: java c++ boolean toggle

是否有一种简短的方法来切换布尔值?

使用整数,我们可以执行以下操作:

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 个答案:

答案 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类型,只是整数,所以你可以使用整数运算符来完成这样的快捷方式。