zoukankan      html  css  js  c++  java
  • <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语言中,有四种数据类型: 基本类型、指针、聚合类型(如数组和结构)、空类型

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

     

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

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

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

  • 相关阅读:
    VPython—旋转坐标系
    分布式锁简单入门以及三种实现方式介绍
    win10 64bit安装redis及redis desktop manager的方法
    Kafka史上最详细原理总结
    idea常用快捷键
    十大Intellij IDEA快捷键
    Spark(一): 基本架构及原理
    Idea Live Templates代码模板
    IntelliJ IDEA 常用快捷键列表及技巧大全
    Win10 下 RabbitMQ 的 安装 配置
  • 原文地址:https://www.cnblogs.com/mokang0421/p/7450428.html
Copyright © 2011-2022 走看看