第五章 使用复合赋值和循环语句

来源:互联网 发布:星际航行概论 知乎 编辑:程序博客网 时间:2024/06/11 19:19

5.1使用复合赋值操作符

可将任何算术操作符与赋值操作符合并见下表。这些操作符称为复合赋值操作符
复合赋值操作符举例
操作符+=可用于字符串;作用是将一个字符串附加到另一个字符串末尾。例如,以下代码在控制台上显示”Hello John”:

string name = "John";string greeting = "Hello ";greeting += name;Console.WriteLine(greeting);

但其他任何复合赋值操作符都不能用于字符串。

  • 变量递增或递减 1 不要使用复合赋值操作符,而是使用操作符++和–

5.2 使用 while 语句

使用 while 语句,可在条件为 true 的前提下重复运行一个语句。while 语句的语法如下:

while ( booleanExpression )statement

先求值 booleanExpression(布尔表达式,注意必须放在圆括号中),如果为 true,就运行语句(statement)。再次求值 booleanExpression,仍为 true 就再次运行语句。再次求值booleanExpression……这个过程一直继续, 直至结果为 false, 此时 while 语句退出, 从 while构造之后的第一个语句继续。while 语句在语法上与 if 语句有许多相似的地方(事实上,除了关键字不同,语法完全相同),具体如下。

  • 表达式必须是布尔表达式。
  • 布尔表达式必须放在圆括号中。
  • 首次求值布尔表达式为 false,语句不运行。
  • 要在 while 的控制下执行两个或更多语句,必须用大括号将语句分组成代码块。
    while 循环的变量 i 控制循环次数。这是常见的设计模式,具有这个作用的变量有时也称为哨兵变量

5.3 编写 for 语句

for (initialization; Boolean expression; update control variable)statement
  • statement(语句)是 for 循环主体,要么是一个语句,要么是用{}封闭的代码块
for (int i = 0; i < 10; i++){Console.WriteLine(i);}
  • 初始化(int i = 0)只在循环开始时发生一次。
  • 如果布尔表达式(i < 10)的求值结果为 true, 就运行语句(Console.WriteLine(i);)。
  • 随后,控制变量进行更新(i++),布尔表达式重新求值,如果仍为 true,语句再次执行,控制变量更新,布尔表达式重新求值……如此反复。

【注意三点】
①初始化只发生一次;
②初始化后先执行循环主体语句,再更新控制变量;
③更新控制变量后再重新求值布尔表达式。

for 语句的三个部分都可以省略。如果省略布尔表达式,布尔表达式就默认为 true。以下 for语句将一直运行:

for (int i = 0; ;i++){Console.WriteLine("根本停不下来!");}

省略初始化和更新部分会得到一个看起来很奇怪的 for 循环,如下所示:

int i = 0;for (; i < 10; ){Console.WriteLine(i);i++;}

for 语句的初始化、布尔表达式和更新控制变量这三个部分必须用分号分隔,即使某个部分的实际内容并不存在。理解 for 语句作用域

前面说过,可在 for 语句的“初始化”部分声明新变量。变量作用域限制于 for 语句主体。for 语句结束,变量消失。该规则造成两个重要结果。首先,不能在 for 语句结束后使用变量,因为它已不在作用域中。下面是一个例子:

for (int i = 0; i < 10; i++){...}Console.WriteLine(i); // 编译错误

其次,可在两个或更多 for 语句中使用相同变量名,因为每个变量都在不同作用域中。下面是一个例子:

for (int i = 0; i < 10; i++){...}for (int i = 0; i < 20; i += 2) // okay{...}

5.4 编写 do 语句

do 语句的语法如下(不要忘记最后的分号):

dostatementwhile (booleanExpression);

while 和 for 语句都在循环开始时测试布尔表达式。这意味着假如首次测试布尔表达式为false,循环主体一次都不运行。do语句则不同,它的布尔表达式在每次循环之后求值,所以主体至少执行一次

break 语句和 continue 语句

执行 break 后,系统立即终止循环,并从循环之后的第一个语句继续执行。在这种情况下,循环的“更新”和“继续”条件都不会重新判断。相反,continue 语句造成当前循环结束,立即开始下一次循环(在对布尔表达式重新求值之后)。

0 0