Dart for循环示例运行逻辑咨询:i<5条件下为何输出5次内容
Dart for循环运行逻辑说明
首先你对for循环条件的判断逻辑理解完全相反,这是出现疑问的核心原因:Dart(以及绝大多数主流编程语言)的for循环中,后面跟的条件表达式是循环继续执行的条件,只有条件判断结果为true时才会进入循环体,条件为false时直接终止循环,而非你理解的条件满足就停止。
Dart标准三段式for循环的执行顺序是固定的:
- 循环启动时,仅执行一次初始化语句:你给出的代码中就是声明循环变量
i并赋值初始值0 - 每次进入循环体前,先判断条件表达式:这里是
i < 5,结果为真就执行循环体,为假直接跳出循环 - 单次循环体执行完成后,自动执行增量语句
i++,将i的值加1,之后回到条件判断步骤重复执行
对应你给出的代码(注:你贴的代码片段有语法遗漏,条件部分缺少<,补全后可正常运行),逐次执行过程如下:
- 初始化
i = 0,判断0 < 5结果为真,执行循环体打印hello 1,执行i++后i的值变为1 - 判断
1 < 5结果为真,执行循环体打印hello 2,执行i++后i的值变为2 - 判断
2 < 5结果为真,执行循环体打印hello 3,执行i++后i的值变为3 - 判断
3 < 5结果为真,执行循环体打印hello 4,执行i++后i的值变为4 - 判断
4 < 5结果为真,执行循环体打印hello 5,执行i++后i的值变为5 - 判断
5 < 5结果为假,直接终止循环
最终就会输出5次内容,和你得到的运行结果一致。
补全后的正确可运行代码如下:
void main() { for (int i = 0; i < 5; i++) { print('hello ${i + 1}'); } }
内容的提问来源于stack exchange,提问作者Quinton Olson
相关产品推荐
相关产品推荐

