#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;