您的位置:首页 > 其它

嵌入式开发之C基础学习笔记04--控制流语句

2012-12-11 22:13 706 查看

1.表达式

1)C表达式是操作符,常量和变量的任意组合。多数表达式基本遵循代数规则

2)C编译器要做类型提升(type promotion):把所有操作数转换成尺度最大的操作数类型

.强制类型转换36000L,988U,.....

.(type)expr

2.选择语句-if语句

if(expr)/*处理*/

1)expr应该之产生scalar(int,char,或float)以及C99中的_Bool)结果

2) 尽量不要在expr中使用float表达式,因为float运算占用几条CPU指令,这将明显降低执行速度。而int或char运算符占用CPU指令数较少

3) 用?:操作符号代替if语句时,并不局限于赋值

main(){

int x,y,zmid,dec;

printf("please input three num:\n");

scanf("%d %d %d",&x,&y,&z);

if(x<y)

{

mid = x; x = y; y = mid;

}

if(x<z)

{

mid = x; x = z; z = mid;

}

if(y<z)

{

mid = y; y = z; z = mid;

}

scanf("%d",&dec);

if(dec >= 0)

{

printf("maxnum:%d",x);

}

else

{

printf("minnum:%d",z);

}

}

//结构如下

if (expr)

{

}

else if

{

}

else

{

}

3.选择语句-switch语句

switch语句:switch(expr){case...}.主要用于处理键盘输入,如接口菜单等操作

1)expr必须对int求值(可以使用int或char型)

2)与if语句的区别:switch只测试是否相等,而if可以测试关系和逻辑表达式

每个case后面的条件必须不同

switch语句中的char型常数全部被自动转换成int型

jellonwu
@jintao :~/Desktop$ vim test6.c

include <stdio.h>

void main()

{

int place;

scanf("%d",&place);

switch(place)

{

case 1:printf("1111\n");

break;

case 2:printf("2222\n");

break;

case 3:printf("3333\n");

break;

case 4:printf("4444\n");

break;

default:printf("nothing\n");

break;

}

}

jellonwu
@jintao :~/Desktop$ ./test6

^C

jellonwu
@jintao :~/Desktop$ gcc test6.c -o test6

jellonwu
@jintao :~/Desktop$ ./test6

1

1111

jellonwu
@jintao :~/Desktop$ ./test6

2

2222

jellonwu
@jintao :~/Desktop$ ./test6

3

3333

4.循环语句-for

1)C语言的for循环是所有面向过程的语言中的循环语句的基础

for(init;condition;inc)

{

/*dosomething*/

}

init:一般为赋值语句(初始化循环变量的作用)

condition:是一个关系表达式,指定循环退出的条件

inc:修改循环变量

for循环中,condition测试总是在循环的顶部实施(循环体可能得不到执行)

jellonwu
@jintao :~/Desktop$ vim test7.c

#include <stdio.h>

void main()

{

int i = 0;

for(i = 0; i < 10; i++)

{

printf("hello:%d\n",i);

}

}

jellonwu
@jintao :~/Desktop$ gcc test7.c -o test7

jellonwu
@jintao :~/Desktop$ ./test7

hello:0

hello:1

hello:2

hello:3

hello:4

hello:5

hello:6

hello:7

hello:8

hello:9

注意这个例子中for中的i=0不要写成int i = 0,c89是这么规定的变量要在for外声明
2)for循环的变种:for(init1,init2;condition;inc1,inc2){...}

condition不一定包含对一些目标值测试循环变量,它可以是关系或逻辑语句(可以测试多种可能的终止条件)

void user_login()

{

char passcode[8];

int fois;

for(fois=0;fois<3&&strcmp(passcode,'123');++fois)

{

printf("please input passcode:");

gets(passcode);

}

if(fois==3) return;

}

for(expr1;expr2;expr3){.....}

for(fun1();fun2();fun3()){.....}

for循环的三个部分都可以省略

5)循环语句-while

while循环:while(condition)/*处理*/

condition可以是任何非零值的表达式

#include <stdio.h>

#define TRUE 1

#define FALSE 0

void main()

{

int traitement = TRUE;

while(tritement)

{

tritement = proc1();

if(tritement) tritement = proc2();

if(tritement) tritement = proc3();

}

}

do-while循环:在底部进行条件测试(循环体至少执行一次).

do{ /*dosomething*/}while(condition)

do-while循环常用于创建菜单子子程序

6)跳转语句

return,break;continue,goto是C的无条件条转语句,其中return和goto可以用于程序中的任何地方,break和continue可以和任何循环语句一起使用

return:无值的return常用于从void型函数返回,写成 return;

break:在switch中结束一个case;在常规循环中立即强制终止循环

continue:强制本次开始下一次

goto语句:是一种方便措施,常用于强制跳出多重循环。

exit:退出函数 void exit(int return_code); //推出整个程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: