首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >"break;“是否超出了"if”语句?

"break;“是否超出了"if”语句?
EN

Stack Overflow用户
提问于 2014-07-12 13:50:37
回答 4查看 168.3K关注 0票数 41

您是否可以中断if语句,或者它是否会导致崩溃?我开始熟悉C语言,但这似乎是有争议的。第一张图片来自一本关于C语言的书("Head first C"),代码片段显示了由哈佛大学CS班级员工编写的代码。到底是怎么回事,和C标准有什么关系?

中断不会中断if语句。

1990年1月15日,AT&T的长途电话系统崩溃,6万人失去了电话服务。原因是什么?一位开发用于交易所中的C代码的开发人员试图使用break来中断if语句。但breaks并没有突破ifs,而是跳过了一整段代码,并引入了一个bug,在9个小时内中断了7,000万次电话通话。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (size = 0; size < HAY_MAX; size++)
{
    // wait for hay until EOF
    printf("\nhaystack[%d] = ", size);
    int straw = GetInt();
    if (straw == INT_MAX)
        break;

    // add hay to stack
    haystack[size] = straw;
}
printf("\n");
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-12 15:38:43

无论是forwhile还是do .. while类型,break都只与最近的封闭环路或交换机交互。它经常被称为伪装的goto,因为C中的所有循环实际上都可以转换为一组条件goto:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (A; B; C) D;
// translates to
A;
goto test;
loop: D;
iter: C;
test: if (B) goto loop;
end:

while (B) D;          // Simply doesn't have A or C
do { D; } while (B);  // Omits initial goto test
continue;             // goto iter;
break;                // goto end;

不同之处在于,continuebreak与编译器自动放置的虚拟标签交互。这类似于return所做的事情,因为您知道它在程序流中总是会跳到前面。开关稍微复杂一点,生成标签和计算的goto数组,但break使用它们的方式是相似的。

通知提到的编程错误是将break误解为与封闭块交互,而不是与封闭循环交互。考虑一下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (A; B; C) {
   D;
   if (E) {
       F;
       if (G) break;   // Incorrectly assumed to break if(E), breaks for()
       H;
   }
   I;
}
J;

有人认为,考虑到这样一段代码,G会跳转到I,但它会跳转到J。预期的函数将改用if (!G) H;

票数 47
EN

Stack Overflow用户

发布于 2014-07-12 15:24:19

这实际上是break语句的常规用法。如果break语句没有嵌套在if块中,那么for循环只能执行一次。

MSDN将其作为break语句的example列出。

票数 3
EN

Stack Overflow用户

发布于 2017-04-21 05:58:10

如前所述,break-statement只在中使用开关和循环。这是另一种实现所要求的内容的方法。我正在复制其他人没有提到的https://stackoverflow.com/a/257421/1188057。这只是一个涉及do-while循环的技巧。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
do {
  // do something
  if (error) {
    break;
  }
  // do something else
  if (error) {
    break;
  }
  // etc..
} while (0);

虽然我更喜欢使用goto-statement。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24714287

复制
相关文章
使用html和css制作水平导航栏nav
使用html和css制作水平导航栏nav的方法及其效果: 1、li设置float:left; (1)代码片段:
全栈程序员站长
2022/09/01
3.8K0
HTML导航栏制作
注释:加上 target=”_blank” 的话,点击有链接的文字,就会新打开一个标签页,若不加,则在本页面上直接打开链接网页。
全栈程序员站长
2022/09/01
4.8K0
纯HTML CSS制作导航栏 下拉菜单
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140190.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
6.3K0
html导航栏自动调间距,HTML CSS导航栏间距[通俗易懂]
我做了一个CSS导航栏,但是在每个“navbar-item”之间,都有一点空间。我不希望那里有任何变化!有没有办法做到这一点,而不改变每个navbar-item的余裕?HTML CSS导航栏间距
全栈程序员站长
2022/09/01
5.5K0
CSS + HTML导航栏效果
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140426.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/02
4.6K0
HTML+CSS 简单的顶部导航栏菜单制作
img标签,导入图片,a标签超链接 ,img导入图片,防止图片失真width和height设置一个就可以了
全栈程序员站长
2022/09/02
3.8K0
导航栏滚动渐变效果 html+css+js
6.当页面有滚动后导航栏的样式,padding上下变小,字体颜色变,有了蓝背景色:
全栈程序员站长
2022/08/24
9.3K0
导航栏滚动渐变效果 html+css+js
html里制作简单导航栏
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140112.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
4.4K0
点击导航栏,切换div内容(js+css+html)[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140453.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/24
12.7K0
点击导航栏,切换div内容(js+css+html)[通俗易懂]
html导航栏可以展开的下拉菜单,html导航栏下拉菜单如何制作[通俗易懂]
小编给大家分享一下html导航栏下拉菜单如何制作,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
全栈程序员站长
2022/09/01
8.8K0
第8天:CSS制作导航栏
今天主要学习了网页导航栏的制作。注意:引入外部CSS样式时,如果使用background:url(../images/1.png),一定记得用..跳出当前文件夹,回到上级目录。
半指温柔乐
2018/09/11
2K0
第8天:CSS制作导航栏
如何使用 HTML、CSS 和 JS 制作电子商务网站
编写基本的 HTML 5 模板index.html。并将home.css文件链接到index文件。现在,创建导航栏。
玖柒的小窝
2021/09/14
4.8K0
如何使用 HTML、CSS 和 JS 制作电子商务网站
【CSS】课程网站头部制作 ② ( 导航栏测量 | 导航栏编写 | 代码示例 )
导航栏 最左侧位置 , 距离 logo 盒子 有 70 像素 , 考虑到设置外边距 , 这里将 logo 盒子 与 导航栏之间的距离设置成 60 像素即可 ;
韩曙亮
2023/04/03
3.9K0
【CSS】课程网站头部制作 ② ( 导航栏测量 | 导航栏编写 | 代码示例 )
CSS+HTML 顶部导航栏实现「建议收藏」
2018/11/16更新: 最近在使用这个导航栏的时候,发现页面在放大和缩小的情况下,导航栏的布局和显示都有些小问题,所以重新改了一下css部分的代码,重新贴上来
全栈程序员站长
2022/09/01
3.4K0
html页面缩小导航栏隐藏,html – 导航栏缩放问题[通俗易懂]
我有一个问题,我的导航栏似乎与CSS中的.container缩放.现在,我是一个新手,但我已经尝试搞乱CSS中的值,但无济于事.这是
全栈程序员站长
2022/09/02
4.6K0
html 竖排导航条,html 导航栏
$(“#navbar a[href='{ { request.path }}’]”).parent().addClass(“active”)
全栈程序员站长
2022/09/01
3.7K0
HTML导航栏的四种制作方法
在这里还想说的是,<ul>的子集元素只能是<li>,不可以是别的,HTML的语义很弱,标签的使用很重要,在实际的网页开发中,不同标签的语义,权重都不一样,所以,优化也不一样。
全栈程序员站长
2022/08/24
3.3K0
HTML导航栏的四种制作方法
html 下拉导航栏源码,html导航栏下拉菜单怎么制作?这里有详细的代码实例「建议收藏」
.dropdown类使用position:relative,这将设置下拉菜单的内容放置在下拉按钮(使用position:absolute)的右下角位置。
全栈程序员站长
2022/09/01
4.2K0
让我们使用HTML,CSS和Javascript构建响应式导航栏和面包屑菜单
大家好!在本教程中,我们将使用html,css和一些javascript构建响应式导航栏和面包屑菜单。
海拥
2021/08/23
2.3K0
让我们使用HTML,CSS和Javascript构建响应式导航栏和面包屑菜单
零基础html5+div+css+js网页开发教程第009期 导航栏css美化
overflow: auto;/* 使用浮动时候结合使用,可以使得容器的宽高自动体现出来 */
刘金玉编程
2019/12/10
1.6K0

相似问题

如何制作粘性导航栏?

216

不能仅使用CSS和HTML隐藏导航栏

13

没有Javascript的响应式导航栏,仅使用HTML和CSS

120

如何制作没有位置的粘性导航栏:已修复

15

如何仅使用HTML、CSS和Javascript突出显示导航栏

120
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文