bool v1, v2;
// ...
編輯:我的困惑深表歉意。正確的說法應該是:
bool v3 = !v1 ? v2 : !v2;
ORIGINAL我問
bool v3 = v1 ? v2 : !v2;
更短?或者:是否有運營商會有相同的結果?
因此,我標記了Anders Abels的答案是正確的,因爲他回答了我最初的問題。我只需要反轉他的答案。
bool v1, v2;
// ...
編輯:我的困惑深表歉意。正確的說法應該是:
bool v3 = !v1 ? v2 : !v2;
ORIGINAL我問
bool v3 = v1 ? v2 : !v2;
更短?或者:是否有運營商會有相同的結果?
因此,我標記了Anders Abels的答案是正確的,因爲他回答了我最初的問題。我只需要反轉他的答案。
可以使用xor
(在^
運營商),這將給true
如果一個操作數,只有一個是true
。它會返回你想要的對面,所以你要否定一切:
!(v1^v2);
我認爲有趣的是,* xor *與*不等於*相同。所以你的表達和'v1 == v2'一樣。 – svick
我覺得v1==v2
應該這樣做。
編輯:
爲更新的問題,這是v1!=v2
,或v1^v2
作爲安德斯說。
簡單而優雅。我休息我的情況:-) –
我認爲'v1!= v2'是最優雅的解決方案。 –
Vlad已經提供了正確的答案。我只是添加一個簡單的表格,可能有助於說明如何解決這些問題。
| v2 = true | v2 = false |
-----------+------------+------------+
v1 = true | false | true |
-----------+------------+------------+
v1 = false | true | false |
-----------+------------+------------+
編輯:該表已更新,以匹配更新的問題。
由於弗拉德已經提出了表達式可以重構爲!=
。爲了澄清,添加了Paagesheses。編譯器不需要它們。
bool v3 = (v1 != v2);
我的錯誤。我沒有寫出正確的問題......他的回答現在已被標記出來。謝謝你的桌子。 – SACO
您能否提供整個聲明不僅條件? – sll