首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中、高级语言中的条件跳转语句

问中、高级语言中的条件跳转语句
EN

Software Engineering用户
提问于 2020-05-08 08:42:20
回答 2查看 372关注 0票数 -2

在Java、C和C++中,我们有以下跳转语句:break、continue、goto和return。在C#中,也有throw。

这两种语言我都不太熟悉。这就是我在网上读到的。

所有这些跳转语句都是无条件的。我试图找到关于条件跳转语句的内容,但是所有链接都指向Assembly。

只存在于程序集中的条件跳转语句是正确的吗?

互联网上的一些人告诉我,if实际上是一个有条件的跳转语句,但我不这么认为。至少,在微软或QT文档中没有这样描述。

关于对这一问题的评论:

为什么if或switch ... case不是条件跳转语句?-你为什么认为这不是?-πάνταῥεῖ

@ if --在我看来,switch、return、break等都是控制流语句。跳转语句是其中的一个子集。请注意,无论是微软、QT,还是任何其他文档,都不会将if视为跳转语句。

在我看来,控制流语句和跳转语句之间的区别在这里描述:https://www.inf.unibz.it/~calvanese/teaching/06-07-ip/lecture-notes/uni06/node45.html

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2020-05-08 10:34:37

联系来源所作的区分是不清楚的。

在我看来,它所做的区分是结构化流控制语句和非结构化流控制语句。

“条件跳转”只是一个if语句等等。if也是一个结构化语句。大多数结构化语言不公开非结构化条件跳转语句(尽管它存在于程序集级别)。

“无条件跳转”是一个goto语句等等。goto也被认为是一种非结构化语句,尽管在目前的结构化语言中,它所能做的事情常常受到限制。“结构化无条件跳转”的一个例子是函数调用--函数总是会被跳入(这就是使它无条件的原因),但它也必须向后跳(这就是它的结构)。

break和continue通常被认为是非结构化流控制的最后遗迹,尽管根据定义,它们是结构化流控制语句的局部。

“条件”和“结构化”流控制语句之间的区别完全是正交的。

我还要补充的是,一个合理的“流控制语句”定义能够使代码在下一行中被执行。条件跳转是在某些情况下跳出下一行的跳转。无条件跳转是指在任何情况下都要跳出下一行。

票数 4
EN

Software Engineering用户

发布于 2020-05-11 06:49:48

在大多数语言中,从现有特性编写条件跳转是非常简单的,例如

代码语言:javascript
复制
If (x > 0) goto y;

因此,对条件跳转语句的需求很少,因此您看不到它。有这样的陈述

代码语言:javascript
复制
Ifgoto (x > 0, y); 

似乎是不必要的,混乱的,愚蠢的。

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

https://softwareengineering.stackexchange.com/questions/409878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档