Chapter 04 流程控制
4.1 布尔逻辑
1.var1=var2^var3 ; (^异或运算符)
2.&和| 与 &&和||的区别:
结果都是一样的,但是&&和||性能更好,尽可能的使用&&与||。
4.1.1 位运算符
1.处理的是存储在变量中的一系列位,而不是变量的值。
& 、 | 、^ 、 ~
<< // var1=var2<<var3 表示var2的二进制值向左移动var3位,后面补0
>> // var1=var2<<var3 表示var2的二进制值向右移动var3位
把数值每向左移动一位,该数都要乘以2;每向右移动一位,该数都要除以2,并丢弃余数。
Notice:
在大多数代码中,都不使用这些运算符。他们主要高度优化的代码,在这些代码中不能使用其他数学操作。因此他们通常用于设备驱动或系统代码。
4.1.2 布尔赋值运算符
&= 、 |= 、 ^=
<<= 、 >>=
4.2 goto语句
1.C#允许给代码加上标签,这样就可以使用goto语句直接跳转到这些代码行上。该语句有其优缺点。主要的优点是:这是控制什么时候执行哪些代码的一种非常简单的方式。主要缺点是:过多使用这个技巧将很难读懂代码。
goto 语句用法:
goto <labelname>;
标签定义:
<labelname>:
//code
4.3 分支
1.三种分支技术:三元运算符、if语句、switch语句
4.3.1 三元运算符
<test>?<resultTrue>:<resultFalse>
4.3.2 if语句
4.4.3switch 语句
1.switch语句可以一次将测试值与多个值进行比较,而不是仅一个测试条件。这种测试仅限于离散的值,而不是像“大于X”这样的子句。
2.执行完每个部分的代码后,还需要另一个语句break。在执行完一个case块之后,在执行另一个case语句是非法的。但是在C++中,可以运行完一个case语句后,运行另一个case语句。
3.除了可以使用break中断switch语句的执行,还可以使用return语句,中断当前函数的运行,这远胜于中断switch结构的执行(*******后补*********)。也可以使用goto语句,因为case语句实际上是在C#代码中定义的标签。
4.如果把多个case语句放在一起,其后加一行代码,实际上是一次检查多个条件。如果满足这些条件中的任何一个条件,就会执行代码。如:
switch(<testVar>)
{
case <comparisonVal1>:
case <comparisonVal2>:
<code to execute> ;
break ;
……
}
5.每一个comparisonValX都必须是一个常量。
4.4 循环
4.4.1 do.....while
执行循环代码,然后进行一个布尔测试,如果测试结果为true,就再次执行这段代码。当为false时,就退出循环。
do
{
<code to be looped>
}while(<test>) ;
4.4.2 while
While循环非常类似与do循环,但是有一个重要的区别:while循环中的布尔测试是在循环开始时执行的,而不是最后。
while(<test>)
{
<code to be looped>
}
4.4.3 for
这类循环可以执行指定的次数,并维护他自己的计数器。
for (<initialization>;<condition>;<operation>)
{
< code to loop>
}
4.4.4 循环中断
- break.——立即终止循环。
- continue ——立即终止当前的循环,继续执行下一次循环。
- goto ——可以跳出循环,到已标记好的位置上(不建议使用)。
- return ——跳出循环及其包含的函数。
Notice:
使用goto语句跳出循环是合法的,但是使用goto语句从外部进入循环是非法的。