我需要在无限循环中有一个有限数字(0到3)的循环。所以我使用这段代码:
int moveOp = 0;
while (1) {
//some operations with moveOp here
moveOp++;
if(moveOp>3) {
moveOp = 0;
}
}
但也许有一种方法可以使用一种数据类型,增量运算符在没有手写条件的情况下跳转到零?
答案 0 :(得分:2)
这样可行:
moveOp = (moveOp + 1) % N;
答案 1 :(得分:2)
如果您的NUM为2的幂,您也可以使用位域
struct {
unsigned moveOp:2;
}m;
m.moveOp++;
答案 2 :(得分:2)
for(int i = 0; ; i = (i + 1) % 4) {
// your code goes here
}
答案 3 :(得分:1)
我认为Modulus运营商正是您所寻找的。 以下是如何使用它的示例:
int moveOp = 0;
int Num = 4;
while (1) {
++moveOp;
moveOp = moveOp%Num;
}