当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ div()用法及代码示例


给定一个分子和分母,我们必须找到它们的商和余数,而无需使用模或除运算符。 div()函数使我们能够轻松高效地完成相同的任务。

div()函数:以div_t,ldiv_t或lldiv_t类型的结构返回整数商和numer除以denom的余数(numer /denom),该结构具有两个成员:quot和rem。
用法:

div_t div(int numerator, int denominator);
ldiv_t div(long numerator, long denominator);
lldiv_t div(long long numerator, long long denominator);

当我们使用div()函数时,它将返回一个包含商和参数余数的结构。 div()函数中传递的第一个参数用作分子,第二个参数用作分母。
对于int值,返回的结构为div_t。该结构如下所示:


typedef struct
    { 
    int quot; /* Quotient.  */
    int rem; /* Remainder.  */
} div_t;

类似地,对于long值,返回结构ldiv_t,对于长long值,返回结构lldiv_t。

ldiv_t:
struct ldiv_t { 
    long quot; 
    long rem; 
}; 
  
lldiv_t:
struct lldiv_t { 
    long long quot; 
    long long rem; 
};

Where is it useful ?

问题是,由于我们同时具有%和/运算符,为什么还要使用div()函数?好吧,在一个我们需要兼有余数和余数的程序中,使用div()函数将是最佳选择,因为它一次为您计算两个值,而且与%和/函数一一相比,它需要的时间更少。
使用div()函数时,%运算符的区别在于,%运算符可能返回负值,而div()始终返回非负值。因此,可以根据需要有效使用div()函数。

What happens when the denominator is 0?

如果此函数的任何一部分(即余数或商)无法表示或找不到结果,则整个结构将显示不确定的行为。注意:在使用div()函数时,请记住在程序中包含cstdlib.h库。例子:

Input:div(40, 5)
Output:quot = 8 rem = 0

Input:div(53, 8)
Output:quot = 6 rem = 5

实作

// CPP program to illustrate 
// div() function 
#include <iostream> 
#include <cstdlib> 
using namespace std; 
  
int main() 
{ 
    div_t result1 = div(100, 6); 
  
    cout << "Quotient of 100/6 = " << result1.quot << endl; 
    cout << "Remainder of 100/6 = " << result1.rem << endl; 
  
    ldiv_t result2 = div(19237012L,251L); 
  
    cout << "Quotient of 19237012L/251L = " << result2.quot << endl; 
    cout << "Remainder of 19237012L/251L = " << result2.rem << endl; 
  
    return 0; 
}

输出:

Quotient of 100/6 = 16
Remainder of 100/6 = 4
Quotient of 19237012L/251L = 76641
Remainder of 19237012L/251L = 121


相关用法


注:本文由纯净天空筛选整理自 div() function in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。