流程控制主要分为顺序结构、选择结构、循环结构。任何一段C程序都能由上面三种结构组合构成。
1.goto语句
goto并不是真正的循环语句,只是通过转向操作可以实现循环的效果。以以下代码讲解goto如何完成循环 如下
int i = 0;
int sum = 0;
loop:
sum = sum + i;
i++;
if(i <= 100)
{
goto loop;
}
代码中 loop是一个标签,这段代码通过goto的转到功能在i还小于等于100时,总是会回到sum = sum + i;这句代码依次往下执行由此构成循环,得到1加到100的总和。
2.switch语句
语法
switch(表达式)
{
case(常量表达式1):
语句1
break;
case(常量表达式2):
语句2
break;
case(常量表达式3):
语句3
break;
default:
语句4
break;
}
语义:表达式的值去匹配case后面的常量表达式,匹配到后将执行后面的语句。
switch语句结束条件:只有执行过程中遇到break或者执行到程序最后在会结束整个switch语句。
注意:switch后面的表达式的结果必须是一个整型的数据;case后面只能接常量或者常量表达式;case和default是一个只在switch中起作用的标签,标签写错不会报错,只是匹配不到对应的情况;default不一定写到最后,但写在前面时break不能缺省,防止其继续执行后面的语句,因为表达式与case只匹配一次,匹配成功执行语句不退出则依次往下执行。
对于上面的代码:
编译不会报错 .输出2 不存在 1 3 ;,case和default作用是标签,相当于书签,给后面可执行的语句起一个标签,标签来代表这句话。
default不一定放在最后,但最好要加上break。
3.if语句分为3种形式
形式一 单分支
if(表达式)
{
语句
}
形式二 双分支
if(表达式)
{
语句1
}
else
{
语句2
}
形式三 多分支
if(表达式1)
{
语句1
}
else if(表达式2)
{
语句2
}
...
else
{
语句n
}
3.&&和||运算有截断特性
对于&&:如1<0&&a++,左边为假式子,那么结果就已经确定为假,则右边就不会执行。
||同理