div.c

来自「一款类linux的操作系统源码」· C语言 代码 · 共 35 行

C
35
字号
#include <stdlib.h>		       /* div_t */div_tdiv(int num, int denom){    div_t r;    r.quot = num / denom;    r.rem = num % denom;    /*      * The ANSI standard says that |r.quot| <= |n/d|, where n/d is to be     * computed in infinite precision.  In other words, we should always     * truncate the quotient towards 0, never -infinity.     *      * Machine division and remainer may work either way when one or both of n     * or d is negative.  If only one is negative and r.quot has been     * truncated towards -inf, r.rem will have the same sign as denom and the     * opposite sign of num; if both are negative and r.quot has been     * truncated towards -inf, r.rem will be positive (will have the opposite     * sign of num).  These are considered `wrong'.     *      * If both are num and denom are positive, r will always be positive.     *      * This all boils down to: if num >= 0, but r.rem < 0, we got the wrong     * answer. In that case, to get the right answer, add 1 to r.quot and     * subtract denom from r.rem.     */    if (num >= 0 && r.rem < 0) {	r.quot++;	r.rem -= denom;    }    return r;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?