'for'的增量表达式没有任何效果

Increment expression for 'for' doesn't have any effect

本文关键字:任何效 for 表达式      更新时间:2023-10-16

我有一个类,Square:

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,并且循环将结束。

然而,它给了我一个警告,说"对于增量表达式没有效果"。这是否意味着我的轮班操作没有发生?

是的,因为第一次尝试时停止条件为false:
Square::Side side = Square::kLeft

呈现

side < Square::kLeft;

false。

也许你指的是side <= Square::kTop或类似的side <<= 1

您没有将移位的值分配回side。试试这个:

(方形::Side Side=方形::kLeft;Side<方形::k Left;Side=Side<<1)

或CCD_ 6。

您还需要修复您的终止条件:

侧面<=方形.kTop

相关文章: