C/C++学习
文章平均质量分 96
C/C++学习
Mr.Idleman
Live a simple life.
展开
-
浮点数的近似保存与计算
由于计算机的资源是有限的,所以是没办法用二进制精确的表示 0.1,只能用「近似值」来表示,就是在有限的精度情况下,最大化接近 0.1 的二进制数,于是就会造成精度缺失的情况。上面所说的是可以用有限位二进制表示的十进制数,但是还有的数字是无法用有限位二进制来表达的,它们转换的过程中变成了无限循环的二进制。,这就非常不好了,毕竟加减法运算在计算机里是很常使用的,所以为了性能考虑,应该要尽量简化这个运算过程。,只不过尾数是有长度限制的,所以只会显示一部分,所以是一个近似值,精度十分有限。原创 2023-07-13 21:56:34 · 111558 阅读 · 0 评论 -
C/C++占位符,%x和%p的区别
今天遇到了一个很奇怪的问题,当使用`malloc`分配了一个堆空间后,分别尝试用`cout`和`printf`尝试打印该地址,出现了两个地址不一样的情况:可以看出两个地址低32位是一致的,出现问题的原因应该是`printf`显示不全导致的。原创 2023-04-23 19:13:30 · 204294 阅读 · 1 评论 -
C/C++中的数据结构对齐,#pragma pack() 和 __attribute__
数据结构对齐是指在计算机内存中排列和访问数据的方式。它包含三个独立但相关的问题:**数据对齐**(data alignment),**数据结构填充**( data structure padding)和**打包**(packing)。当被访问的数据长度为n个字节,并且基准地址是n个字节对齐的时候,就可以说一个内存访问是对齐的。如果一个内存指针指的是n字节长的原始数据,并且只允许它包含n字节对齐的地址,那么这个指针就被称为对齐的。在栈中的静态尺寸被称为 有界(bounded),在堆中的动态尺寸被称为 无界原创 2023-04-26 17:28:45 · 201295 阅读 · 0 评论