流程控制语句
一、分类
顺序:自上而下,一句一句执行。
分支:根据判定条件选择执行代码。
循环:某些代码执行多次。
二、分支语句
- if else
If的第四种格式:
if (条件表达式)
语句1:
当条件表达式为真时会执行if后面的第一条语句。
开发中尽量不要使用这种格式。
Demo1:
#include <stdio.h> int main(int argc, const char * argv[]) { int a = 2, b = -1, c = 2; if (a < b) if (b < 0) c = 0; else c++; printf("%d\n",c);//输出:2 return 0; }
控制台打印:
2
Program ended with exit code: 0
Demo2:
#include <stdio.h> int main(int argc, const char * argv[]) { int a,b,c,d; a = c = 1; b = 20; d = 100; if (!a) d = d++; else if (!b) if(d) d = --d; else d = d--; //if没有运行,条件全部为假 printf("%d\n\n",d);//100 return 0; }
控制台打印:
100
Program ended with exit code: 0
Demo3:
#include <stdio.h> int main(int argc, const char * argv[]) { for (int i = 0; i<10; i++) { if (i % 2) continue; if (i == 8) break; printf("i = %d\n",i); } return 0; }
控制台输出:
i = 0
i = 2
i = 4
i = 6
Program ended with exit code: 0
条件运算符(三目运算符) ?:
表达式1?表达式2:表达式3;
如果表达式1的值为真,以表达式2的值作为整个表达式的值,否则以表达式3的值作为整个表达式的值。
- 三目运算符可以用来简化if else代码。
- 弊端:因为是一个运算符,所以运行完必须有一个结果。
- 当遇到比较简单的判断,并且有返回值的情况就用三目运算符,其它情况用if.
switch(表达式)
{
case常量表达式1:
语句1;
break;
……
default:
语句n+1;
break;
}
- break用在switch…case中用于结束某个case,然后执行switch之外的语句。
- 默认情况下default后面的break可以省略,如果default写在case前面break不能省略。
- 只要常量表达式返回值是整型就可以。
‘A’:字符的本质就是整型数。
- switch能解决的,if都能解决。当对区间进行判断的时候用if,当对固定且不多的几个数值进行判断的时候用switch。
Demo:
#include <stdio.h> int main(int argc, const char * argv[]) { int a = 0; switch (a) { case 0:{ //如果case中定义了新的变量,必须用大括号包住 int b = 20 + a; printf("%d\n",b); break; } case 2: break; default: break; } return 0; }
Demo:
#include <stdio.h> int main(int argc, const char * argv[]) { int a,b,c1,c2,x,y; a = 0; switch (a + b) { case a://报错 y = a + b; break; case b://报错 y = a - b; break; default: break; } printf("%d",y); return 0; }
三、循环语句
循环结构:
while(条件表达式){
语句;
}
- 在switch分支中,break是结束switch语句。
- 在循环中,break主要作用是结束循环,通常break语句总是与if语句连在一起。
- break只对switch和循环结构有效。
- continue结束本次循环,进入下次循环。仅能用于循环中。通常与if一起使用,用来加速循环。
do
{
语句;
}while(条件表达式);//分号代表循环体结束,不能省
- 一般情况下要使用while和do while都使用while
- 只有当无论条件是否满足都要执行一次循环体的情况才用do while
for(初始化表达式; 条件表达式; 循环后操作表达式)
{
语句;
}
- 当变量只是用来控制循环的次数的时候用for更节约内存。
- 当变量在循环结束后还需要使用,就用while
- while循环多用于不确定循环次数的循环
- for循环多用于知道循环次数,也多用于循环的嵌套。
循环嵌套:
- 尖尖朝上,改变内循环的条件表达式,让内循环的条件表达式随着外循环的i值变。
- 尖尖朝下,改变内循环的初始化表达式,让外循环的初始化表达式随着外循环的i值变化。