问题标签 [fall-through]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
280 浏览

c - 叮当声未检测到开关故障

我想铿锵有力地捕捉到我无意中的“切换”语句失败。这个 shell 脚本演示了我的失败;我在脚本本身之后显示输出。我究竟做错了什么?

输出:

0 投票
1 回答
546 浏览

java - Java中的switch语句失败?

我可以使用

gotofall-through

在 Java 中的Switch 语句中,就像在 C# 中一样?

这是我在 C# 中修改的代码示例,以便在条件 Switch 中使用goto语句,注意它说 SAM 的位置:

0 投票
1 回答
54 浏览

c - 编程新手 - C - 菜单系统中的直通问题

我最近开始学习 C 只是为了好玩,我决定尝试创建一个菜单系统,但我对我认为失败的问题有疑问:

问题是,一旦我到达第三个菜单,程序将打印出所选数字的字符串,但它不会自行终止,而是显示第三个菜单或返回第二个菜单,无论如何它都会这样做我输入了什么数字。

我只学习了大约两个星期的 C 语言,我对嵌套语句的工作原理不太了解if,如果我能解释一下导致这种意外行为的原因以及如何纠正它,将不胜感激, 谢谢你。

我在 Windows 10 上通过 TDM-GCC-64 使用 GCC 5.1.0。

0 投票
1 回答
3583 浏览

linux - 在旧版本的 gcc 上使用 `-Wno-implicit-fallthrough`

我有一个在 gcc 4.8.4 下构建良好的项目。我尝试使用 gcc 7 构建,并注意到很多-Wimplicit-fallthrough=警告。据我所知,这确实是在 gcc 版本 7 中添加的。我现在-Wno-implicit-fallthrough在构建时使用它来抑制这些警告。回到旧版本的 gcc,保留-Wno-implicit-fallthrough编译器标志不会导致任何错误,即使我不相信 gcc 4 识别此选项。怎么来的?具体是-Wno-允许不被识别的选项吗?

0 投票
1 回答
774 浏览

r - R:如何使 switch 语句失败

在许多语言中,有一条名为的指令break告诉解释器在当前语句之后退出 switch。如果省略它,则在处理当前案例后切换:

如果您想通过一系列传递条件,这样的设计模式会很有用。


我知道如果程序员忘记插入 break 语句,这可能会由于无意的失败而导致错误,但是默认情况下有几种语言会中断,并包含一个失败关键字(例如continue在 Perl 中)。

根据设计,R 开关也会在每个案例结束时默认中断:

在上述代码中,如果current_step设置为 1,则输出仅为"Processing the first step...".


R中是否有任何方法可以强制开关盒通过以下情况?

0 投票
2 回答
573 浏览

c++ - GCC 编译器是否应该对这个涉及 [[fallthrough]] 属性的格式错误的 C++ 代码进行诊断?

我在 GCC 编译器版本 7.1.0 上测试 C++17 功能。这与fallthrough属性有关,以下示例(现场示例)改编自此处的在线 CPP 参考

最后一个[[fallthrough]](for case 4:) 格式不正确。

关于“根据标准处理格式错误的程序需要什么 C++ 编译器?”的问题 这里有最重要的答案,说明:

所以总结一下:如果一个格式错误的程序包含一个可诊断的违规行为,标准没有明确指定“不需要诊断”,那么符合要求的实现应该发出一个 diagnostic

因此,我查看了标准 (N4713) 以查看它是否声明此问题不需要诊断。我找不到任何这样的声明。

有趣的是,在这一切之后,当我在最后一个之后添加以下语句时[[fallthrough]]

编译器警告(现场示例):

警告:属性“fallthrough”不在案例标签或默认标签之前

所以,这里有两个问题:

  1. 编译器是否错过了发出诊断,或者我在这里遗漏了什么?
  2. 如果是编译器问题,是否严重到需要报告?
0 投票
2 回答
1265 浏览

swift - 如何使用 where 关键字快速检查 switch 语句中的所有情况?

当我执行这段代码时,只是print("it is greater than zero")被执行了,但我有两种情况是正确的,我尝试使用fallthrough关键字,但即使它是错误的,它也会执行下一个 case 块,无论如何,

这反过来又提出了另一个问题,我什么时候应该使用fallthrough关键字?如果我想强制执行下一个块,为什么不将代码插入到同一个块中fallthrough

下面的示例有什么方法可以打印所有评估为 true 的案例并仍然排除所有评估为 false 的案例?

预先感谢您的回答!

0 投票
2 回答
84 浏览

typescript - 打字稿可能的代码路径与打字漏洞?

给定代码

打字稿编译器说:

没错,因为由于结构类型的原因,我可以what称之为

从那时起v在结构上与Y. 现在我变成what

并且仍然得到编译错误。

我想知道编译器是否无法导出将采用其中一个分支,或者是否存在仍然允许我传入与两个分支if中的任何一个都不匹配的兼容对象的漏洞。if

0 投票
4 回答
56 浏览

python - 适当的条件循环

我应该如何指定我的 if-else-elif 语句以不让它们在第一个 if 子句之后完成检查条件?

0 投票
0 回答
617 浏览

rust - 在 Rust 中具有贯穿的 C 样式 switch 语句

matchRust 中只执行一只手臂。我从 Murmurhash 3 中找到了这段代码片段

switch是传统的 C switch。是否有可能以优雅的方式在 Rust 中编写它?我找不到用match.