目录
前言
语句
表达式
分支语句(选择结构)
if else组合
语法结构
if语句充当注释
else 与if的配对
注意事项
switch case 组合
语法结构
case后面的值的要求
default语句
循环语句
三种循环
语法结构
三种循环对应死循环写法
break&continue在循环中的应用
循环语句注意点
goto实现循环
前言
本文主要讲解:
- 分支语句
- 循环语句
语句
C语言中由一个分号;隔开的就是一条语句
代码语言:javascript复制printf("hehe");
1 2;
表达式
C语言中,用各种操作符把变量连起来,形成有意义的式子,就叫做表达式
代码语言:javascript复制操作符: ,-,*,/,%,>,<,=,==..
分支语句(选择结构)
if else组合
语法结构
代码语言:javascript复制//1
if(表达式)
语句;
代码语言:javascript复制//2
if(表达式)
语句1;
else
语句2;
代码语言:javascript复制//3. 多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
代码语言:javascript复制//4. 嵌套
if(表达式1)
{
语句1;
if(表示式x)
{
语句x;
}
else
{
语句y;
}
}
else if(表达式2)
{
语句2;
}
else
{
语句3;
}
注:
1. 表达式结果为真,则语句执行; C中0表示假,非0表示真 (可以使用bool类型,仅限c99之后)
2. if语句执行,先执行完成表达式的值,得到逻辑结果,再进行判定,再进行分支功能
if语句充当注释
代码语言:javascript复制if(0)
{
//注释的内容
}
不推荐,别人可能不理解(0表示为假,不进入循环)
else 与if的配对
结论:就近原则(养成代码块包含的代码风格)
代码语言:javascript复制//测试代码换一下
int main()
{
int x = 0;
int y = 1;
if (10 == x)
if (11 == y)
printf("hello bitn");
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 bitn");
}
}
else
{
printf("hello world!n");
}
system("pause");
return 0;
}
注意事项
1.if 语句后面的分号:默认为if是一个语句,而后面{ }内的执行项会固定执行 2.if else语句顺序别弄反 3.赋值运算符不能用在产生布尔值得表达式上(尽量写在判断语句之前) 4.‘=’和‘==’别混淆,会造成不必要的错误 5.if-else if语句以else结束
switch case 组合
语法结构
代码语言:javascript复制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后面的值的要求
代码语言:javascript复制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(条件判定);
三种循环对应死循环写法
代码语言:javascript复制while(1){
}
for(;;){
}
do{
}while(1);
break&continue在循环中的应用
代码语言:javascript复制int main()
{
while (1){
char c = getchar(); //获取字符//输入abcd#1234
if ('#' == c){
break;
}
printf("echo: %cn", 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;
}
一般禁用,避免破坏代码,不过有需要还是必须会用
第五章传送门:⭐️ 关键字深度剖析 ⭐️第五章(深入C语言三种类型(float/bool/指针)与“零值“的比较)