菜鸟转行嵌入式_(第6天)C语言基础_控制语句

35 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1、控制语句

在这里插入图片描述

1.1 if

if-else语句
if语句概述
	if (表达式) 
		语句块1                             		
	else
		语句块2
常见形式:
1.简化形式
		if(表达式) 语句块    
		 例如: if(x>y)printf(“%d”, x);
2.阶梯形式
		if(表达式1) 语句块1
			else if(表达式2) 语句块2
				else if(表达式3) 语句块3
		      		else if(表达式4) 语句块4
	                                ...
	                               else 语句块n
注意:
语句块:当有若干条语句时,必须用{…}括起来。
表达式: 
一般情况下为逻辑表达式或关系表达式
如:if(a= =b && x= =y)  printf(“a=b,x=y”);
也可以是任意类型(包括整型、实型、字符型、指针类型)
如:if(‘a’) printf(“%d”,’a’);
请区分if(x=1)与if(x= =1)的不同。

3.嵌套形式
	if()
 		 if()    语句块1
		 else 	   语句块2
	else	
		 if()    语句块3
		 else	   语句块4
if语句的嵌套
else总是与它上面的最近的if配对,与书写格式无关。
要实行强行的配对关系可以利用{ }		
如:if()
	{if()	语句块1}
	 else 语句块2
例:
#include <stdio.h>
int main()
{
float a = 4,b = 5,c = 2,t;
if(a>b) {t=a;a=b;b=t;}
if(a>c) {t=a;a=c;c=t;}
if(b>c) {t=b;b=c;c=t;}
printf(“%5.2f,%5.2f,%5.2f”,a,b,c);
return 0;
}

1.2 switch

switch语句的基本形式

switch case分支结构
	switch(变量/表达式){
		case 1:
			执行语句;
			breakcase 2:
			执行语句;
			breakcase n:
			执行语句;
			breakdefault:
			执行语句;
			//break;可以省略不写
	}

switch语句的使用:

每个常量表达式的值必须各不相同,否则将会出现矛盾

当表达式的值与case后面的常量表达式值相等时,就执行此case后面的语句。

switch中的表达式可以是整型、字符型表达式或枚举

case 常量:只起语句标号的作用。

switch语句的使用:

break语句用于强行跳出switch体,一般每个case后面应有一个break语句,default分支后的break可以省略。

多个case可以执行一组语句

每个case执行完后需要执行break退出分支结构,否则会从当前执行的分支一直向下执行到break或整个分支的结尾才能结束;

1.3 while/goto

循环结构程序
goto语句构成循环
while构成循环
do-while循环
for循环

1.goto语句

goto语句构成循环
int fun(inta)
{   intresult = 0;	
    char*buffer = kmalloc(SIZE);
   if(buffer == NULL)
          return-ENOMEM;
        if(condition1) {	
          while(loop1) {
           ... 
        } 	
  result = 1; 
       goto out;	
  } 	
out: 	
	    kfree(buffer); 
	    return result;
} 	

while

当条件表达式成立的时候,执行循环体,直到表达式不成立,结束循环体的执行,开始执行后面内容

基本形式
while (表达式) {
	循环体;
}
	int i = 1;
	while(i<5){
		printf("%d\n",i);
		i++;
	}
大括号里面的内容是循环重复执行的代码
循环变量初始化:一般放在循环体外部进行初始化
循环退出条件:条件判断的表达式
循环变量的修改:无限趋近于退出条件
while(1);//死循环

do-while

基本形式
do {
	循环体;
}while(表达式);
注意分号不能省略
执行逻辑:先执行一次循环体,然后进入条件表达式,判断是否成立,如果成立继续执行循环体,不成立退出循环
循环变量初始化:do语句前
循环退出条件:while后的条件表达式中
循环变量修改:放在循环体中
do{
	}while(1); while(!0);
//死循环

1.4 for

一般形式
for(expression1; expression2; expression3)
{ statements;}
执行过程
1.先求解表达式1;
2.求解表达式2,若为真,则执行循环体,然后执行步骤3;若为假,则执行步骤5;
3.求解表达式3;
4.转回执行步骤2;
5.执行for下面的语句。

for语句构成循环	 	
例如:
for(i=1;i<=100;i++)
{
   sum=sum+i;
}
for语句构成循环
表达式1可省略,但循环之前应给循环变量赋值;
表达式2可省略,将陷入死循环
表达式3可省略,但在循环体中增加使循环变量值改变的语句
for(;;){
	循环体
}//死循环

1.5 循环辅助语句

break

用于从循环体内跳出循环体,即提前结束循环。
break只能用在循环语句和switch语句中。
for(r=1;r<=10;r++){ 
area=pi*r*r;
if(area>100) breakprintf(“%f”,area);
 }

gcc -std=c99 filename