问题标签 [control-flow]

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 投票
4 回答
4566 浏览

mysql - 如果第一个 SELECT 返回一个空集,则另一个 SELECT

这是我的桌子:

我需要一个 SQL,如果没有id_1“x”的行,它应该返回id_10 的行。例如,如果我选择id_1= 2,它将返回select * whereid_1 = 0

这可以在一个声明中完成吗?我在使用 IF EXISTS 或 CASE 时运气不佳。句法...

Thanks, as always

0 投票
4 回答
1546 浏览

c++ - 允许 C++ 中各种形式的“是”和“否”的多种输入

发布了一个关于如何使用 if else 语句获取用户输入(例如是或否)来控制程序流程的问题,我得到了答案,现在我离完成这项工作又近了一步,但是又出现了另一个问题,我真的需要允许多个输入,例如这是我正在尝试的:

Kiril Kirov 发布了这段代码,可以提供帮助:

但我无法让它工作,罗杰佩特建议这样做:

但是我从未尝试过,因为它的复杂性远远超出了我的理解。我希望有一个初学者程序员可以理解的解决方案,或者我只是一个非常慢的学习者


编辑:我做了这个修改,但它仍然没有比以前更好,如果我给出错误的情况,它会转到其他(错误)并且没有地方可以添加更多单词,(例如 NO N no No):

0 投票
1 回答
3326 浏览

c# - c# 代码的控制流图生成器

我需要一个工具来获取 c# 代码并生成代码的控制流图,如果在 Visual Studio 中有这样的东西......请指出来谢谢

0 投票
1 回答
1238 浏览

assembly - 使用 objdump 时确定寄存器值

所以我正在尝试使用 objdump 实用程序从程序集中构建控制流图,但我遇到了问题。基本上,每当发生分支并且目标地址是相对的时,我不确定如何知道下一个基本块从哪里开始。我不确定我是否清楚,所以我将添加一个示例。假设我的程序正在通过 objdump 输出,并记录了第一个基本块的起始地址。然后它会执行一个跳转命令,该命令使用相对寻址来指向要跳转到的正确地址。我知道我的第一个基本块的结束就在那儿,但是我如何为下一个基本块的开始获取正确的地址?任何人都可以提供任何指导将不胜感激,我充其量只是一个 x86 新手,过去一周我一直在努力解决这个问题。

0 投票
4 回答
135 浏览

language-agnostic - 构造是否 ..while(false) 有助于更好的控制流?

我最近遇到了这段代码:

编写它的程序员,沿着"cleaner control flow".

在我看来,如果将原始代码重构为其他内容,它可能看起来会更好。但这种说法有任何道理吗?这个结构好用吗?

0 投票
6 回答
4904 浏览

perl - 在 do 循环中替代“last”

根据 for last( http://perldoc.perl.org/functions/last.html ) 的 perl 手册,last不能用于跳出do {}循环,但它没有提到替代方案。我正在维护的脚本具有以下结构:

我很确定他想走到循环的结尾,但它实际上退出了当前的子例程,所以last如果有人可以推荐更好的方法,我需要更改或重构整个循环。

0 投票
4 回答
75850 浏览

ssis - SSIS 控制流与数据流

我不完全理解 SSIS 包中控制流的目的。在我创建的所有包中,我只是添加了一个数据流组件来控制流,然后其余逻辑位于数据流中。

我已经看到了更复杂的控制流的示例(例如:foreach 循环容器,它遍历 Excel 文件中的行。),但我正在寻找一个无法在数据流中实现的示例。我可以轻松地在数据流中创建到 excel 文件的连接。

我试图更好地了解何时需要(或应该)在控制流中实现逻辑与使用数据流来完成这一切。

是什么促使我开始研究控制流,其目的是我想重构 SSIS 数据流以及将包分解成更小的包,以便更容易支持并发开发。

我正在努力思考如何将控制流用于这些目的。

0 投票
1 回答
5844 浏览

java - 使用 Java 从具有访问者模式的 AST 构建控制流图

我试图弄清楚如何实现我的 LEParserCfgVisitor 类,以便从已经用 JavaCC 生成的 Abstract-Syntax-Tree 构建控制流图。我知道已经存在一些工具,但我正在努力为我的编译器决赛做准备。

我知道我需要一个将图形保存在内存中的数据结构,并且我希望能够在每个节点中保留 IN、OUT、GEN、KILL 等属性,以便以后能够进行控制流分析。

我的主要问题是我还没有弄清楚如何将不同的块连接在一起,因为每个块之间的正确边缘取决于它们的性质:分支、循环等。换句话说,我还没有找到一个明确的可以帮助我建立访问者的算法。

这是我的空访客。您可以看到它适用于基本语言表达式,例如 if、while 和基本操作(+、-、x、^、...)

谁能帮我一把?

谢谢!

0 投票
5 回答
587 浏览

c++ - C++ 代码在没有优化的情况下被奇怪地跳过了。任何想法为什么?

我为此寻找了两天的答案,但没有成功。我以前从未遇到过这个问题,所以我会尽力而为。请多多包涵。

我回到了我一年多前创建的一个 C++ 项目,当时该项目运行没有问题。前几天,当我试图让相同的程序运行时,我遇到了这个有趣且令人难以置信的烦人问题。代码类似于:

文件.h

文件.cc

常数是我为本示例扩展的十六进制表示法的宏。事实证明,这确实是一个错误,但调试器并不容易发现。以下是发生的事情:

当我尝试使用 GDB 单步执行代码(没有优化)时,我注意到 GDBif (id == 30000)每次到达后都会直接跳转到 else 语句。因为数字是十六进制的 c 宏,所以我一开始并没有注意到它40000超出了 a 的限制signed short。这非常具有误导性,并且花了几个小时试图弄清楚:我重新编译了外部库,重新安装了 g++,等等。

显然,解决idunsigned short这个问题。另一个问题似乎是编译器问题。但是我还是不明白,为什么在执行过程中完全跳过了那些代码段,并且没有优化?为什么它不通过每个if陈述,这样我就可以确定真正的问题?有任何想法吗?

非常感谢。我希望这对于第一个问题来说没问题。

0 投票
5 回答
3216 浏览

performance - if then else.... break 与 if break if break 的效率

以下控制流选项之一是否有效率偏好以用于循环或切换另一个?

选项1:

选项 2: