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