a'中的两个变量;对于';C中的循环
我正在编写一些代码,其中需要在a'中的两个变量;对于';C中的循环,c,for-loop,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)) &am
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++;
}
}
对于(loop_1=偏移量,loop_2=(偏移量+2);loop_1>=(偏移量-190),loop_2问题在于测试条件:
loop_1 >= (offset - 190),loop_2 <= (190 + offset + 2)
<代码> Loopy1> =(偏移190),Loopy2=(偏移量190))&(Roopy2Mat)是正确的,但是您应该考虑将代码简化为:
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++;
}
}
for(i=0;i关于你的语义问题,请参阅caf的答案。在开始打字之前,首先尝试直截了当地说出你的想法
一个误解是,您混淆了C的两个不同概念:初始化和赋值。显然,在您的代码中,您在初始化时考虑的是逗号可以完美工作的地方。因此,下次遇到类似问题时,只需使用局部变量。这些是C99中的有效结构,一个无论如何,这是一件好东西
您没有给我们变量的类型,但是假设size\t
您的for
语句如下
for (size_t loop_1 = offset, loop_2 = (offset + 2);
loop_1 >= (offset - 190) && loop_2 <= (190 + offset + 2);
loop_1--, loop_2++)
for(size\u t loop\u 1=偏移量,loop\u 2=(偏移量+2);
loop_1>=(偏移量-190)和&loop_2哇,我盯着这段代码,不管我怎么努力,我都几乎无法理解它在做什么:-)我一直很钦佩C程序员。@DarinDimitrov如果你愿意,我可以用C#重写它,但它将是一样的:-)@xanatos,噢,我真诚地希望你不要用C#写这样的东西。我是说指针?拜托,BCL肯定有内置的东西来实现这一点(不管这段代码试图实现什么)。
for (size_t loop_1 = offset, loop_2 = (offset + 2);
loop_1 >= (offset - 190) && loop_2 <= (190 + offset + 2);
loop_1--, loop_2++)