goto语句可以将程序转入前面用标号和冒号声明的标号处。 下列代码演示了这个语句: bool done = false; startPoint: // do some stuff if (!done) goto(startPoint);// loop over, moving on... 这里不需要大括号,因为goto语句与标号之间的所有代码均会执行。 goto语句被认为是C++程序中的不良语句。用goto语句能做的任何工作都可以用While和dowhile循环进行。一个好的C++编程人员很少在程序中使用goto语句。如果你从别的语言转入C++,你会发现C++的基本结构使goto语句显得多余。
循环中有两个关键字必须介绍,那就是控制循环中程序执行的continue和break。continue语句强制程序转入循环底部,跳过continue语句之后的任何语句。例如,某个测试为真时,循环的某个部分可能不需要执行。这时可以用continue语句跳过continue语句之后的任何语句: bool done = false; while (!done) { // some codebool error =SomeFunction(); if (error) continue; // jumps to the top of the loop // other code that will execute only if no error occurred }
break语句用于在循环正常测试条件符合之前终止循环执行。例如,可以在ints数组中搜索某个元素,找到数字后可以终止循环执行,取得该数字所在的索引位置: int index=1 int searchNumber=50; for (int i=0;i<numElements;i++) { if (myArray[i]==searchNumber) { index=i;break;} } if(index !=1) cout << "Number found at index " << index << end1; else cout <<"Number not found in array." << end1; continue和break语句在许多情况下有用。和其它要介绍的知识一样,continue和break语句也要在实践中不断熟悉。
switch语句是高级if语句,可以根据表达式的结果执行几个码段之一。表达式可以是变量、函数调用结果或其它有效C++表达式。下面举一个switch语句例子:switch (amountOverSpeedLimit) { case 0 : {fine =0; break; } case 10 : {fine = 20; break; } case 15 : {fine =20; break; } case 20 : case 25 : case 30 : { fine=amountOverSpeedLimit * 10; break; } default : {fine =GoToCourt(); jailTime=GetSentence(); } } switch语句分为几个部分。首先有一个表达式,本例中是amountOverSpeedLimit变量(够长的变量名!),然后用case语句测试表达式,如果amountOverSpeedLimit等于0(case 0:),则向变量fine赋值0,如果amountOverSpeedLimit等于10,则向变量fine赋值20,等等。在前三个case中都有break语句。break语句用于转出switch块,即找到了符合表达式的情况,switch语句的余下部分可以忽略了。最后有个default语句,如果没有符合表达式的情况,则程序执行default语句。
|