我有一个值,我想要对齐给定的对齐,即如果尚未对齐,则将值增加到对齐的下一个倍数.
在C++中执行此操作的简洁方法是什么?
例如
int x;
int alignment;
int y = ???; // align x to alignment
Run Code Online (Sandbox Code Playgroud)
Sha*_*wat 11
让我们说对齐是 a
---(k-1)a-----------x--------------ka---------
<----r----><-----(a-r)--->
Run Code Online (Sandbox Code Playgroud)
where k是一个整数(所以ka是对齐的倍数)
首先找到剩下的
r = x%a
然后将x增加到下一个倍数
y = x + (a-r)
但如果r = 0,那么y = x
最后
r = x%a;
y = r? x + (a - r) : x;
Run Code Online (Sandbox Code Playgroud)