: | : | :期货量化学习 | :期货量化 |
返回列表 发帖

C++循环中continue 语句

C++循环中continue 语句

C++ 中的 continue 语句有点像 break 语句。但它不是强迫终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。

对于 for 循环,continue 语句会导致执行条件测试和循环增量部分。对于 while 和 do...while 循环,continue 语句会导致程序控制回到条件测试上。

语法



流程图

  1. #include <iostream>
  2. using namespace std;

  3. int main ()
  4. {
  5.    // 局部变量声明
  6.    int a = 10;

  7.    // do 循环执行
  8.    do
  9.    {
  10.        if( a == 15)
  11.        {
  12.           // 跳过迭代
  13.           a = a + 1;
  14.           continue;
  15.        }
  16.        cout << "a 的值:" << a << endl;
  17.        a = a + 1;
  18.    }while( a < 20 );

  19.    return 0;
  20. }
复制代码
当上面的代码被编译和执行时,它会产生下列结果:
  1. a 的值: 10
  2. a 的值: 11
  3. a 的值: 12
  4. a 的值: 13
  5. a 的值: 14
  6. a 的值: 16
  7. a 的值: 17
  8. a 的值: 18
  9. a 的值: 19
复制代码

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

continue 语句

有时候可能想要保持循环,但又想让当前迭代立即结束,这时可以通过 continue 语句来完成。

当遇到 continue 时,出现在它之后的循环体中的所有语句都被忽略,循环准备下一次迭代。在 while 循环中,这意味着程序跳转到循环顶部的测试表达式。如果表达式仍然为 true,则下一次迭代开始,否则,循环退出。在 do-while 循环中,程序跳转到循环底部的测试表达式,它决定下一次迭代是否开始。在 for 循环中,continue 会导致更新表达式被执行,然后测试表达式被评估。

以下程序段表示在 while 循环中使用 continue:
  1. int testVal = 0;
  2. while (testVal < 10)
  3. {
  4.     testVal++;
  5.     if (testVal) == 4
  6.         continue; //终止循环的该次迭代
  7.     cout << testVal << " ";
  8. }
复制代码
这个循环看起来像是要显示整数 1〜10。但是,其实际输出如下:

1 2 3 5 6 7 8 9 10

请注意,数字未不打印。这是因为当 testVal 等于 4 时,continue 语句会导致循环跳过 cout 语句并开始下一次迭代。

注意,与 break 语句一样,continue 语句违反了结构化编程规则,使得代码难以理解、调试和维护。因此,应该谨慎使用 continue。

当然,continue 语句有一些实际用途,下面的程序说明了其中的一个应用。该程序计算 DVD 租赁的费用,current releases 版本费用为 3.50 美元,所有其他版本费用为 2.50 美元。如果一个客户租了几张 DVD,每 3 张有 1 张是免费的。continue 语句用于跳过计算每个第 3 张 DVD 费用的循环部分。
  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4. int main()
  5. {
  6.     int numDVDs;    // Number of DVDs being rented
  7.     double total = 0.0; // Accumulates total charges for all DVDs
  8.     char current; // Current release? (Y/N)
  9.    
  10.     // Get number of DVDs rented
  11.     cout << "How many DVDs are being rented?";
  12.     cin >> numDVDs;
  13.    
  14.     //Determine the charges
  15.     for (int dvdCount = 1; dvdCount <= numDVDs; dvdCount++)
  16.     {
  17.         if (dvdCount % 3 == 0)// If it's a 3rd DVD itT s free
  18.         {
  19.             cout <<" DVD #" << dvdCount << " is free! \n";
  20.             continue;
  21.         }
  22.         cout << "Is DVD #" << dvdCount << " a current release (Y/N) ? ";
  23.         cin » current;
  24.         if ( (current == 'Y') || (current == 'y'))
  25.             total += 3.50;
  26.         else
  27.             total += 2.50;
  28.     }
  29.     //Display the total charges
  30.     cout << fixed << showpoint << setprecision(2);
  31.     cout << "The total is $" << total << endl;
  32.     return 0;
  33. }
复制代码
程序输出结果:

How many DVDs are being rented? 6
Is DVD #1 a current release (Y/N) ? y
Is DVD #2 a current release (Y/N) ? n
DVD #3 is free!
Is DVD #4 a current release (Y/N)? n
Is DVD #5 a current release (Y/N)? y
DVD #6 is free!
The total is $12.00
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

返回列表