这行代码在 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])]++
也是如此。
我一直在尝试一些关于 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])]++
也是如此。