为什么我使用无限for循环得到添加无符号整数的错误结果?

时间:2014-03-17 08:05:23

标签: c

这是我的书中的代码(关于无限循环),但是当我运行程序并添加ie 55时,我输入1退出,我得到12

int main()
{
    unsigned int num;
    unsigned long sum;

    for ( ; ; )
    {
        printf("Enter a number from 2-65535 or enter 1 to end a program.\n");
        scanf("%u", &num);
        if(num == 1)
            break;
        else
            sum+=num;

    }
    printf("Total sum: %lu.\n", sum);
    return 0;
}

有人能告诉我我做错了什么并修正了错误吗?

3 个答案:

答案 0 :(得分:3)

sum未初始化。它具有不确定值。

答案 1 :(得分:2)

您应该在程序顶部初始化sum。它可能是任何东西!

答案 2 :(得分:1)

您尚未初始化变量sum。它的值是不确定

6.7.9初始化:

  

如果没有显式初始化具有自动存储持续时间的对象,则其值为   不定。

将其初始化为0

unsigned long sum = 0;