c - 在 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 提到的,最好首先检查上限或方便地设置数组的大小
推荐阅读
- android - android studio启动即时关闭应用程序
- java - 在定时器任务中更新静态变量
- javascript - 在 JS 中使用 reduce 创建一个新对象
- html - .val() 不工作并且返回为“on”
- css - 我的 Apache2 服务器处理一些 css 和 js 文件的速度很慢。知道为什么吗?
- r - 使用一系列映射函数提取每个模型的系数
- bash - 递归 bash 脚本:如何在递归调用中修改函数参数
- google-drive-api - 获取和更新谷歌文档版本
- python - 使用 Beautiful Soup 抓取网页时遇到问题
- google-sheets - 谷歌表格 - 查找第一次出现的两个唯一值组合