本文已参与「新人创作礼」活动,一起开启掘金创作之路
目录
前言
本文主要讲解:
- 分支语句
- 循环语句
语句
C语言中由一个分号;隔开的就是一条语句
printf("hehe");
1+2;
表达式
C语言中,用各种操作符把变量连起来,形成有意义的式子,就叫做表达式
操作符:+,-,*,/,%,>,<,=,==..
分支语句(选择结构)
if else组合
语法结构
//1
if(表达式)
语句;
//2
if(表达式)
语句1;
else
语句2;
//3. 多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
//4. 嵌套
if(表达式1)
{
语句1;
if(表示式x)
{
语句x;
}
else
{
语句y;
}
}
else if(表达式2)
{
语句2;
}
else
{
语句3;
}
注:
1. 表达式结果为真,则语句执行; C中0表示假,非0表示真 (可以使用bool类型,仅限c99之后)
2. if语句执行,先执行完成表达式的值,得到逻辑结果,再进行判定,再进行分支功能
if语句充当注释
if(0)
{
//注释的内容
}
不推荐,别人可能不理解(0表示为假,不进入循环)
else 与****if的配对
结论:就近原则(养成代码块包含的代码风格)
//测试代码换一下
int main()
{
int x = 0;
int y = 1;
if (10 == x)
if (11 == y)
printf("hello bit\n");
else
printf("hello world!\n");
system("pause");
return 0;
}
//else 匹配采取就近原则
//推荐写法
int main()
{
int x = 0;
int y = 1;
if (10 == x)
{
if (11 == y)
{
printf("hello bit\n");
}
}
else
{
printf("hello world!\n");
}
system("pause");
return 0;
}
注意事项
1.if 语句后面的分号:默认为if是一个语句,而后面{ }内的执行项会固定执行
2.if else语句顺序别弄反
3.赋值运算符不能用在产生布尔值得表达式上(尽量写在判断语句之前)
4.‘=’和‘==’别混淆,会造成不必要的错误
5.if-else if语句以else结束
switch case 组合
语法结构
switch(整型变量/常量/整型表达式){
case var1:
break;
case var2:
break;
case var3:
break;
default:
break;
}
switch语句也是一种分支语句,常常用于多分支的情况
这种多分支,一般指的是很多分支,而且判定条件主要以整型为主
- 多分支
//如
switch (day){
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
default:
printf("bug!\n");
break;
}
case的作用:本质是进行判定功能
break在switch中的作用:break本质其实是进行分支功能
case之后,如果没有break,则会依次执行后续有效语句,直到碰到break跳出
- 多个不同case执行同一个语句
int main()
{
int day = 6;
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("周内\n");
break;
case 6:
case 7:
printf("周末\n");
break;
default:
printf("bug!\n");
break;
}
return 0;
}
case后面的值的要求
switch(m) && case n
//其中m 和 n必须是什么类型变量或者表达式? 整型变量/常量/整型表达式
//case 语句后面是否可以是const修饰的只读变量呢? 不行,const修饰后为常变量但本质还是变量
default语句
default可以出现在switch内的任何部分
结论:尽管如此,我们依旧强烈推荐default应该放在case语句的最后
循环语句
三种循环
语法结构
- while
//while
条件初始化
while(条件判定){
//业务更新
条件更新
}
- for
//for
for(条件初始化; 条件判定; 条件更新){
//业务代码
}
- do while
//do while
条件初始化
do{
条件更新
}while(条件判定);
三种循环对应死循环写法
while(1){
}
for(;;){
}
do{
}while(1);
break&continue在循环中的应用
int main()
{
while (1){
char c = getchar(); //获取字符//输入abcd#1234
if ('#' == c){
break;
}
printf("echo: %c\n", c);
}
system("pause");
return 0;
}
//测试用例1:break:终端输除abcd
//测试用例2:continue:终端输入abcd1234
break:跳出循环(结束循环)
continue:结束本次(一次)循环
- 注意区别:
在while或do while语句中,遇到continue跳到条件判定
在for语句中,遇到continue跳到条件更新(调整),再进行条件判定
循环语句注意点
- 推荐外小内大(例如双循环遍历),一般效率是会高一些,但是差别不会特别大, 实际测试的时候,出现效率现象出现反直觉现象,也不要意外
- 推荐条件判定使用开区间,循环次数明确,便于进行个数计算
goto实现循环
- 例如
int main()
{
int i = 0;
START:
printf("[%d]goto running ... \n", i);
++i;
if (i < 10){
goto START;
}
printf("goto end ... \n");
return 0;
}
一般禁用,避免破坏代码,不过有需要还是必须会用