C语言提问:为什么下面这串代码输入一个正奇数不是一个死循环?


# include <stdio.h>

int main(void)
{
    int n, t=-1, s=0;
    
    scanf("%d", &n);   //输入3 
    do
    {
        s += t;
        t -= 2;
    }while(t != n);
    printf("%d %d", s, t);  //输出-4, 3
    
    return 0;
}

从代码上看,t的初始值是负数,后面t也是一直-1,那么t理论上应该一直是负数,也是t不应该会和一个正数n相等,那么循环就不会停止,但是这里为什么输入的n为一个正奇数的时候循环仍会停止、且输出结果显示循环后t==n了,这是为什么?
经过测试,循环次数非常大,也就是循环了超级多次才停止的,这是否与负数补码有关?不明白、求指点!