学习c语言 7.24

一、数据类型

编程就是把人类的问题 描述给计算机,让计算机解决 。也就是说编程语言是人类世界和计算机世界沟通的桥梁。那么为了更好地描述问题,就需要划分数据类型。

二、C语言中数据类型

  基本数据类型,包括整型、浮点型、字符型

  构造数据类型

  指针类型

  空类型

划分这些是因为人类语言中有数字,字母等,不同的类型所驱动的计算机内部运作部件也不同。

三、基本数据类型介绍

常量:在程序运行过程中,不能改变的量

变量:在程序运行过程中,能被改变的量

  1. 整型

(1).常量形式:

      123      //十进制的整型常量

         0123     //八进制的整型常量(0表示八进制)

         0x123    //十六进制的整型常量(其中0x是十六进制的前缀)

十六进制: 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f

进制(进位的制度):逢几进1 (满几进1)。

人类世界中常使用十进制。

a.十进制转换为二进制

  方法:除2取余法     2|123

                                        2|61       ... 1     (低位)

                                         2|30      ... 1

                                            2|15     ... 0

                                             2|7     ... 1

                                              2|3    ... 1

                                               2|1   ... 1

                                                   2|0  ... 1     (高位)

                                                  

                                                   111 1011

                                                  0111 1011

注意:最后1还要除以2

b.二进制转十进制

方法:加权求和

权64  32  16  8   4   2  1

                                 2^1 2^0

1   1   1   1   0   1   1 

                                

权8 4 2 1

1 1 1 1

c.二进制转八进制

1位八进制数 对应 3位 二进制数

001 111 011   

1   7   3

d.二进制转十六进制

1位十六进制进制数 对应 4位 二进制数

0111 1011

7    b 

(2).变量形式:

定义变量:数据类型 变量名;

int (默认为signed int)

short

long 

long long  

unsigned / signed

变量名取名规则:

1.数字、字母、下划线组成

2.开头不能是数字

3.不能与关键字重名

4.不要和预处理命令 及 库函数名重名

(3).数据类型的大小 :表示的是该数据类型 所占内存空间的字节数

  

   int          4字节

   short        2字节

   long         8字节

   long long     8字节

通过sizeof(运算数) 计算运算数所代表的数据类型占用的内存空间的字节数

         运算数 可以是一个类型名sizeof(int)

                              可以是变量名 sizeof(a)

                              可以是个常量或表达式sizeof(10)

                                                              sizeof(a+10)

(4).变量给值

  int a = 10; //定义的同时给值 初始化

  int a;

  a = 10; //赋值

(5).大小端存储

变量实际上对应是一块可以被修改的空间,在电脑上一般使用小端存储

小端 高高低低

高位数据 存在 高地址(地址编号大) 处

低位数据 存在 低地址 处 

(6). 整型数据的存储

数据在电脑里以补码形式存储

正数:原码 反码 补码 都是一样的         

负数:反码 + 1

如:-7

这是一个有符号数

0 | 000 0000 0000 0000 0000 0000  0000 0000

前面为符号位,0表示正,1表示负

后面为数值位

 

无符号数则表示所有的二进制位 都是数值位

有符号则表示最高位充当了符号位,其余位是数值位

                                    

  -7 

 

  1 | 000 0000 0000 0000 0000 0000 0000 0111 //原码

  1 | 111 1111 1111 1111 1111 1111 1111 1000 //反码

  1 | 111 1111 1111 1111 1111 1111 1111 1001 //补码

    f     f    f    f    f    f     f     9 

  负数的反码 是 原码 的符号位不变 其余位按位取反

补码再取反加1为原码

unsigned char a = 65535;

printf(“a = %hd\n”,a);

a [ 1111 1111 1111 1111 ]

           |

%hd  //d 表示以有符号十进制形式来打印  

                   |

            1 | 111 1111 1111 1111

                   |

最高位是1 表示这个值是某个负数的补码值

        最终打印的一定是原码值

1 | 111 1111 1111 1111取反加1

1 | 000 0000 0000 0001  // -1

所以打印出来是-1

(7). 整型类型取值范围

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字节

(8).整数溢出

eg:short 类型数据大小为2字节 16位

        65535 (1111 1111 1111 1111)再加上1就会溢出

成为:1 0000 0000 0000 0000

结果就是 0;

     2.浮点型

(1).常量形式

1.23

1.23e-4     ----科学计数法形式 1.23 * 10^-4

1.23E-4

(2).变量

float               ----- 单精度(4字节)

double            ----- 双精度(8字节)

long double      -----         (16字节)

定义变量

  float f;

(3). 浮点数的存储

a.首先将十进制形式的小数,写成二进制形式小数

        整数:除二取余法

        小数:乘二取整法

eg :12.125

12  ---  1100

0.125 *2 = 0.25 --- 0

0.25*2 = 0.5   --- 0

0.5 * 2 = 1     --- 1

1100.001

b.将二进制形式的小数写成科学计数法形式

1.100001 * 2 ^ 3

c.按照IEEE754标准存放

float :(4字节 32位)

1位      |   8位  充当 指数位    | 23位

符号位   |  指数位 +127(偏移量 )| 尾数位

0        |   10000010             | 100001

尾数位不足23位,后加0补全。

0100 0001 0100 0010 0000 0000 0000 0000

 4    1    4    2   0    0    0    0

double:

1位      |   11位  充当指数位    | 52位

符号位   |  指数位 +1023(偏移量 )| 尾数位

(4). 浮点数的比较

代码中出现的 变量 或 常量 一定有其对应的数据类型

  代码中出现的 浮点型常量 默认识别为 double 类型

浮点数的比较:保证精度一致、类型一致

 常量也可以指定类型:

  0.9f //表示被识别为 float类型

  123 //默认识别为 int类型

  123L //识别为long类型

  123LU //unsigned long

  123LL //long long

  123LLU //unsigned long long

     3.字符型

(1). ASCII码

‘a'   ----编码(ASCII码)----0101010-----计算机中保存的实际上是这个符号对应的ASCII的编码值

(2).常用的ASCLL码

0~32 控制字符(不可见字符) 
48~57 数字字符 '0' ~ '9'
65~90 英文的26个大写 字母的符号 
97~122 英文的26个小写 字母的符号

(3).字符型常量

 'a'  //字符常量 a这个常量

(4). 字符型变量

  char 

 

  char ch;  //占一个字节

 

  如:char ch = 'a'; 

      ch这个变量中 最终放的放的实际上是 'a' 对应的ascii码 值  (整型)

                                       

  所以char 也一种整型类型 说char和整型之间是通用的

  char可称之为tiny int --小整型

(5).字符型取值范围

unsigned char ch;   //[0    ~ 255]

  signed char a = -10; //[-128 ~ 127]

(6).大小写转换

  大写 转 小写  +32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值