嵌入式学习笔记(day5)

                                           c语言基础

(1)printf函数输出

整型类型:
 %d   以有符号十进制格式输出
 %u   以无符号十进制格式输出
 %o   以八进制格式输出
 %x   以十六进制格式输出
      %X 大写 表示 输出的十六禁止中的 字母 大写 
      
 浮点类型:
 %f   以十进制形式的小数输出,默认保留6位小数 
 %e   以科学计数法的形式输出 
 %g   以%f 和 %e 更简洁的方式输出 ,输出结果中不会保留没有意义0
 
 字符型:
 %c   以字符形式输出 
 %s   以字符串形式输出 

   辅助控制符
 #   %#o   //以八进制格式输出,前面带一个0
     %#x   //以十六进制格式输出,前面带上0x 
 m.n  m 表示输出的宽度 //列数 
      如果数据本身宽度 < m   //此时 输出结果 默认右对齐 前面默认补空格
                             //前面空出来的还可以补0
     %5d //默认前面补空格 
     %05d //前面空出来的补0 
     
     也可以左对齐
     %-5d //  - 号 表示左对齐  
     
      如果数据本身宽度 >= m  //此时 以数据实际宽度输出 
 .n   
     浮点数 保留n位小数  
         %.2f //表示保留两位小数 
     字符串      
        保留 前n个字符

 l   // %ld -- long 
     // %lld -- long long 
     // %Lf // 表述输出 long double 注意 L 要大写     

(2)scanf //格式化输入函数

int scanf(const char *format, ...);

scanf格式:
scanf("格式控制字符串",地址列表);
功能:
    将键盘获得到的数据,转换成指定的格式,给到地址对应的空间 
int a;
scanf("%d" ,&a);

参数:
1.格式控制字符串 
   普通字符
    scanf("a=%d",&a); //要求,原样输入   
   占位符
     整型 
     %d  --- 将输入的数据 转换为 十进制格式  
     %x  --- 将输入的数据 转换为 十六进制格式
     %o  --- 将输入的数据 转换为 八进制格式
     浮点型 
     %f  --- 将输入的数据 转换为 小数格式    
             可以识别,十进制形式的小数,科学计数法形式的数据
     %lf --- 表示将输入的 浮点形式的数据,转换为double类型             
     
     %e   //以科学计数法形式输出
     %g   //都能转换 浮点行书的数据 
          //默认可以转换 为 float类型 
     %le  //可以转换double
     %lg  //可以转换double 

    字符型
     %c  --- 将输入的数据,转换为 字符数据 
     %s  --- 将输入的数据,转换为 字符串数据 

辅助控制符:
  1. m //宽度  -- 在输入时,表示指定了输入数据的宽度 
     //一旦达到宽度时,表示,此次输入结束 
     eg:
     scanf("%3x",&a); //如果输入的数据,已经匹配了3个字符宽度,则表示scanf结束 
      123456 //m相当于限定了输入数据的长度 

 2.
  l 
  ll 
     %f 
     %lf   //表示给double 输入数据  
     %Lf   //表示给long double 输入数据 
     %ld   //表示给long类型输入数据 
     %lld  //表述给long long类型输入数据 

注意:
     1.scanf使用时,格式控制字符串中,尽量不出现“普通字符”,主要写 占位符 
     2.输入多个数据时,数据间,可以使用"空白符"分割
       空白符 -- (回车,空格,tab键)
     3.scanf注意
       Segmentation(分段) fault (core dumped)  //段错误
       
       错误的原因:
          主要原因,代码 试图访问,不能访问的内存空间。
     4.一般使用 
       scanf中 占位符 与 地址列表中的个数 要匹配 
       scanf中 地址列表中注意一定得是有效地址 

eg(举例):
            int a = 10;
            scanf("%d",a); //此时a被当做地址用了,这不是一个有效的地址---访问到了 不能访问的空间(非法内存)

(3)输入缓冲区://缓冲区其实是一块内存

        scanf("%d%d%f%f%c%c",&a,&b,&x,&y,&c1,&c2);

问题:
    1. %c --- 识别字符 ---只要是字符都能被识别 
      空白符 (回车,空格,tab)
    2. 输入的数据,都是先到了输入缓冲区的,scanf去其中进行数据匹配 
      //缓冲区中有上一次输入残留下的空白符

注:
   %*c // 可以 匹配一个 数据项 ,匹配走之后,并不给到任何变量中
   scanf("%d "); 
   scanf("%d\n"); 如果出现空白符,表示 从输入中匹配任意多个空白符 
   scanf匹配结束的情况:
   1.遇到空白符 (回车,空格,tab) 
    scanf("%d%d",&a,&b);
   2.到达指定的宽度 
    scanf("%3d",&a); //12345  --- 最终a只能读到123 
   3.遇到非法字符
    scanf("%d%d",&a,&b); // 123a456
    123 -- a对于%d来说就是非法字符 
   4.scanf返回值表示,成功匹配到的数据的个数 

(4)//起名字: 见名知意 
 驼峰命名法
 int studentCount; 
 大驼峰  StudentCount;
 小驼峰  studentCount;
 内核命名法
       int student_count;

(5)选择(分支):
从众多情况中,选择一种 

C语言中实现选择:
1.if语句 //if-else语句 
2.switch语句 

C语言中实现选择,需要构造选择的条件
选择的条件的构造:
关系运算:  //大小关系 
运算符:
>
>=
<
<= 
== 
!= 

   c语言中,用int型 来记录 关系运算的结果 
       关系成立    真 结果 1 
       关系不成立  假 结果 0     //逻辑值    

逻辑运算
与 &&
   运算规则:
   一假则假 
   
   运算特性: 截断特性(短路特性)
   运算的顺序,始终先算 左边的第一个表达式 
   
或 ||
    运算规则:
   一真则真 
   
   也有短路特性 
   
非 !
    运算规则:
   真假相对 
逻辑运算 
表示 多个表达式之间的关系 

C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?

c语言中用 0 表示 假 
          1 表示 真 
          
c语言规定,
如果一个量对应的数值 是 0 则为假 
如果非0,则为 真

0 --- 假 
'a' --- 真 
-1  --- 真 
1.23 --- 真 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值