c++两道近乎一样的题,求大神解答

intsum=0;for(inti=0,sum=1;i<4;i++)for(intj=0;j<i;j++)sum+=1;cout<<sum;for(inti=0,m=1;... int sum=0;
for(int i=0,sum=1;i<4;i++)
for(int j=0;j<i;j++)
sum+=1;
cout<<sum;

for(int i=0,m=1;i<4;i++)
for(int j=0;j<i;j++)
m+=1;
cout<<m;
第一个结果为0,第二个答案为7,我想知道为什么?请详细解答,谢谢!
展开
 我来答
百度网友69d3db5
2016-12-09 · TA获得超过141个赞
知道小有建树答主
回答量:87
采纳率:0%
帮助的人:103万
展开全部
int sum=0;
for(int i=0,sum=1;i<4;i++)
for(int j=0;j<i;j++)
sum+=1;
cout<<sum;
第一个, 在for循环里面声明的i, sum, j变量均会随着循环的结束而释放, 故而sum=0,值并未改变.

for(int i=0,m=1;i<4;i++)
for(int j=0;j<i;j++)
m+=1;
cout<<m;
第二个的话, 同意for循环里面声明的i, m, j 变量随着循环的结束而释放, 最后cout<<m其中m是未定义的变量, 编译器会报错.
如果改成
int m = 0;
for (int i = 0; i < 4; i ++)
    for (int j = 0; j < i; j ++)
        m += 1;
cout << m;
此时才会输出m=7.
更多追问追答
追问
第二个为什么也不是0呢?两个格式是一样的,用程序操作就是0!
我想问为什么是7,我一直算的是6,请解答,谢谢!
追答
第二个的变量m只在for循环里面定义了, 其生产周期只是for循环内, for循环结束之后它就不存在了. 而在for循环之外的cout<<m 中变量m应该是没有定义的, 编译器会报错. 除非之前你有关于m的定义.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式