是DIV功能很有用(stdlib.h中)? [英] Is div function useful (stdlib.h)?
本文介绍了是DIV功能很有用(stdlib.h中)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有是在C函数调用DIV,C ++(stdlib.h中)
There is a function called div in C,C++ (stdlib.h)
div_t div(int numer, int denom);
typedef struct _div_t
{
int quot;
int rem;
} div_t;
不过,C,C ++有/和%的运营商。
But C,C++ have / and % operators.
我的问题是:当有/和%的运营商,是DIV功能非常有用
推荐答案
在div()函数返回一个包含由第二(分母)的第一个参数(分子)的除法的商和余数的结构。有四种形式:
The div() function returns a structure which contains the quotient and remainder of the division of the first parameter (the numerator) by the second (the denominator). There are four variants:
-
div_t格(INT,INT)
-
ldiv_t LDIV(很久很久)
-
lldiv_t lldiv(很长很长,很长很长)
-
imaxdiv_t imaxdiv(还会将intmax_t,还会将intmax_t
(重新将intmax_t presents提供最大的整数类型的系统上)
div_t div(int, int)
ldiv_t ldiv(long, long)
lldiv_t lldiv(long long, long long)
imaxdiv_t imaxdiv(intmax_t, intmax_t
(intmax_t represents the biggest integer type available on the system)
的 div_t
结构是这样的:
typedef struct
{
int quot; /* Quotient. */
int rem; /* Remainder. */
} div_t;
的实施不只是使用 /
和%
运营商,所以它不完全是一个很复杂的或必要的功能,但它是C标准的一部分(如定义[ISO 9899:201X] [1])。
The implementation does simply use the /
and %
operators, so it's not exactly a very complicated or necessary function, but it is part of the C standard (as defined by [ISO 9899:201x][1]).
查看实施GNU库:
/* Return the `div_t' representation of NUMER over DENOM. */
div_t
div (numer, denom)
int numer, denom;
{
div_t result;
result.quot = numer / denom;
result.rem = numer % denom;
/* The ANSI standard says that |QUOT| <= |NUMER / DENOM|, where
NUMER / DENOM is to be computed in infinite precision. In
other words, we should always truncate the quotient towards
zero, never -infinity. Machine division and remainer may
work either way when one or both of NUMER or DENOM is
negative. If only one is negative and QUOT has been
truncated towards -infinity, REM will have the same sign as
DENOM and the opposite sign of NUMER; if both are negative
and QUOT has been truncated towards -infinity, REM will be
positive (will have the opposite sign of NUMER). These are
considered `wrong'. If both are NUM and DENOM are positive,
RESULT will always be positive. This all boils down to: if
NUMER >= 0, but REM < 0, we got the wrong answer. In that
case, to get the right answer, add 1 to QUOT and subtract
DENOM from REM. */
if (numer >= 0 && result.rem < 0)
{
++result.quot;
result.rem -= denom;
}
return result;
}
这篇关于是DIV功能很有用(stdlib.h中)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文