while(variable & 0x08)
我發現這是在一個do while循環中,問題變量在技術上是16位int數組中的第四個索引。 while循環本身不會修改該數組。我發現一個奇怪的C + +語法
老實說,我不確定語法的作用。
while(variable & 0x08)
我發現這是在一個do while循環中,問題變量在技術上是16位int數組中的第四個索引。 while循環本身不會修改該數組。我發現一個奇怪的C + +語法
老實說,我不確定語法的作用。
這真的取決於variable
的類型。發生這種情況是因爲operator&
可能被重載。如果您聲明一個變量some variable;
class some {};
bool operator&(const some&, int) {
return true;
}
,並執行:例如考慮這個代碼
while(variable & 0x08)
你會招致在一個無限循環。
如果variable
是一個整數類型,循環將繼續執行其主體,直到variable
的第四位未設置爲1
。這是因爲0x08
的位表示是:1000
。因此,如果variable
的第四位設置爲0
,bitwise AND將只能返回0
的位表示。
這是無論是在整數類型,variable
,在這種情況下,循環將執行,直到variable
的第四位是0,或者它是一個已經過載operator&
一個類型,在這種情況下,它將運行按位操作直到operator&(T&, int)
(其中T
是variable
的類型)的結果返回0(或者更確切地說,不等於非零條件)。
它運行,直到按位AND的結果爲零。 – OldProgrammer
'variable'有什麼類型? – Shoe
@Jefffrey一個整型,或者它不會編譯。 –