我可以写
吗?bool v1, v2;
// ...
编辑:我很抱歉这些混乱。正确的陈述应该是:
bool v3 = !v1 ? v2 : !v2;
ORIGINAL我要求
bool v3 = v1 ? v2 : !v2;
更短?或者:是否有一个具有相同结果的运算符?
因此我将Anders Abels的回答标记为正确,因为他回答了我的初步问题。我只需要反驳他的答案。
答案 0 :(得分:11)
我认为v1==v2
应该这样做。
编辑:
对于更新后的问题,Anders说这是v1!=v2
或v1^v2
。
答案 1 :(得分:4)
| v2 = true | v2 = false |
-----------+------------+------------+
v1 = true | false | true |
-----------+------------+------------+
v1 = false | true | false |
-----------+------------+------------+
编辑:该表已更新以匹配更新的问题。
正如弗拉德已经提到的那样,表达式可以重构为!=
。 Parantheses补充说明。编译器不需要它们。
bool v3 = (v1 != v2);
答案 2 :(得分:2)
您可以使用xor
(^
运算符),如果只有一个操作数为true
,则会true
。它将返回与你想要的相反的东西,所以你必须否定一切:
!(v1 ^ v2);