为什么在for循环的括号里定义的变量可以循环读写而while里定义的不行

如下:

int main() 
{ 
    for(int i=1;i>0;) 
    { 
        i--; 
        printf("for hello!\n"); 
    } 
 
    while(int i=1) 
    { 
        i--; 
        printf("while hello!\n"); 
    } 
    return 0; 
}

结果是输出一次 "for hello",无限次 “while hello”

我的疑问是,为什么for循环括号里定义的i,下次循环的时候可以保持递减值,而while循环里定义的i,从输出结果来看,貌似是每次循环都重新定义了一次?

答案

首先你要确定for和while里面的各个字段分别表示什么含义:
for的括号里面分为三个部分,这三个部分用 “;”隔开:
1.表示初始化循环变量,整个for语句只会在第一次进入的时候执行
2.表示判断条件,在每次进入for循环里面之前会执行判断,如果条件为true才会进入for循环;
3.表示增量操作,每次for循环结束的时候都会执行第3部分的语句,这里可以对循环变量做一些增量操作,从而控制循环。

while语句的括号里的内容表示的是判断条件,与for语句括号里面的第2部分一样,在每次进入while循环之前都会执行判断,如果条件为true就进入while循环。

说到这里就容易理解了,你的for语句里面的 i 初始化为 1 ,后来在循环体里面自减了,第二次执行判断的时候条件不成立了,所以只执行了一次。
你的while语句括号里面是一个变量定义的语句,它作为条件判断总是成立的,得到条件为 true ,所以会进入循环体,尽管里面的 i 自减了,但是下次再判断的时候,还是一个变量定义语句,条件依然成立,所以每次都会进入循环体。

转载于:https://my.oschina.net/ypimgt/blog/103060

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值