9

特定の配置に合わせたい値があります。つまり、値がまだ配置されていない場合は、配置の次の倍数に値を増やします。

C++ でこれを行う簡潔な方法は何ですか?

例えば

int x;
int alignment;
int y = ???; // align x to alignment
4

3 に答える 3

14

アラインメントはa

---(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;
于 2012-10-04T06:56:58.390 に答える