C++流程控制中用于跳转的return和goto语句学习教程
return 语句 return [expression]; 备注 expression 子句的值将返回调用函数。如果省略该表达式,则函数的返回值是不确定的。构造函数和析构函数以及类型为 void的函数无法在 return 语句中指定表达式。所有其他类型的函数必须在 return 语句中指定表达式。 // return_statement2.cpp #include <stdio.h> int max ( int a,int b ) { return ( a > b ? a : b ); } int main() { int nOne = 5; int nTwo = 7; printf_s("n%d is biggern",max( nOne,nTwo )); } goto 语句 goto 语句无条件地将控制权转移给由指定的标识符标记的语句。 goto identifier; 备注 在此示例中,当 i 等于 3 时,goto 语句将控制权转移给标记为 stop 的点。 // goto_statement.cpp #include <stdio.h> int main() { int i,j; for ( i = 0; i < 10; i++ ) { printf_s( "Outer loop executing. i = %dn",i ); for ( j = 0; j < 2; j++ ) { printf_s( " Inner loop executing. j = %dn",j ); if ( i == 3 ) goto stop; } } // This message does not print: printf_s( "Loop exited. i = %dn",i ); stop: printf_s( "Jumped to stop. i = %dn",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 控制的转移 // 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,则该传递是合法的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |