for语句执行顺序,这两句有什么区别,为何结果不一样?

为什么第一个会少计算了100

#include
using namespace std;
void main()
{
int sum = 0;
int i;
for (i = 1;i <= 100; sum += i,i++)
cout << "sum=" << sum << endl;
}

#include
using namespace std;
void main()
{
int sum = 0;
int i;
for (i = 1;i <= 100; i++)
sum += i;
cout << "sum=" << sum << endl;
}

for拆开步骤是
step1:初始化i=1;
step2:判断i<=100
step3:执行for内容
step4:调整sum+=i,i++
所以
for (i = 1;i <= 100; sum += i,i++)
cout << "sum=" << sum << endl;
会先执行cout << "sum=" << sum << endl,再sum+=i,再i++
循环100次

for (i = 1;i <= 100; i++)
sum += i;
cout << "sum=" << sum << endl;
会先执行sum+=i,循环100次后,再执行一次cout << "sum=" << sum << endl;
结果肯定不一样了

建议写的时候,把花括号打上,这样的风格除了显示自己写乱序代码牛掰以外,没有任何用处

其实第一个程序,sum最终是加了100; 只是没打印出来而已,你可以在底下再加一行,就可以看到了

    int sum = 0;
    int i;
    for (i = 1;i <= 100; sum += i,i++)
        cout << "sum=" << sum << endl;
    cout << "sum=" << sum  << endl;
    return 0;

你在for后加上花括号是不是明白点了,100次的执行了输出语句,101次跳出,另一个是101次的时候跳出i已经加了输出语句在外边执行了一遍