'for'的增量表达式没有任何影响

时间:2012-07-30 03:51:54

标签: c++ for-loop compiler-warnings

我有一个班,广场:

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>

然而,它给了我一个警告,说“表示增量表达无效”。这是否意味着我的轮班操作没有发生?

2 个答案:

答案 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