%操作后的奇数负数

Pig*_*Pig 2 c

所以我有类似的东西,

int main()
{
    int a[10];
    int i=0;
    int n=10000000000;
    while (n!=0)
    {
        a[i++]=n%10;
        printf("we have n  is %d\n", n);
        printf("we have n mod 10 is %d\n", n%10);
        n/=10;
        printf("we have%d\n", a[i]);
    }
Run Code Online (Sandbox Code Playgroud)

不知何故,当n mod 10为'0'时,我总是会得到一个负数,有人可以告诉我为什么吗?

Moh*_*mel 11

int太小,无法容纳这个数字.您正在获得溢出,导致n实际上是负数,因此您获得模运算的负值.