为什么第一次循环sum的值不是1?而是等于0?为什么?

#include<stdio.h>
int main()
{
int i=0,sum=0;
while(i<=6)
{
sum=sum+i
i++;
}
printf("%d",sum);
return 0;
}

i初始值是0,第一次循环计算sum时,i并没有改变,由于sum 初始也是0,所以第一次循环结束后,sum还是0,i变为1

sum和i的初始值都是0,
sum=sum+i这里第一次的时候是sum = 0+0=0
第二次循环是sum = 0+1=1
第三次循环是sum = 1+2=3
以此类推
计算结果是 0+1+2+3+4+5+6=21

你要先i++;对i加1
再执行sum=sum+i
你题目的解答代码如下:

#include <stdio.h>

int main()
{
    int i = 0, sum = 0;
    while (i <= 6)
    {
        i++;
        sum = sum + i;
        printf("i=%d, sum=%d\n", i, sum);
    }
    printf("%d", sum);
    return 0;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

i不是0吗?

因为第一次循环 sum赋值前的值为0, i的值也为0,所以sum赋值后的值也为0

i=0 sum=0
sum=i+sum=0+0=0

i是0,sum是0,0+0=0