我有一个班,广场:
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
循环在Top侧执行其操作之后,它将再次向左移动,将该位从数字上移开并使其等于0,这小于kLeft,并且循环将结束。 / p>
然而,它给了我一个警告,说“表示增量表达无效”。这是否意味着我的轮班操作没有发生?
答案 0 :(得分:3)
是的,因为第一次尝试时停止条件为假:
Square::Side side = Square::kLeft
呈现
side < Square::kLeft;
假。
也许您的意思是side <= Square::kTop
或类似的side <<= 1
。
答案 1 :(得分:3)
您没有将班次的值分配回来。试试这个:
(Square :: Side side = Square :: kLeft; side&lt; Square :: kLeft; side = side&lt;&lt; 1)
或side <<= 1
。
您还需要修复终止条件:
side&lt; = Square.kTop