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

时间:2017-04-06 21:47:48

标签: c robotics

我一直在尝试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])]++在代码中做了什么,因为我知道它们是数组但只是混淆了这里的用法。

1 个答案:

答案 0 :(得分:0)

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

因此,offsets[modulo_clock-msg->data[0]]++只需将offsets中的数字增加(加+1)位置modulo_clock-msg->data[0]

同样适用于offsets[modulo_clock + (PERIOD-msg->data[0])]++