Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 这行代码在Kilobot示例中做了什么?_C_Robotics - Fatal编程技术网

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

C 这行代码在Kilobot示例中做了什么?,c,robotics,C,Robotics,我一直在尝试一些关于Kilobot的例子,尤其是。我在示例中遇到了这段代码 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

我一直在尝试一些关于Kilobot的例子,尤其是。我在示例中遇到了这段代码

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])]++;
    }
}
uint8_t偏移量[32];
无效消息接收(消息消息、距离测量){
if(模时钟>消息->数据[0]){
if(模时钟-消息->数据[0]<16)
偏移量[modulo_clock-msg->data[0]]+%;
}否则{
如果(消息->数据[0]-模时钟>16)
偏移量[modulo_clock+(32 msg->data[0])]++;
}
}
我只想知道
偏移量[modulo_clock-msg->data[0]]++
偏移量[modulo_clock+(PERIOD msg->data[0])]++
在代码中做了什么,因为我知道它们是数组,但只是混淆了这里的用法。

    偏移量
    是整数数组
  • modulo_clock-msg->data[0]
    是用作数组
    偏移量的索引的数字
  • 有了这个
    offset[modulo_clock-msg->data[0]]
    您可以在
    offset
  • 最后,
    ++
    是增量运算符
因此,将偏移量[modulo_clock-msg->data[0]+加在一起,只需在位置
modulo_clock-msg->data[0]
中增加(添加+1)偏移量中的数字


这同样适用于
偏移量[modulo_clock+(PERIOD msg->data[0])]++

增加
偏移量
数组元素,其索引是在最外层的
[]
内计算的。总的来说,前提是
msg->data[0]
足够接近
modulo_clock
偏移量
数组中的一个元素是根据它们的相对值选择的,并且该元素的值是递增的。