#include<stdio.h>
void main(){
int i;
int counter=0;
for(i=1;i<=20;i=i*2-2){
printf("%d",i); //输出结果陷入了2的死循环,这是为什么?
}
}
这时引入了
counter(计数器
)和
break(打破循环)进行检查,看看输出的前几个数是否是2
#include<stdio.h>//程序2
void main(){
int i;
int counter=0;
for(i=1;i<=20;i=i*2-2){
printf("%d",i);
counter=counter+1; //counter--计数器
if(counter>100)
break; //break--打破循环
}
}
程序2的输出结果为:1 0 -2 -6 -14 -30 -62 -126 -254 -510 -1022 -2046 -4094 -8190 -16382 -32766 -65534 -131070 -262142 -524286 -1048574 -2097150 -4194302 -8388606 -16777214 -33554430 -67108862 -134217726 -268435454 -536870910 -1073741822 -2147483646 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
----------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
这是因为:在输出
-2147483646后循环时,
-2147483646*2=2,并将2赋值给i,之后计算机继续进行运算i=i*2-2,持续输出2