一天一小步_我学C#入门精典_第三天

中国真不小,从江南折腾到东北,收拾乱七八糟的东西,竟花费了近1周的时间...今天才算折腾完了...

废话不多说了,继续入门......

第四章 流程控制

本章介绍控制程序流程的两种方法.程序流程就是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);