php跳转语句和终止语句,C++_C++流程控制中用于跳转的return和goto语句学习教程,return 语句 终止函数的执行并 - phpStudy...

C++流程控制中用于跳转的return和goto语句学习教程

return 语句终止函数的执行并返回对调用函数的控制(或对操作系统的控制,如果您从 main 函数转移控制)。紧接在调用之后在调用函数中恢复执行。

语法

return [expression];

备注

expression 子句(如果存在)将转换为函数声明中指定的类型,就像正在执行初始化一样。从该类型的表达式到 return 类型的函数的转换会创建临时对象。

expression 子句的值将返回调用函数。如果省略该表达式,则函数的返回值是不确定的。构造函数和析构函数以及类型为 void的函数无法在 return 语句中指定表达式。所有其他类型的函数必须在 return 语句中指定表达式。

当控制流退出封闭函数定义的块时,结果将与执行不带表达式的 return 语句所获得的结果一样。这对于声明为返回值的函数无效。

一个函数可以包含任意数量的 return 语句。

以下示例将一个表达式与 return 语句一起使用来获取两个整数中的最大者。

// return_statement2.cpp

#include

int max ( int a, int b )

{

return ( a > b ? a : b );

}

int main()

{

int nOne = 5;

int nTwo = 7;

printf_s("\n%d is bigger\n", max( nOne, nTwo ));

}

goto 语句

goto 语句无条件地将控制权转移给由指定的标识符标记的语句。

语法

goto identifier;

备注

由 identifier 指定的标记语句必须位于当前函数中。所有 identifier 名称都是内部命名空间的成员,因此不会干扰其他标识符。

语句标签仅对 goto 语句有意义;其它情况下,语句标签将被忽略。不能重新声明标签。

尽可能使用 break、continue 和 return 语句而不是 goto 语句是一种好的编程风格。但是,因为 break 语句仅退出循环的一个级别,所以可能必须使用 goto 语句退出深度嵌套的循环。

在此示例中,当 i 等于 3 时,goto 语句将控制权转移给标记为 stop 的点。

// goto_statement.cpp

#include

int main()

{

int i, j;

for ( i = 0; i < 10; i++ )

{

printf_s( "Outer loop executing. i = %d\n", i );

for ( j = 0; j < 2; j++ )

{

printf_s( " Inner loop executing. j = %d\n", j );

if ( i == 3 )

goto stop;

}

}

// This message does not print:

printf_s( "Loop exited. i = %d\n", i );

stop:

printf_s( "Jumped to stop. i = %d\n", i );

}

输出:

正在执行外部循环。i = 0

正在执行内部循环。j = 0

正在执行内部循环。j = 1

正在执行外部循环。i = 1

正在执行内部循环。j = 0

正在执行内部循环。j = 1

正在执行外部循环。i = 2

正在执行内部循环。j = 0

正在执行内部循环。j = 1

正在执行外部循环。i = 3

正在执行内部循环。j = 0

跳转以停止。i = 3

控制的转移可以在 goto 语句中使用 语句或 switchcase 标签来指定分支超出初始值设定项的程序。此类代码是非法的,除非包含初始值设定项的声明在跳转语句发生的块所封闭的块中。

下面的示例显示了声明和初始化对象 total、ch 和 i 的循环。也存在将控制权传递过初始值设定项的错误 goto 语句。

// transfers_of_control.cpp

// compile with: /W1

// Read input until a nonnumeric character is entered.

int main()

{

char MyArray[5] = {'2','2','a','c'};

int i = 0;

while( 1 )

{

int total = 0;

char ch = MyArray[i++];

if ( ch >= '0' && ch <= '9' )

{

goto Label1;

int i = ch - '0';

Label1:

total += i; // C4700: transfers past initialization of i.

} // i would be destroyed here if goto error were not present

else

// Break statement transfers control out of loop,

// destroying total and ch.

break;

}

}

在前面的示例中,goto 语句尝试将控制权传递过 i 的初始化。但是,如果已声明但未初始化 i,则该传递是合法的。

在用作 total 语句的 chstatement 的块中声明的对象 和 while 在使用 break 语句退出此块时将被销毁。相关阅读:

jQuery实现可高亮显示的二级CSS菜单效果

视频:Win10 Mobile Build 10158模拟器上手视频演示

Jquery具体实例介绍AJAX何时用,AJAX应该在什么地方用

Oracle 监控索引使用率脚本分享

C#更改tabControl选项卡颜色的方法

javasctipt如何显示几分钟前、几天前等

Window下adb shell中文乱码问题解决方法

JQuery动画animate的stop方法使用详解

部分升级Win10的用户降级选项Windows.old已经不可用该怎么办?

基于JavaScript实现仿京东图片轮播效果

PHP Curl多线程原理实例详解

ie6不支持hover ie6 标签(除a标签)不支持伪类:hover解决方案

php实现数组中索引关联数据转换成json对象的方法

C#键盘鼠标钩子实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值