这行代码在 Kilobot 示例中做了什么?

What does this line of code do in Kilobot example?

我一直在尝试一些关于 Kilobots 的例子,尤其是 Synchronization of LEDS。我在示例中遇到过这段代码。

uint8_t offsets[32];

void message_rx(message_t *msg, distance_measurement_t *d) {
    if (modulo_clock > msg->data[0]) {
        if (modulo_clock - msg->data[0] < 16)
            offsets[modulo_clock-msg->data[0]]++;
    } else {
        if (msg->data[0] - modulo_clock > 16)
            offsets[modulo_clock + (32-msg->data[0])]++;
    }
}

我只想知道 offsets[modulo_clock-msg->data[0]]++offsets[modulo_clock + (PERIOD-msg->data[0])]++ 在代码中做了什么,因为我知道它们是数组,但只是对这里的用法感到困惑。

  • offsets 是整数数组
  • modulo_clock - msg->data[0] 是用作数组索引的数字 offsets
  • 通过这个 offsets[modulo_clock - msg->data[0]] 您可以访问 offsets
  • 中的号码
  • 最后 ++ 是增量运算符

所以一起 offsets[modulo_clock-msg->data[0]]++ 只是递增(加 +1)位置 modulo_clock-msg->data[0]offsets 中的数字。

offsets[modulo_clock + (PERIOD-msg->data[0])]++也是如此。