C中'for'循环中的两个变量

liv*_*hak 7 c for-loop

我正在编写一些代码,我需要在for循环中使用两个变量.以下代码似乎没问题吗?

它确实给了我预期的结果.

for (loop_1 = offset,loop_2 = (offset + 2); loop_1 >= (offset - 190),loop_2 <= (190 + offset + 2); loop_1--,loop_2++)
{
    if (  (*(uint8_t*)(in_payload + loop_1) == get_a1_byte(bitslip)) &&
         ((*(uint8_t*)(in_payload + loop_2) == get_a2_byte(bitslip)))
       )
    {
          a1_count++;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个编译器警告说:

file.c:499:73:警告:逗号表达式的左侧操作数无效

这是什么意思?

Mat*_*Mat 26

问题是测试条件:

loop_1 >= (offset - 190),loop_2 <= (190 + offset + 2)
Run Code Online (Sandbox Code Playgroud)

这不会检查两个部分.(嗯,确实如此,但只使用了第二部分的结果.)

将其更改为

(loop_1 >= (offset - 190)) && (loop_2 <= (190 + offset + 2))
Run Code Online (Sandbox Code Playgroud)

如果你想要检查两个条件.


caf*_*caf 17

Mat是正确的,但您应该考虑将代码简化为:

for (i = 0; i <= 190; i++)
{
    uint8_t *pl1 = (uint8_t *)(in_payload + offset - i);
    uint8_t *pl2 = (uint8_t *)(in_payload + offset + i + 2);

    if (*pl1 == get_a1_byte(bitslip) && *pl2 == get_a2_byte(bitslip))
    {
        a1_count++;
    }
}
Run Code Online (Sandbox Code Playgroud)

(你显然可以提升in_payload + offset循环计算,但优化者几乎肯定会为你做这个).