當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。