给定一个分子和分母,我们必须找到它们的商和余数,而无需使用模或除运算符。 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
相关用法
- C++ fma()用法及代码示例
- C++ log()用法及代码示例
- C++ strtod()用法及代码示例
- C++ valarray pow()用法及代码示例
- C++ valarray log()用法及代码示例
- C++ map rbegin()用法及代码示例
- C++ map rend()用法及代码示例
- C++ valarray exp()用法及代码示例
- C++ valarray cos()用法及代码示例
- C++ valarray sin()用法及代码示例
注:本文由纯净天空筛选整理自 div() function in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。