2012-07-30 60 views
2

我有一個類,方增量表達:關於「爲」沒有任何作用

class Square 
{ 
    typedef enum {kTop = 0x80, kRight = 0x40, kBottom = 0x20, kLeft = 0x10} Side; 
    // Other functions and stuff 
} 

在我的功能之一,我有一個for循環執行涉及每個的側面的操作一個Square。我做了這樣的:

for (Square::Side side = Square::kLeft; side < Square::kLeft; side << 1) // Warning here 
{ 
    // Do stuff 
} 

首先,循環會在左側的工作,然後將一個位置轉移側向左,使得側等於底部。在for循環在頂端執行了其操作後,它將再次向左移位,將該位從數字中移開並使其等於小於kLeft的0,並且循環將結束。

但是,它給了我一個警告,說「增量表達沒有效果」。這是否意味着我的換班沒有發生?

+0

你嘗試運行呢? – djechlin 2013-03-30 14:00:46

回答

3

是這樣做,因爲停止條件是在第一次嘗試錯誤:

Square::Side side = Square::kLeft 

呈現

side < Square::kLeft; 

假。

也許你的意思是side <= Square::kTop或類似的和side <<= 1

+0

我將'side Raphael 2012-07-30 03:58:15

3

您沒有將換檔的值重新分配到一側。嘗試:

(方形::並排=廣場:: kLeft;側<廣場:: kLeft;側=側< < 1)

side <<= 1

您還需要修復您的終止條件:

側< = Square.kTop

+0

謝謝,我完全忘了那麼做 – Raphael 2012-07-30 03:56:43

+0

我覺得Luchian全面打敗了我。 – 2012-07-30 03:57:51

相關問題