设为首页 加入收藏

TOP

3.2.2 for循环的变体(1)
2013-10-07 16:07:21 来源: 作者: 【 】 浏览:64
Tags:3.2.2 for 循环 变体

3.2.2  for循环的变体(1)

大多数时候,for循环中的表达式都是以相当标准的方式使用的:第一个表达式用于初始化一个或多个循环计数器,第二个表达式用于测试循环是否应该继续,第三个表达式递增或递减一个或多个循环计数器。没人强迫我们以这种方式使用表达式,但是,可能有相当多的变体。

for循环中的初始化表达式也可以包括循环变量的声明。在前面的示例中,还可以这样编写循环,即在第一个控制表达式中包括循环计数器i的声明。
 

  1. for(int i = 1; i <= max; i++)                               // Loop specification  
  2. sum += i;                                                                                           // Loop statement  

当然,可能需要省略该程序中原来对i的声明。如果对上一个示例进行这样的修改,则将发现该程序现在不能编译。因为循环变量i在循环之后不再存在,所以不能在输出语句中引用该变量。循环的作用域从for表达式开始,一直延伸到循环体的结束。循环体可以是大括号之间的代码块,也可以是一条语句。现在计数器i是在循环作用域内声明的,所以不能在输出语句中引用该变量,因为输出语句在循环作用域的外部。如果需要在执行循环之后使用计数器的值,则必须在循环作用域的外部声明计数器变量。

可以完全省略循环中的初始化表达式。因为i具有初始值1,所以可以将该循环写成下面的形式:
 

  1. for(; i <= max; i++)                                    // Loop specification  
  2. sum += i;                                                               // Loop statement  

该循环仍然需要分开初始化表达式与测试表达式的分号。事实上,无论是否省略任何或全部控制表达式,两个分号都不能省略。如果省略第一个分号,编译器将无法判断省略了哪个表达式,或者说遗漏了哪个分号。

循环语句可以为空。例如,可以将上一个示例中for循环的循环语句放入递增表达式内部,这种情况下该循环就成为:
 

  1. for(; i <= max; sum += i++);                                // The whole loop 

为了指示循环语句为空,仍然需要在圆括号后面加上分号。如果省略该分号,则紧跟这行代码的语句将被解释为循环语句。有时,空循环语句会写在单独一行上,如下所示。

  1. for(; i <= max; sum += i++)                                     // The whole loop  
  2. ;  

试一试:使用多个计数器

为了在for循环中包括多个计数器,可以使用逗号运算符。在下面的程序中,将看到这种用法。
 

  1. // Ex3_09.cpp  
  2. // Using multiple counters to show powers of 2  
  3. #include <iostream> 
  4. #include <iomanip> 
  5. using std::cin;  
  6. using std::cout;  
  7. using std::endl;  
  8. using std::setw;  
  9. int main()  
  10. {  
  11. const int max(10);  
  12. for(long i = 0Lpower = 1L; i <= max; i++, power += power)  
  13. cout << endl 
  14. << setw(10) << i << setw(10) << power; // Loop statement  
  15. cout << endl;  
  16. return 0;  
  17. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.2.1 循环的概念(2) 下一篇3.2.2 for循环的变体(2)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 C 语言或者限制使 (2025-12-25 08:50:05)
·C++构造shared_ptr为 (2025-12-25 08:50:01)
·既然引用计数在做 GC (2025-12-25 08:49:59)
·Java 编程和 c 语言 (2025-12-25 08:19:48)
·. net内存管理宝典这 (2025-12-25 08:19:46)