<C和指针---读书笔记1>

C代码的无非是在一定的条件对数据进行操作处理。那么C语言中主要有几类数据? 数据如何访问?数据如何存储,这几个方面是我们事先需要掌握的。

   <3.1 基本数据类型>

从我们生活实际应用的角度出发:数据有小数和整数、正负之分; 那么在C语言中,是这样的吗?该怎么定义正负数、小数呢?

整数家族:早期,内存很小的,为了节省存储空间、整数有8位整数、长整数、整数、短整数;你可以根据实际情况选择使用不同长度;

                  怎么书写呢? 使用前缀关键字的做法:   char  a ;  long int a ;  int a ;  short int a  来表示。

                  长度设计好了,正负号怎么分? 默认int是 带有正负号的,可以使用 usigned 变为正数。 char需要前缀 signed 、unsigned 来区分。

                  虽然说是:长度能区分出来了,但具体是几位的,还没有具体讲清楚:  

                   有下面的表达式:       长整型至少跟整型一样长、整型至少跟短整型一样长。短整型≥16位。具体int是16还是32位、long int 是16、32还是64,

  就要看不同的编译器怎么决定了。 这样造成一个坏处就是:移植起来可能会碰到问题。

                  还需要注意的是 不同的编译器、不加unsigned/signed 的裸体char,有可能被认为是 unsigned char、也有可能被认为是 signed char. 也会对

                  移植带来负面影响。

                  C语言中整数的书写:  整数的书写规则,我们就不做太多的介绍了。

小数家族: 浮点数,顾名思义:小数点漂浮不定。

                   还有一种是定点数: 小数点位置固定好的数据。比如32位数据:约定小数点永远在第五位之后。

                   11111.111_11111111_11111111_11111111  表示的是最大值 ≈ 32                           32-2^(-27) .

                   00000.000_ 00000000_ 00000000_ 00000001表示是最小值: 2^(-27) .

                   显然这样 一个32位的定点数,只能表示 { 2^(-27) } ~  { 32-  2^(-27) }  。那小数点位置后移? ---最大值变大但也导致精度也变差。

                   

                   所以浮点数应运而生.  K&R C 标准中定义一个32位的 浮点数组成如下:

                                        符号1位 |  指数8位 | 尾数23位 

 

                   符号位代表 正负、 指数位代表 2^(±N)次方 ,尾数表示小数点后的值。

                   举个例子: 123.456 用二进制表示是 1111011.01110100101111001  

                  借用数学上的E指数表示法: 123.456 =  1.111011 01110100101111001  * 2^6 

                   所以 得  N等于 10000110  .尾数等于 111011 01110100101111001

                  所以整个浮点数: 0_00000110_ 111011 01110100101111001 =   1.111011 01110100101111001 *  2^(6)

                  

                   浮点数的大小范围: 很显然 1.1111111111111111111111111*2^(+127) 是最大值。 它约等于 2* 2(127) = 3.4*10^38 

                                                                 1.1111111111111111111111111*2^(-127) 是最小值,它约等于 -2* 2(127) = -3.4*10^38

                   这就是我们常见的 浮点数范围 是  -3.4*10^38 ~ 3.4*10^38 的来源。

                   讲过浮点数的最大最小范围,就得说下 浮点数的精度问题。

                    即 0.00000000000000000000001* 2(0)  = 2^(-23) ≈ 0.000000119. 也就是说 Δ =  0.000000119 是最小的差值了,也就是最小步长。

浮点数的表示方法:  float 和double

                   

                   

在C语言中,有四种数据类型: 基本类型、指针、聚合类型(如数组和结构)、空类型

 基本类型(整数和浮点数)大致介绍了、指针是什么?聚合类型呢? 空类型?

 

指针变量 就是其值为内存地址的变量。 这个类型奇怪的地方在于,其值是真实物理地址信息。

 所以当你想操作某个物理地址时,使用它就很方便了.

聚合类型:  各类数据拼接在一起的类型.统一管理

原文地址:https://www.cnblogs.com/mokang0421/p/7450428.html