Q:请问这个循环执行多少次?
int main() { int i = 0; int j = 0; for (i = 0, j = 0; j = 0; i++, j++) { printf("hehe\n"); } return 0; }
运行结果:
Q:为什么没有打印呢?
A:判断部分的 j = 0是赋值,在C语言中0为假,表达式语句为假不进入循环也就不执行了,所以并没有打印。可以拓展出来,如果把 0 改为非 0,意为恒为真,就会变成死循环。
3、do while循环
do while 循环语法
do
循环语句;//循环语句是多条的话用 { } 括起来
while( );
特点:do while 循环中循环语句至少先执行一次。
Q:使用do while 循环打印1~10。
int main() { int i = 1; do { printf("%d ", i); i++; } while (i <= 10); return 0; }
运行结果:
3.1 break在 do while循环中的使用
int main() { int i = 1; do { if (5 == i) break; printf("%d ", i); i++; } while (i <= 10); return 0; }
运行结果:
这里的 break 作用是和 while 循环 for 循环一样的。
3.2 continue 在do while 循环中的使用
Q:看这段代码,它的执行结果是什么呢?
int main() { int i = 1; do { if (5 == i) continue; printf("%d ", i); i++; } while (i <= 10); return 0; }
运行结果:
打印出来是1 2 3 4死循环,这里的 do while 循环与 while 循环打印的结果是一样的。
do while 循环中的continue和 while 循环里的是作用是一样的,都是跳过本次循环的后面部分,进入到下一次的循环中去。
Q:改进后的这段代码,它的执行结果是什么呢?
int main() { int i = 1; do { i++; if (5 == i) continue; printf("%d ", i); } while (i <= 10); return 0; }
这里是将 i++ 放在continue 之前
运行结果:
这里的原因是和while中的第二种 continue 用法一致。
4、goto语句
C语言中提供了可以随意滥用的goto语句和标记跳转的标号。
从理论上goto语句是没有必要的,因为没有goto语句也可以很容易写出代码。但是某些场景下goto语句还是用得着的,最常见的用法是终止程序在某些深度嵌套的结构的处理过程。
例如:一次跳出两层或多层循环。因为多层循环的情况 break 是做不到的,只能跳出最内层的循环回到上一层循环。
goto语句真正适合的场景如下:
for(……)
for(……)
{
for(……)
{
if(disaster)
goto error;
}
}
……
error:
if(disaster)
// 处理错误情况
goto语句语法:
again://标签
语句;
go to again;//again是标签,标签可以是任何东西,这样写出来就是死循环。
Q:如何使用goto语句实现一个关机程序?
这是一个小的整蛊,小玩笑(玩时应谨慎,要不会被KO,哈哈哈哈)
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { system("shutdown -s -t 60");//设定一分钟关机 again: printf("请注意,你的电脑将在一分钟后关机,请输入“我是猪”,便可取消关机\n"); char arr[20] = { 0 }; scanf("%s", arr); if (strcmp(arr, "我是猪") == 0) system("shutdown -a"); else goto again; return 0; }
运行结果:
本章完结,由于本人能力有限,如果有大牛看到哪里不对的话请您一定要指出来,谢谢!