C语言for 关键字
Posted 謓泽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言for 关键字相关的知识,希望对你有一定的参考价值。
🚩WRITE IN FRONT🚩
- 🔎介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四"🔎
- 🏅荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星TOP100|TOP63、阿里云专家博主、掘金优秀创作者、全网粉丝量5w+、全网访问量70w+🏅
- 🆔本文章内容由 謓泽 原创 如需相关转载还请通知博主⚠
- 📝个人主页:謓泽的博客📃
- 📣专栏系列:【C语言】关键字📃
- 🎁点赞👍+ 收藏⭐️+ 留言📝
⑩④ for ⇿ 循环「灵活」
⒈描述⇢循环允许您编写一个执行指定次数的循环控制结构,在循环语句当中for语句是应用最灵活的。
⒉定义⇢for(循环变量赋初值表达式1;循环条件表达式2;循环变量表达式3)‘\\n’语句块;
当执行到for语句的时,程序首先计算第一个表达值,接着判定第二个表达式的值。如果第二个表达式为真,程序就执行语句块的内容,当执行完语句块的内容回到表达式当中。接着并计算第三个表达式,然后检验判定第二个表达式是否为真,为真执行循环;如此反复,直到第二个表达式的值为假,则退出循环。
⒊注意⇢for循环嵌套尽量三层即可,太多可能会懵。
🕹拓展知识点如下👇
『三种循环结构,分别是 do...while、while、for』
对于任何一种循环的时候一定是要有循环当中的判定条件的[注→死循环除外]
说明🥰一般来说正常的循环都要有④部分组成。
⒈循环条件初始化整形变量。
⒉while括号里面的表达式也就是循环判定。
⒊代码块当中执行的语句,例:输出printf()打印语句。
⒋循环条件更新,因为总有一次我们要退出循环[注→死循环除外]
🍎注意⇢对于for循环来说在它的循环表达式有③个而while和do...while只有①个同时在循环当中也是for循环用的最多了,因为它的语法结构是很紧凑的。
如下代码所示👇
#include<stdio.h> int main(void) int i = 0; int sum = 0; for (i = 1; i <= 100; i++) sum = sum + i; printf("sum = %d\\n",sum); return 0;
运行结果🖊
sum = 5050
✔代码说明解析
执行到 for 语句时,先给 i 赋初值 1,判断 i<=100 是否成立;因为此时 i=1,i<=100 成立,所以执行循环体。循环体执行结束后(sum的值为1)再计算 i++。
第二次循环时,i 的值为2,i<=100成立,继续执行循环体。循环体执行结束后(sum的值为3) 再计算 i++。
重复执行步骤2,直到第101次循环,此时i的值为101,i<=100不成立,所以结束循环。
每条for语句包含3个用分号隔开的表达式。这3个表达式用一对圆括号括起来,其后紧跟循环语句或语句块。
省略表达式1的时候,其后的分号是不能省略的。
有些程序当中省略表达式2(循环条件)的话,可能会导致程序发生死循环。
所谓的 "死循环" 就是:循环条件永远成立,循环会一直进行下去,永不结束。死循环对程序的危害很大,一定要避免。通常都是在for循环上的判断条件上出现"死循环"。
省略表达式3的话(自增自减),就不会再修改表达式2的循环变量了,除非你在语句块中加上了自增自减运算符。
for 循环的嵌套
for 循环嵌套实际上就是在for语句里面再次进行for语句的使用这种叫做循环嵌套。
那么接下来举个代码示例,来讲解下什么是for循环。如下代码所示👇
#include <stdio.h> int main(void) int i, j; for(i=1; i<=4; i++) //外层for循环-第一层 for(j=1; j<=4; j++) //内层for循环-第二层 printf("%-4d", i*j); printf("\\n");//换行 return 0;
运行结果🖍
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16✔代码说明解析
外层 for 第一次循环时,i为1,内层 for 要输出四次 1*j 的值,也就是第一行数据;内层 for 循环结束后执行 printf("\\n"),输出换行符;接着执行外层 for 的 i++ 语句。此时外层 for 的第一次循环才算结束。
外层 for 第二次循环时,i为2,内层 for 要输出四次 2*j 的值,也就是第二行的数据;接下来执行 printf("\\n") 和 i++,外层 for 的第二次循环才算结束。外层 for 第三次、第四次循环以此类推。
通过上述代码我们可以看到,内层 for 每循环一次输出一个数据。而外层 for 每循环一次输出一行数据。
Go语言流程控制
文章目录
一、for
-
Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和C++ 中非常接近
-
for 后面的条件表达式不需要用圆括号
()
括起来,Go语言还进一步考虑到无限循环的场景,让开发者不用写无聊的for(;;)
和do while(1);
,而直接简化为如下的写法sum := 0 for sum++ if sum > 100 break
-
Go语言的 for 循环同样支持 continue 和 break 来控制循环**,但是它提供了一个更高级的 break,可以选择中断哪一个循环**
for i := 0; i < 2; i++ tab: for j := 0; j < 2; j++ if j >= 1 break tab //终端里层循环 fmt.Printf("i:%d,j:%d\\n", i, j) //i:0,j:0 //i:1,j:0
-
将 if 判断整合到 for 中
for i <= 10 i++
二、for range(键值循环)
-
for range 结构是Go语言特有的一种的迭代结构,在许多情况下都非常有用,for range 可以遍历数组、切片、字符串、map 及通道(channel),一般形式为
for key, val := range coll ...
-
val 始终为集合中对应索引的值拷贝
-
一个字符串是 Unicode 编码的字符(或称之为 rune )集合,因此也可以用它来迭代字符串,返回的是ASCII值
str := "ab" for k, v := range str fmt.Printf("k:%d,v:%c\\n", k, v) //k:0,v:a k:1,v:b
-
通过 for range 遍历的返回值有一定的规律
- 数组、切片、字符串返回索引和值
- map 返回键和值
- 通道(channel)只返回通道内的值
三、switch case语句
-
概念
-
Go语言的 switch 要比C语言的更加通用,表达式不需要为常量,甚至不需要为整数,case 按照从上到下的顺序进行求值,直到找到匹配的项,如果 switch 没有表达式,则对 true 进行匹配,因此,可以将 if else-if else 改写成一个 switch
-
Go语言改进了 switch 的语法设计,case 与 case 之间是独立的代码块,不需要通过 break 语句跳出当前 case 代码块以避免执行到下一行
var a = "hello" switch a case "hello": fmt.Println(1) //1 case "world": fmt.Println(2) default: fmt.Println(0)
-
-
使用方法
-
一分支多值,当出现多个 case 要放在一起的时候,可以写成下面这样
var a = "hello" switch a case "world", "hello": fmt.Println(1) //1 default: fmt.Println(0)
-
分支表达式,case 后不仅仅只是常量,还可以和 if 一样添加表达式(这种情况的 switch 后面不再需要跟判断变量)
var r int = 11 switch case r > 10 && r < 20: fmt.Println(r) //11
-
跨越 case 的 fallthrough——兼容C语言的 case 设计(使用此关键字后,case和C中一样可以进行穿透)
var s = "hello" switch case s == "hello": fmt.Println("hello") fallthrough case s != "world": fmt.Println("world") //hello //world
-
四、使用goto退出多层循环
-
传统退出多层循环的方式
flag := false for i := 0; i < 10; i++ for j := 0; j < 10; j++ fmt.Println(i, j) if j == 1 flag = true break if flag break
-
goto退出多层循环
for i := 0; i < 10; i++ for j := 0; j < 10; j++ fmt.Println(i, j) if j == 1 goto breakHere breakHere: //goto标签 fmt.Println("done")
-
不建议在程序之中出现goto语句,跳出多层循环可以采用标签的方法
flag: for i := 0; i < 10; i++ for j := 0; j < 10; j++ fmt.Println(i, j) if j == 1 break flag //结束外层循环,也就是停止循环
以上是关于C语言for 关键字的主要内容,如果未能解决你的问题,请参考以下文章