size = (size_in_bytes + sizeof(int) - 1) / sizeof(int);
Run Code Online (Sandbox Code Playgroud)
这是一个数学问题,而不是真正的编程问题...是因为C总是向下舍入?
整数除法在C中截断,是的.(即它向零舍入,而不是向下舍入.)
通过添加"divisor - 1",您可以确保任何不是除数的精确倍数的数字都会被舍入.例如,除以3:
(0 + 2) / 3 == 0 (0 is an exact multiple)
(1 + 2) / 3 == 1 (round up)
(2 + 2) / 3 == 1 (round up)
(3 + 2) / 3 == 2 (3 is an exact multple)
Run Code Online (Sandbox Code Playgroud)
等等