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