废话不多说了,继续入门......
第四章 流程控制
本章介绍控制程序流程的两种方法.程序流程就是C#代码的执行顺序.这两种方法是:
* 分支-有条件的执行代码.条件取决于计算的结果,例如:如果(ture)就执行这行代码.
* 循环重复执行相同的语句(重复执行一定的次数,或者在满足测试条件后停止执行).
这两种方法都要用到布尔逻辑.
本章的主要内容:
* 布尔逻辑的含义及其用法
* 如何控制代码的执行
bool类型可以有两个值:ture或false.
一些bool比较运算符也称为关系运算符.
==,!=,<,>,<=,>=
还有一些其它bool运算符
! 逻辑非,&逻辑与,| 逻辑或,^ 逻辑异或
条件bool运算符
&&逻辑与, || 逻辑或
&&,|| 与&,| 的区别:
这两对运算符的运算结果完全相同,但得到结果的方式有一个重要的区别:前者性能比较好.
如果&&运算符的第一个操作数是false就不需要考虑第二个操作数的值了,因为无论第二个操作数的值是什么其结果都是false.同样,如果第一个操作数是ture,||运算符就返回ture无需考虑第二个操作数的值了.
但是&和|却不是这样,他们的操作数总是要计算的.
因为操作数的计算是有条件的如果使用&&和||来代替&和|性能会有一定的提高.在大量使用这些运算符的应用程序中是比较明显的.作为一个规则尽可能使用&&和||运算符.
位运算符&和|
这两个运算符可以用于对数值执行操作.
实际上,它们处理的是存储在变量中的一系列位,而不是变量的值.
&运算符
操作数1的位 操作数2的位 &的结果
1 1 1
1 0 0
0 1 0
0 0 0
|运算符
操作数1的位 操作数2的位 |的结果
1 1 1
1 0 1
0 1 1
0 0 0
^运算符
操作数1的位 操作数2的位 ^的结果
1 1 0
1 0 1
0 1 1
0 0 0
C#中还可以使用一元位运算符它将操作数中的位取反,其结果应是操作数中位为1的,在结果中就是0,反之亦然.
操作数的位 ~的结果位
1 0
0 1
除了这些运算符,还有另外两个运算符:位移运算符
<<,>>
示例:
int var1, var2=10, var3=2;
var1=var2<<var3;
结果var1的值是40.
具体过程如下:
10的二进制 1010把该数向左移动两位得到101000,即十进制中的40.实际上,是执行了多个操作每向左移动两位该数都要乘以2,所以向在移动两位就是给原来的操作数乘以4,而每向右移动一位,就是给操作数除以2,并丢弃余数:
int var1,var2=10;
var1=var2>>1;
在这个示例中var1的值是5.
int var1,var2=10;
var1=var2>>2;
在这个示例中var1的值是2.
布尔赋值运算符:
&=,|=,^=
位移赋值运算符:
<<=,>>=
goto语句
C#允许给代码行上加上标签,这样就可以使用这些goto语句直接跳转到这些代码行上.
主要的优点:这是控制什么时候执行哪些代码的一种非常简单的方式.
主要的缺点:过多的使用这个技巧将很难读懂代码.
goto语句的用法如下:
goto <LabelName>;
标签定义:
<LabelName>:
例如下面的代码:
int myInteger=5;
goto myLabel;
myInteger+=10;
myLabel:
Console.WriteLine("myInteger={0}",myInteger);