給定一個分子和分母,我們必須找到它們的商和餘數,而無需使用模或除運算符。 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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。