在for语句输出时陷入了死循环,想查看输出的前几个数时可借助的两个工具

#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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值