为什么以下等式总是向上舍入?

use*_*466 0 c

size = (size_in_bytes + sizeof(int) - 1) / sizeof(int);
Run Code Online (Sandbox Code Playgroud)

这是一个数学问题,而不是真正的编程问题...是因为C总是向下舍入?

Jon*_*eet 6

整数除法在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)

等等