C++数字之和

use*_*589 1 c++ sum

我的程序有问题,应该将数字从1到70000(1 + 2 + 3 + 4 + ... + 69999 + 70000)相加.我的程序可以将数字总和达到65535而没有问题,但是对于65535以上的任何求和,结果显示负数,这是错误的.任何人都可以向我解释为什么我的程序不能总和65535以上的数字?

这是我的代码:

#include <stdio.h>

void sum(int *s)
{
    *s=0;
    int i=1;
    int n=70000;
    while(i<=n)
    { 
        *s+=i; 
        i++;
    }   
}

main() 
{
    int s;
    sum(&s);

    printf("Suma prirodnih brojeva od 1 do 70000 je: %d\n",s);
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ens 9

你的int溢出了它的能力.

试试很久.最好不签名,因为您不需要负数.