《C#入门经典》学习笔记(流程控制)

流程控制

程序流程就是C#代码行的执行顺序
两种方法控制流程:
1 分支:有条件地执行代码
2 循环:重复执行相同的语句

 

布尔逻辑

bool类型有两个值:true或false

比较运算符(关系运算符)
运算符 类别 范例
== 二元 var1=var2==var3;
!= 二元 var1=var2!=var3;
< 二元 var1=var2<var3;
> 二元 var1=var2>var3;
<= 二元 var1=var2<=var3;
>= 二元 var1=var2>=var3;

注:var1是bool变量,var2和var3可以是各种类型

布尔运算符
用于布尔值
运算符 类别 范例   说明
! 一元 var1=!var2;  逻辑非
^ 二元 var1=var2^var3;  逻辑异或(有且仅有一个是true)
& 二元 var1=var2&var3;  逻辑与
| 二元 var1=var2|var3;  逻辑或
&& 二元 var1=var2&&var3; 逻辑与
|| 二元 var1=var2||var3; 逻辑或

注:"&&"和"||"的效率比"&"和"|"高,因为前者当第一个操作数就确定结果的话就不再考虑第二个操作数,而后者总是要计算


位运算符

位运算符实际上处理的是储存在变量中的一系列位,而不是变量的值

&运算符
操作数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

~运算符(一元运算符,取反)
操作数的位 ~结果的位
1  0
0  1

<<和>>位移运算符
运算符 类别 范例   说明
>> 二元 var1=var2>>var3; var1等于var2二进制值右移var3位的值
<< 二元 var1=var2<<var3; var1等于var2二进制值左移var3位的值


布尔赋值运算符

运算符 类别 范例  说明
&= 二元 var1&=var2; var1等于var2&var3
|= 二元 var1|=var2; var1等于var2|var3
^= 二元 var1^=var2; var1等于var2^var3
>>= 一元 var1>>=var2; var1等于var1二进制值右移var2位的值
<<= 一元 var1<<=var2; var1等于var1二进制值左移var2位的值


运算符的优先级

优先级由高到低
++ -- (前缀) + - (一元) () ! ~
* / %
+ -
<< >>
< > <= >=
== !=
&
^
|
&&
||
= += -= *= /= %= <<= >>= &= ^= |=
++ -- (后缀)


goto语句

c#允许给代码行加上标签,可以使用goto语句跳转到标签(建议不使用)
优点:方式简单
缺点:过多地使用将使代码很难读懂
例如:
int myInteger = 17;
goto myLabel;
myInteger++;
myLabel://标签
Console.WriteLine("{0}", myInteger);
将跳过myInteger++;直接显示17

 

分支

分支是控制下一步要执行哪些代码的过程
分支技术:三元运算符、if语句、switch语句


三元运算符

语法:
<test> ? <resultIfTrue> : <resultIfFalse>
计算<test>后应该得到一个布尔值,再根据这个值来确定结果
例如:
string sResult = (myInt<10) ? "less then 10" : "greater then or equal to 10";


if 语句

语法:
if(<test>)
 <code executed if <test> is true>
else
 <code executed if <test> is false>

if语句可以嵌套


switch 语句

语法:
switch(<testVar>)
{
    case <comparisonVal1>:
        <code executed if <testVar> == <comparisonVal1>>
        break;
    ....
    case <comparisonValN>:
        <code executed if <testVar> == <comparisonValN>>
        break;
    default:
        <code executed if <testVar> != <comparisonVals>>
        break;
}

注意:C#与C++不同,不可以在运行完一个case语句后,运行另一个case语句
用break或return都可以防止这种情况,也可以用goto
例如:
switch(<testVar>)
{
    case <comparisonVal1>:
        <code executed if <testVar> == <comparisonVal1>>
        goto case <comparisonVal2>;
    case <comparisonVal2>:
        <code executed if <testVar> == <comparisonVal2>>
        break;
    ....

堆叠多个case语句
一次检查多个条件,满足其中一个就会执行代码
例如:
switch(<testVar>)
{
    case <comparisonVal1>:
    case <comparisonVal2>:
        <code executed if <testVar> == <comparisonVal1> or <testVar> == <comparisonVal2>>
        break;
    ....

comparisonValX的值必须是一个常量或字面值

 

循环

循环就是重复执行一些语句


do 循环

语法:
do
{
 <code to be loop>
} while(<test>);


while 循环

语法:
while(<test>)
{
 <code to be loop>
}


for 循环

语法:
for(<initialization>;<condition>;<operation>)
{
 <code to be loop>
}


循环的中断

命令  说明
break  立即终止循环
continue 立即终止当前循环(继续下一次循环)
goto  可跳出循环到指定标签
return  跳出循环及其包含函数


无限循环

while(true)
{
 <code to be loop>
}
有时可能会用到无限循环,用除"continue"外的中断命令跳出循环 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值