C++问题,求大神解答,急

#include
using namespace std;
int main()
{int sum=1;

for(int sum=1,i=0;i<4;i++,sum++)
{
for(int j=0;j<i;j++)
sum+=1;}
cout<<sum<<endl;

}
这个答案等于1

#include

using namespace std;

int main()

{int sum=1;

for(int i=0;i<4;i++,sum++)

{

for(int j=0;j<i;j++)

sum+=1;}

cout<<sum<<endl;

}
这个答案等于7

为什么在for 语句里面定义sum会出现问题

第一个程序、应该是生命周期的问题、for循环内的sum结束后死亡、所以打印的是外部的sum

你的for循环上面那一行已经定义了int sum=1;这时你的for只需要这样写 for( ; i=0;i<4;i++,sum++){} 就可以了.

只是来围观,啦啦啦啦啦了

1.前者等于1,输出的是main函数定义的sum,循环中定义的sum在输出的时候已经过期了。
2.后者的sum就是正常技术算输出了。

你第一个程序已经出错了,可能你的编译器没有报错 . 在for外面,sum的生命周期已经结束了

第一个sum作用域在main函数,第二个sum只在该循环内使用。
所以第一个程序输出的是第一个sum=1;
第二个程序输出的是for循环求和后,是7;