第四章 流程控制
第一部分:本章内容
1、布尔逻辑的含义及其用法 2、分支结构 3、循环结构
第二部分 知识点 2.1、 布尔逻辑
布尔逻辑关注是非问题,即True(真、是)和False(假、非)。本节便讲解布尔逻辑的有关内容。
2.1.1 逻辑运算符
bool是System.Boolean的别名,c#中用bool关键字声明布尔变量True或False。以下代码声明了两个bool型的变量: bool myBooll=True; bool myBool2=False; C#中用于bool型变量的运算符包括“&”、“I”、“^’’、“!”、“&&”和“||\。 “&”运算符 “&”运算符表示逻辑“与”操作,只有参与运算的双方都为True时结果才为True。 “|”运算符 “|”运算符表示逻辑“或”操作,只有参与运算的双方都为False时,结果才为False。 \运算符 \,运算符表示逻辑“异或”操作,参与运算的双方中只有一个True时,结果才为True。 “!”运算符 “!”运算符表示逻辑“非”操作,当参与运算的双方都为False时,结果为True。 “&&”运算符 “&&”运算符表示条件逻辑“与”操作,其运算规则同“&”运算符,不同的是“&&”仅在必要时才计算第二个操作数。 此时完全可以不进行第二个操作数的计算而直接给出结果,但“&”不提供这样的功能。“&&”运算符则提供了上述功能,以下代码演示了“&&”运算符的功能: using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace Example6_5 ( class Program { static void Main(string[] args) {;
Console.WriteLine(”True&&False is:{O}”,MyBoolTrue()&&MyBoolFalse()); Console.WriteLine(”False&&True is:{0}”,MyBoolFalse()&&MyBoolTrue()); Console.ReadLine(); ) //返回True的方法,同时输出“True returned!” static bool MyBoolTrue() ( Console.WriteLine(”True returned!”): return true; )
“||”运算符 “||”运算符表示条件逻辑“或”操作,其运算规则同“|”运算符,不同的是“||”仅在必要时才计算第二个操作数。 事实上,第一行和第二行代码中的第一个操作数为True,由“|”的运算规则可知,操作数中存在True则其结果必定为True。此时完全可以不进行第二个操作数的计算而直接给出结果,但“|”不提供这样的功能。“||”运算符则提供了上述功能,以下代码演示了“||”运算符的功能: using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace Example6_6 { class Program { static void Main(string[] args) Console.WriteLine(\:{0}”,MyBoolTrue() || MyBoolFalse()); Console.WriteLine(”False II True is:{0}\ Console.ReadLine(); //返回True的方法,同时输出“True returned!” static bool MyBoolTrue() { Console.WriteLine(”True returned!”); return true; ) //返回False的方法,同时输出“False returned!” static bool MyBoolFalse() { Console.WriteLine(”False returned!”); return faIse; ) ) )
程序运行结果如下: True || False is:True False returned! True returned! False || True is:True 从结果中可以看出,进行True||false运算时,MyBoolFalse方法没有被调用;而进行False||True运算时,MyBoolTrue方法被调用并返回 True。程序运行结果很好地说明了“||”运算的特殊性,即“||”运算可以减少方法的调刖或表达式的计算,提高程序的运行效率。 比较运算符 现实的生活学习中经常会用到“大于”,“小于\这样的词汇,在c#中也存在同样的运算符。比较运算符与数学语言中的运算符非常相似, 需要注意“等于”运算符“==”和“不等于”运算符“!=”与数学符号的差别。 2.1.2 逻辑运算符的优先级和赋值运算符的优先级 同算术运算符一样,逻辑运算符也存在优先级,结合以前讲过的算术运算符的优先级,可以得到更新的新运算符优先级。
高 ++, --,(用于前缀); (); +, -(一元); !; ~ *, /, % +, - <<, >> | <, >,<=, >= | ==, != | & | ^ | && ||
=, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= 低 ++,--(用作后缀)
赋值运算符优先级(由高到低):
基本 —> 一元 —> 乘除 —> 加减 —> 移位 —> 比较 —>相等 —> 位与 —> 位异或 —> 位或 —> 逻辑与 —> 条件—> 赋值
2.2 流程控制语句 2.2.1 goto语句 goto是c#中的一个关键字,goto语句的功能是将程序控制权直接传递给标记语句。 goto语句早在c和Basic语言中就已经出现,拥有一定计算机知识的 可能已经非常熟语句。从应用角度看,goto语句有一定的实用价值,但是由于goto语句的随意跳转特性,在历籍、教程中部不建议开发人员使用goto语句。 很多高级程序员也不建议使用goto语句,在一些程序设计标准和准则中明确指出不允许在使用goto语句,另外有文献指明现有的语句完全可以实现goto语句的功能这一结论。 虽然goto语句由自身的特性导致其不易于在程序中随意使用,但作为一个每种程序设计都保留的关键字,goto语句仍然有其实用性。C#中仍然提供了对goto语句的支持。 2.2.2分支