您所在的位置: 首页>>读书频道>>设计开发>>.Net系列>>

3.7.2 for循环

http://book.51cto.com  2008-07-19 11:51  (美)米凯利斯(Michaelis, M.)著/周靖译  人民邮电出版社  我要评论(0)
  • 摘要:《C#本质论》第3章运算符和控制流,这一章将讲述运算符和控制流语句。利用运算符所提供的特定语法,可以针对计算中涉及的操作数执行各种不同的计算或操作,本小节为大家介绍for循环。
  • 标签:C#  本质论  代码  运算符  控制流  C#本质论

3.7.2 for循环

递增和递减运算符经常在for循环中使用。与while循环相似,for循环反复执行一个代码块,直到满足一个指定的条件。区别在于,for循环有一套内建的语法规定了如何初始化、递增以及测试一个计数器的值。

代码清单3-42展示了如何使用for循环以二进制形式显示一个整数。输出3-21展示了这个代码清单的结果。

代码清单3-42 使用for循环

public class BinaryConverter
{
public static void Main()
{
const int size = 64;
ulong value;
char bit;
      System.Console.Write ("Enter an integer: ");
// Use long.Parse() so as to support negative numbers
// Assumes unchecked assignment to ulong.
value = (ulong)long.Parse(System.Console.ReadLine());
      // Set initial mask to 100....
ulong mask = 1ul << size - 1;
for (int count = 0; count < size; count++)
{
bit = ((mask & value) > 0) ? '1': '0';
System.Console.WriteLine(bit);
// Shift mask one location over to the right
mask >>= 1;
}
}
}

输出3-21

Enter an integer: -42
11111111111111111111111111111111111
11111111111111111111111010110


在代码清单3-42中,我们将一个位掩码应用于由用户输入的数的每一位,总共要应用64次。for循环声明并初始化变量count,要求每一次循环都递增count,并指定当count到达64的时候结束循环。for循环中的每个表达式都对应一个语句。正因为如此,对不同表达式进行分隔的是分号而不是逗号。

for循环的常规形式如下:

for(initial; boolean-expression; loop)
statement

下面对for循环的各个部分进行了解释:

initial表达式执行第一次循环之前的操作。在代码清单3-42中,它声明并初始化count变量。initial表达式不一定非要声明一个新变量。例如,可以在之前声明好变量,在for循环中只是初始化它。然而,在这里声明的变量只具有for语句的作用域。

for循环的boolean-expression(布尔表达式)部分指定了循环结束条件。一旦该条件为false,就会终止循环,这和while循环是相似的。只要布尔表达式求值为true,for循环就会一直重复。在上例中,循环会在count递增到64的时候退出。

loop表达式会在每次循环之后执行。在上例中,count++会在mask右移位(mask >>= 1)之后,但在布尔表达式求值之前执行。第64次循环的时候,count会递增到64,造成boolean-expression变成false,因而终止循环。由于每个表达式都可以视为一个单独的语句,因此for循环中的每个表达式都以分号分隔。

for循环的statement部分是在条件表达式保持为true的时候执行的代码。

在代码清单3-42中,for循环的执行步骤可以用以下伪代码来表示。

(1) 声明并将count初始化为0。

(2) 验证count小于64。

(3) 计算bit并显示它。

(4) 对mask执行右移位处理。

(5) count递增1。

(6) 如果count<64,就返回步骤3。

for语句的圆括号内允许省略任何元素。for(;;){ ... }是完全有效的,只要你有办法从循环中退出。类似地,initial和loop表达式可以是由多个子表达式构成的一个复杂表达式,如代码清单3-43所示。

代码清单3-43 使用多个表达式的for循环

 for(int x=0, y=5; ((x<=5) && (y>=0)); y--, x++)
{
System.Console.Write("{0}{1}{2}\t",
x, (x>y? '>' : '<'), y);
}

代码清单3-43的结果如输出3-22所示。

输出3-22

 0<5   1<4   2<3   3>2   4>1   5>0

在这个例子中,逗号的行为和声明语句中的逗号是完全一样的,用于声明并初始化多个变量。但是,程序员应该避免像这样的复杂表达式,因为它们的可读性比较差。

通常可以将for循环改写成一个while循环,如下所示:

 initial;
while(boolean-expression)
{
statement;
loop;
}

初学者主题:选择for和while循环

虽然两种语句可以交换使用,但假如涉及某种形式的计数器,而且在循环初始化的时候就知道循环次数,那么一般使用for循环。相反,假如循环不基于计数器,或者在刚开始的时候无法确定循环次数,那么一般使用while循环。

【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
让你的代码“炫”起来——WPF开发教程
C#实用基础教程
C#技术开发指南
深入Vista应用程序开发
Ruby on Rails 社区网站开发
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有