题目:
设计一个函数,接受两个参数,一个为结构体尺寸,一个为对齐字节数,返回对齐后的结构体所占尺寸(首地址偏移量)。
分析:
如果是对8字节对齐,6字节的结构体占用8字节,16字节的结构体占用16字节。第一想法是下面逻辑:
|
1
2
3
4
5
6 |
if(!structSize%alignNum){ return
(int)(structSize/alignNum)+1;}else{ return
(int)(structSize/alignNum);} |
另外这个逻辑和浮点数的四舍五入很类似
|
1 |
return
(int)(floatVal+0.5); |
所以最简洁写法如下:
|
1 |
return
((int)(structSize+alignNum-1)/alignNum)*alignNum; |
原文:http://www.cnblogs.com/aishangxue/p/3673477.html