我需要在無限循環中有一個有限數(0到3)的循環。所以我用這個代碼:是否有任何方法來組織「循環」(循環)數字在C + +?
int moveOp = 0;
while (1) {
//some operations with moveOp here
moveOp++;
if(moveOp>3) {
moveOp = 0;
}
}
但也許有有一個數據類型與操作者增加跳轉到零,無需手寫狀態的方法?
我需要在無限循環中有一個有限數(0到3)的循環。所以我用這個代碼:是否有任何方法來組織「循環」(循環)數字在C + +?
int moveOp = 0;
while (1) {
//some operations with moveOp here
moveOp++;
if(moveOp>3) {
moveOp = 0;
}
}
但也許有有一個數據類型與操作者增加跳轉到零,無需手寫狀態的方法?
這會工作:
moveOp = (moveOp + 1) % N;
我覺得Modulus運算符是你在找什麼。 下面是示例,你如何使用它:
int moveOp = 0;
int Num = 4;
while (1) {
++moveOp;
moveOp = moveOp%Num;
}
如果NUM是2電源就可以使用該位域以及
struct {
unsigned moveOp:2;
}m;
m.moveOp++;
for(int i = 0; ; i = (i + 1) % 4) {
// your code goes here
}
出了什麼問題'moveOp =(moveOp + 1)&3'或'%4'? – Leeor
在這種特殊情況下,您可以在每次迭代中執行'moveOp &= 3;'而不是'if'(因此您避免了一個分支,這通常對性能很好),但這不是一個通用方法,可能不是很清楚。 –