嵌入式学习笔记二——C语言数据类型

目录

C语言中数据类型

常量与变量 

整型

1.整型常量

进制间的转换

2.整型类型 

3.变量的定义 

4.整型数据存储 

大小端

存储规则

5.考点 

浮点型

1. 常量形式 

2.浮点型变量 

3.浮点数的存储 

4.考点 

字符型

1.字符型常量 

2.字符型变量 

3. 应用 

数据输出的部分打印形式


C语言中的数据类型

常量与变量 

常量 为"在程序运行过程中", 不能改变的量
变量 为"在程序运行过程中", 能被改变的量 

整型

1.整型常量


  123         十进制数
  0x123     十六进制数
  0123       八进制数

进制间的转换

十进制转二进制 :除2取余法(辗转相除法)先算出来的余数为低位,后算出来的余数为高位。

十进制转八进制、十进制转十六进制都能用辗转相除法。

二进制转十进制 :加权求和

    64    32  16  8   4   2  1
                                2^1 2^0
    1      1     1   1   0   1   1

同理,八进制转十进制、十六进制转十进制都能用加权求和。

二进制 => 八进制 对应关系:
    1位八进制数 对应 3位 二进制数  
    001 111 011    
     1   7   3   
二进制 => 十六进制 对应关系:
   1位十六进制进制数对应 4位 二进制数  

     0111 1011
         7   b  


2.整型类型 


  int      4字节     
      unsigned int  0~2^32-1
      signed int  -2^31 ~ 2^31- 1
  short  2字节   
       unsigned short 0~2^16-1 //65535
       signed short   -32768 ~ 32767 
  long  8字节
  long long 8字节 

  unsigned 无符号 --- 表示所有的二进制位 都是数值位 
  signed 有符号 --- 表示 有一位(最高位)充当了符号位,其余位是数值位

  默认为signed


3.变量的定义 


  数据类型 变量名;

 变量名即给变量取的名字,有下列要求:
    a.数字、字母、下划线组成
    b.开头不能是数字 
    c.不能与关键字重名 
    d.不要和预处理命令及库函数名重名

变量的给值有两种方式:

int a = 0;初始化时给值

int a;a = 0;赋值


4.整型数据存储 

大小端

小端 :高高低低  
            高位数据 存在 高地址(地址编号大) 处 
            低位数据 存在 低地址处      
    例  int a= 0x12345678    

x86 体系结构数据存储方式为小端模式 。

大端 数据存储方式与小端相反。51 单片机 等单片机数据存储方式为大端模式。

存储规则

计算机存储整数都是 存储他们的补码形式。

正数的原码、反码、补码是一样的,是它的二进制形式。

负数的反码是原码的符号位不变其余位按位取反,负数的补码为反码+1,对于有符号整型,最高位为符号位,0表示正数,1表示负数。

以含符号int型数-7为例,下面为它的原码、反码和补码:

原码  1000 0000 0000 0000 0000 0000  0000 0111 最高位1代表负数。  
反码  1111 1111 1111 1111 1111 1111  1111 1000 
补码  1111 1111 1111 1111 1111 1111  1111 1001 

将补码再求补码,可以得到原码。

5.考点 


  整数的溢出
  整数存储和使用分开的,需要注意原码和补码的转化,还要注意根据有符号和无符号判断值的变化。

浮点型

1. 常量形式 


  1.23   
  1.23e-4   科学计数法形式 1.23 * 10^-4,e可大写


2.浮点型变量 

数据类型 变量名
  float   单精度  4字节
  double  双精度  8字节
  long double  16字节

3.浮点数的存储 


a.将十进制形式的小,整数除2取余法,小数部分乘2取整法写成二进制形式的小数 
b.将二进制形式的小数写成科学计数法形式 
c. 按照 IEEE 754 标准存放  
 float 型占用4字节36位

1位符号位   
8位指数位 :科学计数法形式种的指数+127(127为偏移量)
23位尾数位:科学计数法形式中的小数,位数不够在后面用0补齐。

double型占8字节64位,精度比float型高

1位符号位   
11位指数位 :科学计数法形式种的指数+1023
52位尾数位

4.考点 


浮点的比较 :
代码中出现的浮点型常量默认识别为 double 类型 ,浮点数的比较需要保证精度一致或类型一致
常量也可以指定类型:
  0.9f //表示被识别为 float类型 
  123 //默认识别为 int类型 
  123L //识别为long类型 
  123LU //unsigned long 
  123LL //long long 
  123LLU //unsigned long long 

字符型


1.字符型常量 


  'a'  

2.字符型变量 


  char  1字节
  char ch = 'a';   ch这个变量中 最终放的放的实际上是 'a' 对应的ascii码 值  (整型)
  unsigned char ch;   //[0    ~ 255]
  signed char a = 10; //[-128 ~ 127]
  a = -10;  


3. 应用 

ASCII码

  0~32 控制字符(不可见字符) 
  48~57 数字字符 '0' ~ '9'
  65 ~90  英文的26个大写 字母的符号 
  97 ~122 英文的26个小写 字母的符号 
  char ch = '1';
  printf("%d\n",ch - 48); //数值1  
  printf("%d\n",ch - '0'); //数值1 
  大写 转 小写  +32 

数据输出的部分打印形式

%d 含符号以十进制打印,用于int型

%#x 以十六进制打印

%#o 以八进制打印

%hd 含符号以十进制打印,用于short型,h--half

%u 无符号形式打印

%c打印符号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值