int main()
{
int a=0;
while(a<=100)
{
a=a++;
printf("%d",a);}
return 0;
} 采纳有报酬。 a的值不是已经自增一了吗。怎么进入死循环了?
因为这是后置加加,后置加加的实现原理是用一个临时值记录当前值,然后把当前值加1,再返回临时值!结合你这道题来说,a=a++,内部会这样运行:假设一开始循环,a=0,右边a++会首先用一个临时值tmp记录下a的值,也就是tmp为0,然后右侧a=a+1=1;右侧a此时的值为1。但是,关键的地方来了,是已经更新的a(a等于1)给左侧a赋值还是tmp(tmp等于0)给左侧a赋值呢?很明显,根据后置加加的原理,返回值是那个临时值,此处为tmp,所以左侧a=tmp=0。也就是是循环体内部,每次a从0变为1再变为0,所以此处while就是死循环!
想知道哪个编译器下死循环,这不会死循环吧,这个程序打印出来的是0~101的数字