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

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); //推出整个程序

你可能感兴趣的:(嵌入式开发之C基础学习笔记04--控制流语句)