for循環是最常用的循環,取三個參數:起始數,測試條件和增量表達式。 for循環語句: for(initial; cond_expr;adjust) { statements; } for循環重復執行statements碼段,直到條件表達式cond_expr不為真。循環狀態由initial語句初始化,執行statements碼段后,這個狀態用adjust語句修改。下面舉一個for循環的典型例子進行說明: for (int i=0;i<10;i++){ cout << "This is iteration" << i << end1; }
while循環與for循環的差別在于它只有一個在每次循環開始時檢查的測試條件。只要測試條件為true,循環就繼續運行。 int x; while (x < 1000) { x = DoSomeCalculation(); } 本例中我調用一個函數,假定它最終會返回大于或等于1000的值。只要這個函數的返回值小于1000,while循環就繼續運行。變量x包含大于或等于1000的值時,測試條件變成false,程序轉入while循環閉括號后面的第一條語句。while循環通常用bool變量進行測試。測試變量狀態可以在循環體中進行設置: bool done = false; while (!done) { //some code here done = SomeFunctionReturningABool(); //more code }
do while循環與while循環基本相同,但有兩點差別。 ,while循環測試發生在循環體開頭,而do while循環測試則發生在循環結束時:bool done = false; do { // some code done =SomeFunctionReturningABool(); // more code } while (! done); 使用dowhile循環還是while循環取決于循環本身的作用。語法中do while循環語句:do { tatements; } while (cond_expr); 只要條件表達式cond_expr為真(非零),do循環重復statements碼段。循環狀態必須在do語句之前初始化,并在碼段中顯式修改。條件表達式cond_expr為假時,循環終止。
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語句。