C语言循环累加:语句顺序和初始值的影响
以下四个程序展示了 C 语言中循环语句顺序和初始值对累加结果的影响:
int I = 0; int sum = 0; while (I <= 5) { I = I++; sum = sum + I; printf('%d%d, ', &i, &sum); }int I = 0; int sum = 0; while (I <= 5) { sum = sum + I; I = I++; printf('%d%d, ', &i, &sum); }int I = 1; int sum = 0; while (I <= 5) { I = I++; sum = sum + I; printf('%d%d, ', &i, &sum); }int I = 1; int sum = 0; while (I <= 5) { sum = sum + I; I = I++; printf('%d%d, ', &i, &sum); }
结果:
这四个程序的结果都是:1 2 3 4 5 6
分析:
- 
循环变量赋初值为 0 或 1 时,不需要改变 while 循环条件的数值。 这是因为无论初始值为 0 还是 1,循环条件
I <= 5都可以保证循环执行 6 次,从而实现对 1 到 5 的累加。 - 
交换语句顺序会导致 5 的累加得数不一样。 在第一个和第三个程序中,
I = I++;这一行代码会导致程序错误,因为I++返回的是I的旧值,然后才将I自增,所以sum = sum + I;会使用到自增前的I的值,导致最终的结果不正确。 
结论:
在编写循环语句时,需要注意语句顺序和变量初始值的影响。为了避免错误,建议在循环体中避免使用 I = I++; 这种表达式,而应该使用 I++ 或 ++I 来实现自增。
原文地址: https://www.cveoy.top/t/topic/p92R 著作权归作者所有。请勿转载和采集!