题目:
设计一个函数,接受两个参数,一个为结构体尺寸,一个为对齐字节数,返回对齐后的结构体所占尺寸(首地址偏移量)。
分析:
如果是对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