以下代码将参数四舍五入为 int 大小边界字节数。
#define _INTSIZE(n) ((sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1))
在我的机器上,int 是 4 个字节,所以——如果我错了,请纠正我——这应该与查找整数的下一个 4 的倍数(在我的机器上)相同。下一个 4 的倍数,我的意思是如果不是 4 的倍数,则该数字应向上舍入为 4 的倍数。如果已经是 4 的倍数,则应保持不变。
我一直在玩这个代码。总而言之:为什么这段代码有效?(也许不是,但似乎是。)我想有理由认为它适用于所有情况,而不仅仅是我尝试过的那些。