欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C#从入门到精通 » 正文

第4章 使用决策语句

创建时间:2013年09月02日 20:52  阅读次数:(2375)
分享到:
本章旨在教会你: 
■ 声明布尔变量 
■ 使用布尔操作符来创建结果为true 或false 的表达式 
■ 使用if 语句,依据一个布尔表达式的结果来做出决策 
■ 使用switch 语句做出更复杂的决策 

第3章讲述了如何使用方法来分组相关的语句,还介绍了如何利用参数向方法传入数据,如何使用return语句从方法中传出数据。将程序分解成一系列方法,每个方法都负责一项具体的任务或计算,这是一个推荐的设计策略。许多程序都需要解决既大又复杂的问题。将程序分解成方法有助于理解这些问题,并集中精力每次解决一个问题。此外,我们还希望自己编写的方法能根据情况来执行不同的行动。本章将介绍具体做法。

4.1 声明布尔变量
和现实世界不同,在程序世界中,每一件事情要么黑,要么白;要么对,要么错;要么是真的,要么是假的。例如,假定创建一个名为x的整数变量,把值99赋给x,然后问:“x中包含了值99吗?”答案显然是肯定的。如果问:“x小于10吗?”答案显然是否定的。这些正是布尔(Boolean)表达式的例子。一个布尔表达式的值肯定为true或false。

注意:对于这些问题,并非所有编程语言都会做出相同的回答。例如,一个未赋值的变量包含的是一个未定义的值,不能说它肯定小于10。正是因为这个原因,新手在写C 和C++程序时容易出错。Microsoft Visual C#编译器解决这个问题的方案是确保在访问一个变量之前,肯定已经为它赋了一个值。如果试图访问一个未赋值的变量,程序将拒绝编译。

Microsoft Visual C#提供了一个名为bool的数据类型。bool变量只能容纳两个值之一:true或false。例如,以下3个语句声明了一个名为areYouReady的bool变量,将true值赋给它,
并在控制台上输出它的值:
bool areYouReady;
areYouReady = true;
Console.WriteLine(areYouReady); // 输出true

4.2 使用布尔操作符
布尔操作符(Boolean operator)是求值结果要么为true,要么为false的一个操作符。C#提供了几个非常有用的布尔操作符,其中最简单的是NOT(求反)操作符,它用感叹号(!)来表示。!操作符求一个布尔值的反值。在上例中,假如变量areYouReady的值为true,则表达式!areYouReady的值为false。

4.2.1 理解相等和关系操作符
两个更常用的布尔操作符是相等(==)和不等(!=)操作符。利用这两个二元操作符,可以判断一个值是否与相同类型的另一个值相等。下表展示了这些操作符是如何工作的,它以一个名为age的int变量为例。
操 作 符 含 义 示 例 结果(假定age = 42)
== 等于 age == 100 false
!= 不等于 age != 0 true

与上述两个操作符密切相关的是关系操作符(relational operator)。利用这些操作符,可以判断一个值是否小于或大于同类型的另一个值。下表展示了如何使用这些操作符。
操 作 符 含 义 示 例 结果(假定age = 42)
< 小于 age < 21 false
<= 小于或等于 age <= 18 false
> 大于 age > 16 true
>= 大于或等于 age >= 30 true

4.2.2 理解条件逻辑操作符
C#还提供了另两个布尔操作符:逻辑AND(逻辑与)操作符(用&&表示)和逻辑OR(逻辑或)操作符(用||表示)。这两个操作符统称为条件逻辑操作符(conditional logical operator)。它们的作用是将两个布尔表达式或值合并成单独一个布尔结果。这两个二元操作符与相等/关系操作符的相似之处在于,它们的结果也是true或false。不同之处在于,它们操作的值(操作数)本身就必须是true或false。
只有在作为操作数的两个布尔表达式都为true的前提下,&&操作符的求值结果才为true。

例如,只有在percent的值大于或等于0,而且percent的值小于或等于100的前提下,以下语句才会将true值赋给validPercentage:
bool validPercentage;// 有效百分比
validPercentage = (percent  >= 0) && (percent <= 100);

提示:新手常犯的一个错误是在合并两个测试的时候,只对percent变量命名一次,就像下面这样: 
percent  >= 0 && <= 100 // 这个语句不能编译

使用圆括号有助于避免这种类型的错误,同时也有助于澄清表达式。例如,可以对比一下以下两个表达式: 
validPercentage = percent  >= 0 && percent <= 100
validPercentage = (percent  >= 0) &&(percent <= 100)

两个表达式返回的是同一个值,因为操作符&&的优先级低于 >=和<=。然而,第二个表达式采取更清晰易懂的方式表明了它的目的。 

两个操作符任何一个为true,操作符||的求值结果都为true。使用操作符||,我们可以判断两个条件中是否有任何一个成立。在percent的值小于0或大于100的情况下,以下语句会将值true赋给
invalidPercentage:
bool invalidPercentage;
invalidPercentage = (percent < 0) || (percent  > 100);

4.2.3 短路求值
操作符&&和||都支持一个名为短路求值(short circuiting)的功能。有时,根本没有必要将两个操作数都求值出来。例如,假定操作符&&的左操作数求值为false,那么整个表达式的结果肯定是false,无论右操作数的值是什么。类似地,如果操作符||的左操作数求值为true,那么整个表达式的结果肯定是true。在这些情况下,操作符&&和||将跳过对右侧的布尔表达式的求值。下面是一些例子:
(percent  >= 0) && (percent <= 100)

在这个表达式中,假如percent的值小于0,那么操作符&&左侧的布尔表达式会被求值为false。该值意味着整个表达式的结果肯定为false,无论右侧的表达式是什么。所以,不会对右侧的表达式进行求值。再如下例:
(percent < 0) || (percent  > 100)

在这个表达式中,假如percent的值小于0,那么操作符||左侧的布尔表达式会被求值为true。该值意味着整个表达式的结果肯定为true。所以,不会对右侧的表达式进行求值。

如果能小心地设计使用了条件逻辑操作符的表达式,就可以通过避免不必要的工作来提升代码的性能。将容易计算、简单的布尔表达式放到条件逻辑操作符的左边,将较复杂的表达式放到右边。在许多情况下,程序并不需要对更复杂的表达式进行求值。
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 16+54=? 的结果(结果是:70)
结  果: