返回介绍

用 break 语句退出循环……

发布于 2024-10-10 23:21:22 字数 5532 浏览 0 评论 0 收藏 0

但如果想在循环中的某个地方跳出循环呢?当然,可以重新调整代码的结构,但更简单的方法是,使用

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 语句没有任何意义。11 在 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 )。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文