我可以比較以下三個變量,而不是做if((x==y)&&(y==z)&&(z=x))
? [如果所有三個變量具有相同的值,則應執行if語句。這些都是布爾]在C中,(x == y == z)的行爲如我所料嗎?
if(debounceATnow == debounceATlast == debounceATlastlast)
{
debounceANew = debounceATnow;
}
else
{
debounceANew = debounceAOld;
}
我可以比較以下三個變量,而不是做if((x==y)&&(y==z)&&(z=x))
? [如果所有三個變量具有相同的值,則應執行if語句。這些都是布爾]在C中,(x == y == z)的行爲如我所料嗎?
if(debounceATnow == debounceATlast == debounceATlastlast)
{
debounceANew = debounceATnow;
}
else
{
debounceANew = debounceAOld;
}
不,不。
x == y
轉換爲int,收率0
或1
,並且將結果進行比較,z
。所以,當且僅當(x is equal to y and z is 1) or (x is not equal to y and z is 0)
你想要做什麼是
if(x == y && x == z)
號從左邊和邏輯結果的平等檢查聯營爲數字相比,x==y==z
將產生真正的,這樣的表達2 == 2 == 1
解析爲(2 == 2) == 1
,反過來給1 == 1
和結果在1
,這可能不是你想要的。
實際上,你可以鍵入像這樣:
int main()
{
const int first = 27,
second = first,
third = second,
fourth = third;
if (!((first & second & third)^fourth))
return 1;
return 0;
}
-1不花錢30秒編寫一個測試程序,找出。 – 2010-12-07 15:10:20
./shrug 我對理解爲什麼不起作用更感興趣。感謝大家。 – Isaac 2010-12-07 15:24:15