目录
语法结构
for(表达式1;表达式2;表达式3)
循环语句;//不加大括号,只能控制一条语句,若要控制多条语句,需要加{}
表达式1:初始化部分,用于初始化循环变量
表达式2:条件判断部分,用于判断循环终止时刻
表达式3:调整部分,用于循环条件的调整
这种结构可以有效解决用while实现循环时,初始化、判断和调整之间因为语句多远远隔开的情况
for 中的 break
int main() { int i = 0; for (i = 1; i <= 10; i++) { if (5 == i) break; printf("%d", i); } return 0; }
运行结果为:1234
foe中的break直接跳出循环
F10:单步执行(逐过程)
F11:单步执行(逐语句),遇到自定函数,如果想进入函数,可以按F11
for 中的 break
int main() { int i = 0; for (i = 1; i <= 10; i++) { if (5 == i) continue; printf("%d", i); } return 0; }
运行结果为:1234678910
for循环中的continue跳过其后的代码,去向调整语句,即表达式3,故导致输出没有5
【while循环中的continue直接跳去判断部分】
良好编程习惯
- 不可在for循环体内修改循环变量,防止for循环失去控制
- 建议for语句的循环控制变量的取值采用“前闭后开区间”写法
for循环的变种情况
初始化、判断、调整都省略的情况
可以省略,且判断部分只要省略,默认恒为正
int main() { for (;;) { printf("hello\n"); } return 0; }
运行结果:一直输出hello,无终止
int main() { int i = 0; int j = 0; for (;i<10;i++) { for (; j < 10; j++) { printf("hello\n"); } } return 0; }
运行结果:输出10次hello
事实上程序运行了100次,尽量不要省略
复杂写法
int main() { int x, y; for (x = 0, y = 0; x < 2 && y < 5; ++x, y++) { printf("hi\n"); } return 0; }
运行结果打印2次hi
可以运行,但尽量避免上述写法
请大家多多批评指教!