我有一个值,我想要对齐给定的对齐,即如果它尚未对齐,则将值增加到对齐的下一个倍数.
在C中这样做的简洁方法是什么?
例如
int x; int alignment; int y = ???; // align x to alignment
解决方法
让我们说对齐是一个
---(k-1)a-----------x--------------ka--------- <----r----><-----(a-r)--->
其中k是整数(因此ka是对齐的倍数)
首先找到剩下的
r = x%a
然后将x增加到下一个倍数
y = x(a-r)
但如果r = 0,那么y = x
最后
r = x%a; y = r? x + (a - r) : x;