# 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了,这是为什么?
经过测试,循环次数非常大,也就是循环了超级多次才停止的,这是否与负数补码有关?不明白、求指点!