2013-11-21 318 views
0

有沒有辦法在一個條件語句中寫下面的語句?條件聲明(給出)

a和b同時不等於五。 (一個可以在5到B可以是五人,但A和B不能爲五)

+0

OH - 完全誤讀。 //失敗 – yamafontes

+0

如果(a!= 5 || b!= 5) –

+0

是否不等於5允許? –

回答

1
if(a!=b && (a==5 || b==5)) 
{ 
} 

,並感謝@克里斯

+1

我會發現'a!= b'比'a + b!= 10'更容易理解。加上後者可能會溢出。 – chris

+0

謝謝@chris我接受你的 – sam

3

克里斯指出,你要找的是什麼邏輯異或,其相當於邏輯不等於!=

if ((x == 5) != (y == 5)) 

我會受到誘惑而使用按位異或寫出來,雖然因爲這將是更具可讀性,並立即爲XOR識別:

if (x == 5^y == 5) 

值得注意的是,按位運算符不會短路。這與XOR無關,因爲無論如何都必須對兩個操作數進行評估,但瞭解其他操作可能很重要。

說教警告:在幾乎所有情況下,不要在布爾上下文中使用位運算符有些運營商略有不同的語義,因爲它們不短路可以有一些非常奇怪的疑難雜症的。 )

+2

有一個邏輯XOR。它寫作!=。 – chris

+0

@chris是的,'x!= y'意味着'x^y'。儘管如此,它並沒有推廣到x和y的表達式。你怎麼能用'!='緊湊地表達這裏的預期邏輯?我覺得我現在錯過了一些明顯的東西:)。 – Corbin

+1

它可以被識別爲異或,但它會是'(x == 5)!=(y == 5)''。 – chris

0
if ((a == 5 && b != 5) || (a != 5 && b == 5)) 
{ 
    //expr 
}