3.2.3 for语句的循环控制变量
建议:
1. 不可在for 循环体内修改循环变量,防止for 循环失去控制。
#include<stdio.h> int main() { int i = 0; for (i = 1; i < 5; i++) { printf("%d ", i); i = 1; } return 0; }
输出:1 2 2 2陷入2的死循环,
2. 建议 for 语句的循环控制变量的取值采用 “ 前闭后开区间 ” 写法。
// 前闭后开的写法
for ( i = 0 ; i < 10 ; i ++ )
两边都是闭区间
for ( i = 0 ; i <= 9 ; i ++ )
3.2.4 一些for循环的变种
//代码1 #include<stdio.h> int main() { for (; ; ) { printf("hehe\n"); } return 0; }
输出:hehe的死循环
for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问 题。
省略掉判断部分,判断就恒为真,循环就死循环
#include<stdio.h> int main() { int i = 0; int j = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("hehe\n"); } } return 0; }
输出:9次hehe(外层循环一次内层循环3次)
//代码3 #include<stdio.h> int main() { int i = 0; int j = 0; for (i = 0; i < 3; i++) { for (; j < 3; j++) { printf("hehe\n"); } } return 0; }
这里我们省略了内层循环的变量初始化部分,输出是多呢?
输出:3次hehe
//代码4-使用多余一个变量控制循环 #include<stdio.h> int main() { int i = 0; int j = 0; for (i = 0, j = 0; i < 2 && j < 5; i++, j++) { printf("hehe\n"); } return 0; }
输出:两次hehe
3.3 do......while循环
3.3.1 do......while语句的语法
do
循环语句;
while(表达式);
注:while(表达式);后有‘;’
3.3.2执行流程
3.3.3do......while的特点
先执行,在判断——循环至少执行一次,使用的场景有限,所以不常用
#include<stdio.h> int main() { int i = 0; do { i++; printf("%d ", i); }while (i < 10); return 0; }
3.3.4break和continue在do...while的作用和while一样
#include<stdio.h> int main() { int i = 0; do { i++; if(5==i) { continue; } printf("%d ", i); }while (i < 10); return 0; }