强制类型转换

格式

  • (数据类型)(表达式)

    功能

  • 把表达式的值强制转化为前面所执行的数据类型;

    例子

    ```c (int)(4.5 + 2.2) 最终值为6 (float)5 最终值为5.000000

float avg; int sum; avg = 1.0 * sum / cnt; //1.0默认是double类型,最终输出了float类型的数据

  1. <a name="MkeO8"></a>
  2. # 浮点数的存储所带来的问题
  3. - **float和double都不能保证可以完全精确地存储一个小数**;
  4. - **举例**
  5. ```c
  6. 有一个浮点型变量x,如何判断x的值是否为零?
  7. if(|x-0.000001| <= 0.000001)
  8. 是零;
  9. else
  10. 不是零;
  • 循环中更新的变量,其数据类型不能定义为浮点型

    数据大小端的区分

    以数据0x11223344为例:

    数据中的高低位

  • 0x11223344中的左侧,即“11”为高位,“44”为低位

    内存中的高低位

  • 按“横向”内存分布来看左侧内存空间为低位,右侧为高位

    大端模式

  • 高位数据**存放在**低地址位置(符合常规阅读方式): | 低地址 | —-> | —-> | 高地址 | | :—-: | :—-: | :—-: | :—-: | | 11 | 22 | 33 | 44 |

小端模式

  • 高位数据存放在高地址位置,低位数据**存放在**低地址位置(逆序阅读): | 低地址 | —-> | —-> | 高地址 | | :—-: | :—-: | :—-: | :—-: | | 44 | 33 | 22 | 11 |

数据类型 - 图1