【问题标题】:What does this line of code do in Kilobot example?这行代码在 Kilobot 示例中做了什么?
【发布时间】:2017-04-06 21:47:48
【问题描述】:

我一直在尝试一些有关 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-&gt;data[0]]++offsets[modulo_clock + (PERIOD-msg-&gt;data[0])]++ 在代码中做了什么,因为我知道它们是数组,但只是对这里的用法感到困惑。

【问题讨论】:

  • 递增offsets数组元素,其索引在最外层[]内计算。
  • 总体而言,只要msg-&gt;data[0]modulo_clock 足够接近,offsets 数组的一个元素会根据它们的相对值进行选择,并且该元素的值会递增。跨度>

标签: c robotics


【解决方案1】:
  • offsets 是整数数组
  • modulo_clock - msg-&gt;data[0] 是一个数字,用作数组 offsets 的索引
  • 用这个offsets[modulo_clock - msg-&gt;data[0]]你访问offsets中的号码
  • 最后++ 是增量运算符

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

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

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    相关资源
    最近更新 更多