本文已参与「新人创作礼」活动,一起开启掘金创作之路。
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:
执行语句;
break;
case 2:
执行语句;
break;
case n:
执行语句;
break;
default:
执行语句;
//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) break;
printf(“%f”,area);
}
gcc -std=c99 filename