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