在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
发布于 2020-05-08 10:34:37
联系来源所作的区分是不清楚的。
在我看来,它所做的区分是结构化流控制语句和非结构化流控制语句。
“条件跳转”只是一个if语句等等。if也是一个结构化语句。大多数结构化语言不公开非结构化条件跳转语句(尽管它存在于程序集级别)。
“无条件跳转”是一个goto语句等等。goto也被认为是一种非结构化语句,尽管在目前的结构化语言中,它所能做的事情常常受到限制。“结构化无条件跳转”的一个例子是函数调用--函数总是会被跳入(这就是使它无条件的原因),但它也必须向后跳(这就是它的结构)。
break和continue通常被认为是非结构化流控制的最后遗迹,尽管根据定义,它们是结构化流控制语句的局部。
“条件”和“结构化”流控制语句之间的区别完全是正交的。
我还要补充的是,一个合理的“流控制语句”定义能够使代码在下一行中被执行。条件跳转是在某些情况下跳出下一行的跳转。无条件跳转是指在任何情况下都要跳出下一行。
发布于 2020-05-11 06:49:48
在大多数语言中,从现有特性编写条件跳转是非常简单的,例如
If (x > 0) goto y;因此,对条件跳转语句的需求很少,因此您看不到它。有这样的陈述
Ifgoto (x > 0, y); 似乎是不必要的,混乱的,愚蠢的。
https://softwareengineering.stackexchange.com/questions/409878
复制相似问题