C++ 跳转语句
C++提供了四中跳转语句(jump statement),他们能够直接将程序控制从当前位置跳转至程序的其他位置。
这四种转移语句分别是break、continue、return、goto。
break和continue在循环语句中使用;return语句用于函数的退出;而goto语句则能令程序控制跳转到程序制定的某标号语句处,然而goto语句的灵活性会降低程序的可读性,所以不建议在程序中使用goto语句。
一: break语句
break语句在while、for、do...while、switch语句语句中使用,当循环语句执行时,break语句控制程序退出这些语句。程序继续执行这些语句之后的第一条语句。
break语句的常见的用法是要么用于提前退出循环,要么用于跳过switch语句的剩余部分。
在循环语句中break语句能在不检查循环条件的情况下,直接将程序控制跳转至循环的结束处。下面的例子,用户有5次输入密码(PASSWORD)的机会,当输入正确时跳出循环:
-
string password;
-
for(int i = 0;i < 5;++i)
-
{
-
cout << "enter the password: " << endl;
-
getline(cin,password);
-
if(password == "PASSWORD")
-
break; //跳出循环
-
}
-
//循环结束处,程序将执行大括号之后的语句
break语句放在switch语句的case条件后,它能使程序控制直接跳到switch语句体的结束处:
-
switch(firstLetter)
-
{
-
case 'a': case 'A':
-
cout << "\n is it apple? " << endl;
-
break; //如果是a|A则跳出
-
case 'b': case 'B':
-
cout << "\n is it banana? " <<endl;
-
break;
-
default:
-
cout << "\n i cant't guess your favorite fruit..." << endl;
-
// 这里是switch语句的结束处
-
}
二:continue语句
continue语句只能在for、while和do...while的语句的循环体内出现。当程序运行至continue语句时,程序控制将跳过循环体剩余的语句,直接跳转至循环的条件语句处,进行循环体的下一次迭代。
下面的例子中,用户输入一个整数,如果是正数,则将其加入至变量sum中;否则程序将跳至while循环的入口,并再次要求用户输入:
-
#include<iostream>
-
using namespace std;
-
-
int main()
-
{
-
int i = 0,number,sum = 0;
-
cout << "\n hi,we need 25 positive values for your sum.\n";
-
while(i < 25 )
-
{
-
cout << "\n enter the a whole number" << endl;
-
cin >> number;
-
if(number <= 0)
-
continue; //回到循环开始处
-
else
-
{
-
cout << "\n this is your " << i+1 << " positive number.";
-
++i;
-
sum += number;
-
cout << "\n your sum so far is " << sum;
-
}
-
}
-
}
三:return语句
return语句将终止当前正在执行的函数,并立即将程序控制权返回到当初调用该函数的地方。如果return后面跟一个表达式,那么同时返回该表达式的值。返回值的类型与函数定义头中的函数返回类型之间必须满足赋值兼容性。
return有两种形式:
return;
return 表达式;
例如:
-
//取返回值的方法一:
-
int maxnum(int val1,int val2)
-
{
-
int answer;
-
-
if(val1 > vale2)
-
answer = val1;
-
else
-
answer = val2;
-
-
return answer;
-
}
-
//上面的方法使程序的效率降低了,因为要为额外的变量answer分配空间并赋值。
-
//使用条件运算符重写上面的代码
-
int maxnum(int val1,int val2)
-
{
-
return (val1 > val2 ? val1 : val2);
-
}
注意,int main()中的返回语句是一种特殊情况。在现代C++中,返回类型是int的main函数中可以不提供return语句,这种情况等于在main()函数末尾处添加了return 0语句。在main函数的末尾使用return时,0表示这个程序成功的终止了。
四:goto语句
goto语句是最原始的中断控制程序的语句。它是一个无条件转移语句,可以跳转到同一函数中任意一条有标号的语句处。现代编程方法通常认为goto语句是一种有害的程序结构,它能破坏所有由其他控制结构(for,while,do...while,if和switch)提供的结构。
标号是一个标识符,通常执行下面的goto语句:
goto 标号;
程序可以无条件的跳转到该标号指出的语句处:
标号 : 语句;
goto语句必须和标号语句在同一个函数体中。一般情况下,应尽量避免使用goto语句。
阅读(1846) | 评论(0) | 转发(0) |