Skip to content

杂项语法

库目录

.h文件通常包含2种库 静态库(.lib)动态库(.dll) 在程序编译时用到静态库(.lib) 在程序运行时用到动态链接库(.dll)

拓展数据类型

关键字描述
_Complex复数类型
_Imaginary纯虚数类型
_Bool布尔类型 但实际是0和1
stdbool.h 是C标准函数库常用的头文件
宏名称展开
bool_Bool
true整数常量1
false整数常量0
__bool_true_false_are_defined整数常量1

sizeof

计算机最小储存单位是位bit。一个字节8位,例如int类型占4个字节。

c
char name[40]; //实际只能储存39个字符 留一个给/0 空字符

sizeof 计算一个对象或类型所占的内存字节数。而strlen是计算字符串长度。例如name是40个char类型的

sizeof 返回的size_t类型是一个无符号整型,但size_t不是一个新类型,size_t会根据不同系统替换。

c
//typedef unsigned (int||long)

浮点数存储

表示法

浮点数的存储通常遵循IEEE 754标准,这种表示法分为三部分:符号位指数位尾数(或称有效位)

符号位: 占1位,表示浮点数的正负。0表示正数,1表示负数。 指数位: 在单精度浮点数中占8位,在双精度浮点数中占11位。指数采用偏移量(bias)表示法。在单精度中,偏移量是127;在双精度中,偏移量是1023。实际的指数值通过将存储的值减去偏移量获得。 尾数(有效位): 在单精度中占23位,在双精度中占52位。浮点数采用规范化形式表示,意味着尾数前面有一个隐含的1(对正常数有效),实际存储的尾数是这个1后面的部分。比如,二进制数1.101在存储时只记录.101,并隐含前面的1。

示例 以单精度浮点数-6.75为例

  • 符号位:1(负数)
  • 转换成二进制:-6.75转为二进制为-110.11,规范化为-1.1011 × 2^2。
  • 指数计算:2 + 127 = 129,129的二进制是10000001。
  • 尾数:去掉隐含的1,记录为10110000000000000000000。

最终,-6.75的存储形式为:

  • 符号位:1
  • 指数位:10000001
  • 尾数:10110000000000000000000

总结: 浮点数的存储通过将数值分为符号、指数和尾数,能够有效表示范围广泛的实数。然而,这种表示法也可能引入精度损失和舍入误差,特别是在进行浮点运算时,因此在编程时需特别注意。