((size%8)? 1 : 0))*(size/2) 解释一下这段代码
时间: 2023-12-13 18:05:32 浏览: 241
两个数比较大小代码
这段代码的作用是计算内存大小为 size 字节时需要分配多少个双字(4字节)的空间。
首先,`(size%8)? 1 : 0` 计算出 size 是否为 8 的整数倍,如果不是则返回 1,否则返回 0。这是因为内存空间必须以双字对齐,也就是每个空间的起始地址必须是 4 的整数倍,如果 size 不是 8 的整数倍,则需要分配一个多余的双字来达到对齐的目的。
然后,`size/2` 计算出 size 字节所需的双字数量。因为每个双字占用 4 字节,所以将 size 除以 2 即可得到双字数量。
综上,这段代码的含义是:当内存大小为 size 字节时,需要分配 `(size/8 + (size%8)? 1 : 0)) * (4/2)` 个双字的空间。
阅读全文