我正在编写一些代码,我需要在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循环计算,但优化者几乎肯定会为你做这个).