在循环中递增变量(模数)
Incrementing a variable in a cycle (modulo)
我希望在激活一个函数(称之为update
).我已经设法得到 1, 2, 0, 1, 2, 0, … 通过做:
var x = 0;
function update() {
x = ++x % 3;
}
然后我尝试了 post-increment 运算符,而 x
的值仍然是 0:
var x = 0;
function update() {
x = x++ % 3;
}
然后这段代码我越想越糊涂。我认为首先完成 0 modulo 3,然后将(0)分配给 x
,但是 x
不会递增到 1 吗? (似乎不是,但这不是我想要的——我希望模式从 0 开始。有人能解释一下这段代码是怎么回事以及如何实现从 0 开始的模式吗?
你的第二个代码示例就是这样做的
- 存储 x 的旧值
- 增量 x
- 将 x 的旧值乘以 3 取模
- 将 modulus 的结果存储在 x
中
如果您这样调用,您的第一个代码应该会给出正确的解决方案:
look_at_value()
update()
look_at_value()
update()
...
如果要在查看值之前调用更新,则需要初始化x = -1
(或2mod3)
更清晰的代码是:
function update() {
x = (x+1) % 3;
}
我希望在激活一个函数(称之为update
).我已经设法得到 1, 2, 0, 1, 2, 0, … 通过做:
var x = 0;
function update() {
x = ++x % 3;
}
然后我尝试了 post-increment 运算符,而 x
的值仍然是 0:
var x = 0;
function update() {
x = x++ % 3;
}
然后这段代码我越想越糊涂。我认为首先完成 0 modulo 3,然后将(0)分配给 x
,但是 x
不会递增到 1 吗? (似乎不是,但这不是我想要的——我希望模式从 0 开始。有人能解释一下这段代码是怎么回事以及如何实现从 0 开始的模式吗?
你的第二个代码示例就是这样做的
- 存储 x 的旧值
- 增量 x
- 将 x 的旧值乘以 3 取模
- 将 modulus 的结果存储在 x 中
如果您这样调用,您的第一个代码应该会给出正确的解决方案:
look_at_value()
update()
look_at_value()
update()
...
如果要在查看值之前调用更新,则需要初始化x = -1
(或2mod3)
更清晰的代码是:
function update() {
x = (x+1) % 3;
}