嵌入式学习记录4

起名的规则

见名知意 ,  尽量其起英文名;避免拼音。

一般采用驼峰命名法:

  StudentCount //大驼峰 

  studentCount //小驼峰 

  student_count //内核命名法   

主页面反应问题:

编译时的问题

  错误  --- 语法错误 

  警告  --- 语法不合适 

运行时的问题

 逻辑问题 --- 调整思维

不同类型的数据间混合赋值:

int = double  //   高精度给低精度赋值 精度丢失(损失)    【小数点后精确度损失】

double = int  //  没有影响 

short = int    //  长类型数据 给到  短类型   --高位截断【字节减少,保留低位地址,高位地址丢失】

int   = short   //   无符号 短类型  此时 补 0    【0不显示】

                    //有符号 短类型  符号位扩展     【符号位扩展,符号位为1,前面增加的位置全部为1,全部看成一个符号位 1 】 例:1011 0001 0001 0001 ——> 1111 1111 1111 1111 1011 0001 0001 0001 0001

前面17个1当作一个符号位1。

语句类型

语句一般分为:

1.控制语句,(如:if else , for 等) 

2,函数调用语句,(即输入输出语句)(如:printf,scanf等)

3,表达式语句,(如:1+2)

4,空语句,(;)

5复合语句,(多条语句)

函数调用语句(输入输出)

c语言不提供输入输出功能;使用时借用函数调用语句输入输出函数库调用;

标准函数输入输出库在程序开头写入: #include

1.单个字符输入输出

getchar  //  单个字符输入

putchar  //  单个字符输出

一次只能输入或输出一个字符;需要几个字符就得用几次getchar,输出同理;

1.1   getchar一般为:    getchar (void);void为空类型,表示没有参数,等同于啥都没有,可以空出来;

使用时输入一个字符  '  '  ,经过返回值(类似数学中的X Y 给X 一个数 Y 相应的到一个值);此时存在一个隐式类型转换:unsigned char——>int;

1.2   putchar一般为:       putchar (字符 数字)    输出单个字符,输出的为ASCII值,给定的字符或相应的字符十进制数或十六进制数等,均将输出ASCII码的字符;

2.格式化输入(printf)

printf的形式一般为:printf   ( " 格式化控制字符串 " , 输出列表 ) ;

2.1格式控制字符串:

普通字符 :    直接输出 (不发生变化)

占位符(%*):   占了一个位置,最终输出效果,将 输出列表中对应的参数,以占位符指定的格式输出;占位符 与 输出列表的匹配   ,多个占位符与输出从左到右逐个对应的  ; 如果 占位符个数 大于 输出列表参数个数,多出的 输出是随机值 ;【占位符确定格式,输出参数确定结果大小】。

2.2占位符:

整型: 

 %d  以 有符号 十进制 格式 输出 

 %u  以 无符号 十进制 格式 输出

 %x  以 十六进制 格式 输出

 %X  以 十六进制 格式 输出 ,但是对应的a b c d e f 都是大写

 %o  以 八进制 格式 输出

浮点数:

 %f  以小数的形式输出,默认保留6位小数

 %g  以 更简洁 的方式输出 ,不会输出多余的0 

 %e  以 科学计数法形式 输出

 %E  输出结果中 e 大写 

 字符:

 %c  以 字符的 格式 输出    //    以对应的ASCII码值的 字符形式输出 

 %s  以 字符串 格式 输出 

 2.3辅助控制符:

常见:%  [辅助控制符]  d

 #      %#x //  表示 输出十六进制 的前缀 

         %#o //  表示 输出八进制 的前缀

2.3.1 数字 --- 输出的宽度 

整型一般直接给整数  (m) ;

常见:% [数字]  d   //  表示d对应输出列表的参数宽度为[  ] 中对应数字;

 注意: 实际的参数的宽度 > m  则以实际参数的宽度为准 

                                          < m  默认右对齐 ,前面的空位补空格 

                                            左对齐 加一个 负号(-)

而浮点型一般为  .n ;

常见:% [.数字] f    //  表示 控制 输出的小数位数 ;【强制使输出小数位数与数字相同】

字符串   :     表述输出 字符串 前n位 

2.3.2

l    long

ll   longlong 

h     //   half -----一半     如  Int   的一半为2个字节 

hh    //  一半的一半   即四分之一

3.格式化输出(scanf)

scanf的形式一般为:  scanf ("格式控制字符串",地址列表) 

3.1格式控制字符串:

普通字符:     原样输入   但必须自己输入

占位符(%*):    占了一个位置,将输入的数据,转换为 占位符 指定的格式,放到 地址列表对应的一块内存空间上 ;【占位符确定输入数据格式】     占位符 也决定 能识别的 字符的范围;

3.2占位符:

 整型 : 

 %d  将输入的数据 转换为 有符号 十进制 格式 

 %u  将输入的数据 转换为 无符号 十进制 格式 

 %x  将输入的数据 转换为  十六进制 格式 输出

 %X  将输入的数据 转换为  十六进制 格式 输出 ,但是对应的a b c d e f 都是大写

 %o  将输入的数据 转换为  八进制 格式 输出

浮点数

 %f  将输入的数据 转换为 小数的形式

 %g  将输入的数据转换为 小数的形式  并以 更简洁 的方式输出 ,不会输出多余的0 

 %e  将输入的数据转换为 小数的形式以 科学计数法形式 输出

 %E  将输入的数据转换为 小数的形式 输出结果中 e 大写 

 字符

 %c  将输入的数据转换 以 字符的 格式 输出 //将对应的ASCII码值的 字符形式输出 

 %s  将输入的数据转换 以 字符串 格式 输出

3.3注意

1.写地址列表 注意一定要写 & (取地址)

2.多个数据输入时 以空白符作为分割符:     

   空白符 :   空格     回车    tab 

3.  浮点型数据输入时     double 为  %lf 

其他类型为 :

      int - %d

      long - %ld

      long long - %lld

4.辅助控制符 :      m  宽度 -- 输入的宽度 

      达到宽度时,输入匹配结束 , 只能获取到前m个数据   (强制只能获取m个数据);

5. %c 字符占位符     几乎可以识别键盘输入的任何字符       

     scanf("%c %c %c",&c1,&c2,&c3)  ; // 一个空白符 --匹配任意多个空白符          

      %*c // 表示 跳过一个 数据项      【%*c不占用地址列表的字符变量  输入字符时在第几个第几个字符就不显示,输入下一个占下一个%c】

3.4scanf匹配结束的条件 

     a.空白符 :

     123  456  789

     scanf("%d%d%d",&a,&b,&c);              【当输入数字时用空白符表示这个字符结束,多个字符一起时用空白符隔断(也就是结束前一个)】

     b.指定宽度 :

     123456

     scanf("%3d",&a); //123       【指定多少只能输入多少个数字】

    c.非法字符

      123a45     

      scanf("%d",&a);       【当输入字符不是规定字符时直接结束】

你可能感兴趣的:(学习)