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語句。