c语言中有没有退出循环的函数,用break语句退出循环……
但如果想在循环中的某个地方跳出循环呢?当然,可以重新调整代码的结构,但更简单的方法是,使用break语句直接跳出循环:break语句可以用 来退出循环语句和switch语句。使用break时看清你在哪里,并不是所有地方都能够使用break。break语句可以直接退出当前循环,跳过循环体中break之后的所有语句。break非常有用,因为它有时是结束循环最简单有效的方法,但应该避免滥用break,因
但如果想在循环中的某个地方跳出循环呢?当然,可以重新调整代码的结构,但更简单的方法是,使用break语句直接跳出循环:


break语句可以用 来退出循环语句和switch语句。
使用break时看清你在哪里,并不是所有地方都能够使用break。
break语句可以直接退出当前循环,跳过循环体中break之后的所有语句。break非常有用,因为它有时是结束循环最简单有效的方法,但应该避免滥用break,因为它们会降低代码的可读性。
……用continue继续循环
如果想跳过循环体的其余部分,然后回到循环的开始,那么continue语句就是你的最佳伴侣:

古墓谜案
break不能从if语句中退出。
1990年1月15日,AT&T的长途电话系统死机,造成6万人无法使用电话服务。起因是一个负责写电路交换部分C代码的开发人员企图用break从if语句中退出,但break不能从if语句中退出。相反,程序跳过了整段代码,引起了这个bug,令7千万次电话呼叫在9个多小时内无法接通……
函数聚焦
在试验新学的循环“咒语”前,我们绕道去看一眼函数。
到目前为止,在你写过的每个程序中,都必须创建一个函数——main()函数:

在C语言中几乎所有函数都有着相同的格式。例如在下面这个程序中,main()函数调用了一个自定义函数。

larger()函数与main()函数有一点区别,它接收参数(argument或parameter)。参数是一个局部变量,函数从调用它的代码那里得到参数的值。larger()函数要接收两个参数:a和b,它返回两个参数中较大那个的值。
C标准礼貌指南
main()这一函数的返回类型是int,因此必须在函数结束前包含一条return语句。即使不加,代码也能编译通过,但会收到编译器的警告。支持C99标准的编译器会在你忘记的时候插入一条return语句。如果你想让编译器遵循C99标准,可以使用-std=99选项。
void函数聚焦
在C语言中,大部分函数都有一个返回值。但有时候,想要创建的函数中并没有有用的信息需要返回。它更多只是做了一些事,而不是计算出一个结果。通常情况下,函数都需要包含一条return语句,但只要把函数的返回类型声明为void,没有return语句也无妨。

在C语言中,关键字void意味着无所谓,一旦告诉C编译器你不关心函数的返回值,函数就不需要有return语句。
这里没有蠢问题
问:如果我创建了一个void函数,是否就意味它一定不能有return语句?
答:你还是可以包含return语句,但编译器很可能会产生一条警告消息。而且在void函数中包含return语句没有任何意义。1
1 在void函数中的return语句有时可以用来提前退出函数。——译者注
问:真的吗?为什么没有意义?
答:因为如果你试图读取void函数的值,编译器会报错。
链式赋值
在 C 语言中,几乎每样东西都有返回值,不仅仅是函数调用,就连赋值表达式也有返回值。例如下面这条语句:
x = 4;
它把数字 4 赋值给变量。有趣的是表达式“x = 4”本身也有一个值,这个值是4,即赋给 x 的值。为什么说这个东西很有用呢?因为你可以用它来做一些很酷的事情,比如把多条赋值语句链在一起写:

这行代码同时将 x 和 y 的值设为了 4 。事实上,可以去掉括号,缩短代码的长度:
y = x = 4;
你经常会在需要给多个变量赋相同值的代码中看到链式赋值。
弄乱的消息
下面列出了一个C语言的小程序。程序少了一块代码,你的任务是将候选代码块(左)和它对应的输出结果进行配对。有的输出结果可能一次都用不到,有的可能用到好几次。用直线把候选代码块和它所对应的命令行输出连接起来。

练习
既然你已经知道了怎么创建while循环,请修改程序让它在游戏期间保持计数。每发一张牌就显示一次计数,如果玩家输入X就终止程序,如果玩家输入了错误的值(如11或24)就显示错误消息。

弄乱的消息解答
下面列出了一个C语言的小程序。程序少了一块代码,你的任务是将候选代码块(左)和它对应的输出结果进行配对。有的输出结果可能一次都用不到,有的可能用到好几次。请用直线把候选代码块和它所对应的命令行输出连接起来。

练习解答
既然你已经知道了怎么创建while循环,请修改程序让它在游戏期间保持计数。每发一张牌就显示一次计数,如果玩家输入X就终止程序,如果玩家输入了错误的值(如11或24)就显示错误消息。

试驾
既然算牌程序已经完成了,是时候带它出去兜兜风了,您意下如何?觉得它能工作吗?

算牌程序工作了!
你已经完成了第一个C程序。借助C语言的语句、循环、条件的威力,你已经创造了一个具有完整功能的算牌器。
干得好!

免责声明:用计算机算牌在很多州是犯法的,赌场那群家伙可不是好惹的。所以千万别那么做,好吗?
这里没有蠢问题
问:C语言为什么需要编译?其他一些语言就不需要编译,比如JavaScript,是吗?
答:为了让代码执行起来更快,C语言需要编译。尽管有些语言不是编译型语言,但它们中的一些,像JavaScript和Python,为了提高速度通常会在幕后使用一些编译技术。
问:C++是另一个版本的C语言吗?
答:不是,虽然C++的设计初衷是为了扩展C,但现在看来远不止如此,人们最初创造C++和Objective-C都是为了用C语言写面向对象的程序。
问:什么是面向对象?我们在本书中会学吗?
答:面向对象是一种对抗软件复杂性的技术,我们在本书中不会做专门研究。
问:C语言为什么看起来很像JavaScript、Java和C#等语言?
答:C语言的语法非常简洁,因此影响了很多其他语言。
问:gcc这三个字母分别代表什么含义?
答:GNU编译器套装(GNU Compiler Collection)。
问:为什么是“套装”?难道不止C语言一种吗?
答:GNU编译器套装可以用来编译很多语言,而C语言可能是人们在应用gcc时使用最多的语言。
问:我能创建一个永无止尽的循环吗?
答:可以,如果循环条件的值是1,循环就会永无止尽地运行下去。
问:创建一个永无止尽的循环是个好主意吗?
答:有时候是,通常在一些诸如网络服务器的程序中会使用无限循环(一个永无止尽的循环),程序会反复地做一件事直到有人停止它。但大部分的程序员使用循环是为了让它们在某个时刻停止。
要点
只要条件为真,while循环就会运行代码。
do-while循环和while循环十分类似,不过至少执行一次代码。
某些循环用for来写更简洁。
可以用break在任意时刻退出循环。
可以用continue随时跳到循环条件处。
return语句会从函数返回一个值。
void函数不需要return语句。
在C语言中,所有表达式都有值。
赋值表达式有一个值,因此可以把它们链在一起写(x = y = 0)。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)