2

我有一堂课,Square:

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

在我的一个函数中,我有一个for循环,该循环执行涉及 a 的每一边的操作Square。我是这样设计的:

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

首先,循环将在左侧工作,然后将一侧向左移动一个位置,使一侧等于底侧。循环在 Top 侧执行完for操作后,它会再次向左移动,将数字推开并使其等于 0,小于 kLeft,循环将结束。

但是,它给了我一个警告,上面写着“对于增量表达式没有效果”。这是否意味着我的轮班操作没有发生?

4

2 回答 2

3

是的,因为第一次尝试时停止条件为假:

Square::Side side = Square::kLeft

渲染

side < Square::kLeft;

错误的。

也许你的意思是side <= Square::kTop或类似的 and side <<= 1

于 2012-07-30T03:53:22.767 回答
3

您没有将班次的值重新分配给一侧。试试这个:

(Square::Side side = Square::kLeft; side < Square::kLeft; side = side << 1)

side <<= 1

您还需要修复终止条件:

边 <= Square.kTop

于 2012-07-30T03:54:54.163 回答