Например,
int result;
result = 125/100;
или
result = 43/100;
Всегда будет пол подразделения? Каково определенное поведение?
Результат всегда будет полом деления? Что такое определенное поведение?
Да, целое частное двух операндов.
6.5.5 Мультипликативные операторы
6 При делении целых чисел результатом оператора / является алгебраическое частное с любым дробная часть отбрасывается. 88) Если частное a/b представимо, выражение (a/b)*b + a%b равно a.
и соответствующую сноску:
88) Это часто называют «усечением в сторону нуля».
Конечно, следует отметить два момента:
3 Обычные арифметические преобразования выполняются над операндами.
и:
5 Результатом оператора / является частное от деления первый операнд вторым; в результатом оператора % является остаток. В обеих операциях, если значение второго операнда равно нулю, поведение не определено.
[Примечание: выделение мое]
Да, результат всегда усекается до нуля. Оно будет округлено до наименьшего абсолютного значения.
-5 / 2 = -2
5 / 2 = 2
Для беззнаковых и неотрицательных значений со знаком это то же самое, что и нижний предел (округление до -бесконечности).
Диркгентли дает отличное описание целочисленного деления в C99, но вы также должны знать, что в C89 целочисленное деление с отрицательным операндом имеет направление, определяемое реализацией.
Из черновика ANSI C (3.3.5):
Если любой из операндов отрицательный, то является ли результат оператора / наибольшим целым числом, меньшим алгебраического частного, или наименьшим целым числом, большим алгебраического частного, является реализацией -определено, как и знак результата оператора %. Если частное a/b представимо, выражение (a/b)*b + a%b должно равняться a.
Так что будьте осторожны с отрицательными числами, если вы застряли с компилятором C89.
Забавно, что C99 выбрал усечение в сторону нуля, потому что именно так это делал FORTRAN. См. это сообщение на comp.std.c.
Там, где результат отрицательный, C усекается до 0, а не до пола. Я узнал, что здесь я узнал о том, почему целочисленное деление Python всегда достигает пола: Почему целочисленное деление Python сводит к минимуму