我想知道是否有寫布爾邏輯問題
if (test != 'e' || test != 'd')
我想把它寫這樣
if (test != ('e' || 'd'))
或者這樣的事情,所以我不必重複「更短的方式test!=「
謝謝
我想知道是否有寫布爾邏輯問題
if (test != 'e' || test != 'd')
我想把它寫這樣
if (test != ('e' || 'd'))
或者這樣的事情,所以我不必重複「更短的方式test!=「
謝謝
這就是語言的語法。這裏沒有什麼可以做這件事......如果你不喜歡它的樣子,你可以創建包含測試,然後只需調用該函數將布爾函數:
bool isEOrD(char test)
{
return (test != 'e' || test != 'd')
}
...
if (isEOrD(test))
編輯:還有其他的方法來編寫這段代碼(請參閱這個答案的評論),但你原來的方式可能是最乾淨的方法。
C或C++必須評估你的語言的語法編寫的表達式。表達式('e'或'd')總是返回true,因爲'or-ing'是通過比較永遠不會相同的值的位來完成的。編譯器如何知道你想要什麼,因爲在C/C++中,原始字符只是一個整數的解釋。這就是爲什麼你可以合法地寫:
char aChar = 'a';
// or
char aChar = 0x41; // hex 41 = ascii 'a'
並讓他們都工作。
有編寫短得多的方式:'如果(真)'。不過,你可能想看看*摩根法則*。如果你想知道,如果測試是'D',它不會是'e',如果它是'e',它不會是'D'。因此你的狀況永遠是真的。您可能需要'&&',而不是'||'。 – chris