Возможный дубликат:
Разделить и получить Осталось в то же время?
Возможно ли получить как частное, так и остаток от целочисленного деления за один шаг, то есть без двойного выполнения целочисленного деления?
Возможный дубликат:
Разделить и получить Осталось в то же время?
Возможно ли получить как частное, так и остаток от целочисленного деления за один шаг, то есть без двойного выполнения целочисленного деления?
div
сделает это. См. справочник и пример:
/* div example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
div_t divresult;
divresult = div (38,5);
printf ("38 div 5 => %d, remainder %d.\n", divresult.quot, divresult.rem);
return 0;
}
Вывод:
38 div 5 => 7, remainder 3.
РЕДАКТИРОВАТЬ:
Спецификация C говорит:
The types declared are size_t and wchar_t (both described in 7.17),
div_t
which is a structure type that is the type of the value returned by the div function,
ldiv_t
which is a structure type that is the type of the value returned by the ldiv function, and
lldiv_t
which is a structure type that is the type of the value returned by the lldiv function.
... но не говорится, что такое определение div_t
.
div
просто выполняет деление по модулю, так что вы ничего не получаете. Фактически, вы получаете накладные расходы на вызов функции.
- person Mike Steinert; 30.11.2011
div
для Alpha
- person caf; 30.11.2011
Да, есть стандартная функция под названием div()
(и ldiv
, а может, даже lldiv
), которая Является ли это.
int c = a % b; int d = a / b;
в одну операцию (например,div
на x86, который возвращает оба). - person Matthew Iselin   schedule 30.11.2011