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