一个求和的程序,运行结果总是比正确答案大1,是编译器的问题吗?

c primer plus第六章第一个程序,我按书上的程序往电脑里输入的,最终运行的结果总是比正确答案大1。我用的是DEVC++

//summing.c --根据用户键入的整数求和

#include <stdio.h>
int main(void)
{
    long num;
    long sum = 0L;
    int status;
    
    printf("Please enter an integer to be summed ");
    printf("(q to quit): ");
    status = scanf("%ld", &sum);
    while (status == 1)
    {
        sum = sum + num;
        printf("Please enter next integer (q to quit): ");
        status = scanf("%ld",&num);
        
    }
    printf("Those integers sum to %ld.\n",sum);
    
    return 0;
}
 

初始化一下num=0 或者将第一个scanf里的&sum改为&num

#include <stdio.h>
int main(void)
{
    long num;
    long sum = 0L;
    int status;
    
    printf("Please enter an integer to be summed ");
    printf("(q to quit): ");
    status = scanf("%ld", &num);//这里是num,不是sum
    while (status == 1)
    {
        sum = sum + num;
        printf("Please enter next integer (q to quit): ");
        status = scanf("%ld",&num);
        
    }
    printf("Those integers sum to %ld.\n",sum);
    
    return 0;
}