我有两个不同大小的缓冲区,我需要得到第三个缓冲区,它等于两个缓冲区的总和。
我就是这样做的(我知道这是错误的)
for (i = 0; i < num; i += c){
for (i2 = 0; i2 < num2; i2 += c2){
printf("%d ",(buf[i]+buf2[i2])/2);
}
}
我不想完成 i2 循环然后将 i 迭代 1,我想让两个 for 循环同时工作但我不知道该怎么做,因为 num2>num 所以如果我使用像这样单例:
`for (i = 0, i2=0; i < num, i2 < num2; i+=c, i2+=c)`
我认为这行不通。
我想过使用上面写的代码并添加类似的东西:当 i = num 时让 buf[i] 变得等于 0。
提前致谢。
最佳答案
您可以迭代直到到达较小数组的末尾,然后继续前进以获得较大数组:
int i;
int lower = num > num2 ? num2 : num;
int upper = num > num2 ? num : num2;
int buf3[upper];
for (i = 0; i < lower; ++i) {
buf3[i] = buf[i] + buf2[i];
}
for (i; i < upper; ++i) {
if (upper == num2) {
buf3[i] = buf2[i];
}
else {
buf3[i] = buf[i];
}
}
关于c - for循环中两个缓冲区的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38265057/