在C中展开For循环

我试图将这个循环展开 2 倍。

for(i=0; i<100; i++){
  x[i] = y[i] + z[i];
  z[i] = y[i] + a[i];
  z[i+1] = y[i] * a[i];
}

我把它展开到:

 for(i=0; i<100; i+=2){
   x[i] = y[i] + z[i];
   x[i+1] = y[i+1] + z[i+1];
   z[i] = y[i] + a[i];
   z[i+1] = y[i] * a[i];
 }

我不确定如何展开 z[i] 的行,因为原始 for 循环已经有 z[i+1]。任何人都可以帮助我理解这一点吗?

回答

我会说简单地添加 i+1 的行。但是您必须确保它们的顺序正确,因此:

 for(i=0; i<100; i+=2){
    x[i] = y[i] + z[i];
    z[i] = y[i] + a[i];
    z[i+1] = y[i] * a[i];

    // next iteration
    if (i+1 < 100) {
          x[i+1] = y[i+1] + z[i+1];
          z[i+1] = y[i+1] + a[i+1];
          z[i+2] = y[i+1] * a[i+1]; 
    }
 }

编辑

为了使其对所有上限(不仅是甚至)安全,您必须在循环中添加一个 if

正如 Adrian Mole 提到的,最好首先检查上限或方便地设置数组的大小


以上是在C中展开For循环的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>