C語(yǔ)言的abs()函數(shù)和div()函數(shù)你了解嗎
C語(yǔ)言庫(kù)中提供了許多函數(shù),這樣需要計(jì)算的時(shí)候,可以直接借助庫(kù)函數(shù),而不用自己重新編寫函數(shù)。今天就來(lái)看一下C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)里面的整型函數(shù)。
int __cdecl abs(int _X); long __cdecl labs(long _X); div_t __cdecl div(int _Numerator,int _Denominator); ldiv_t __cdecl ldiv(long _Numerator,long _Denominator);
abs函數(shù)用來(lái)計(jì)算整數(shù)的絕對(duì)值,它的參數(shù)就是待計(jì)算的整數(shù),返回值是計(jì)算后的絕對(duì)值。編寫一段簡(jiǎn)單的代碼,演示一下這個(gè)函數(shù)的用法。
#include <stdio.h> #include <stdlib.h> int main(int argc, char** argv) { int x1 = 56,x2 = -89; int y1,y2; y1 = abs(x1); y2 = abs(x2); printf("%d %d",y1,y2); return 0; }
定義一個(gè)正整數(shù),一個(gè)負(fù)整數(shù),然后用abs函數(shù)分別求絕對(duì)值,然后將計(jì)算的結(jié)果打印出來(lái)。
如果傳遞進(jìn)去的數(shù)字不是整數(shù)的話,輸出的結(jié)果是什么呢?
向abs函數(shù)里面分別傳入一個(gè)正的浮點(diǎn)數(shù)和一個(gè)負(fù)的浮點(diǎn)數(shù),計(jì)算出來(lái)的結(jié)果依然是正整數(shù),說(shuō)明傳遞參數(shù)后,abs函數(shù)會(huì)將傳入的參強(qiáng)制轉(zhuǎn)換為整數(shù),然后在進(jìn)行計(jì)算。
labs函數(shù)的功能和abs函數(shù)的功能是一樣的,不過(guò)它主要用來(lái)計(jì)算長(zhǎng)整數(shù)的絕對(duì)值。
div函數(shù)用來(lái)計(jì)算兩個(gè)數(shù)字相除的商和余數(shù),它有兩個(gè)參數(shù),用第一個(gè)參數(shù)(分子)除以第二個(gè)參數(shù)(分母),然后將商和余數(shù)存放在結(jié)構(gòu)體中,返回的結(jié)果是一個(gè)結(jié)構(gòu)體。它的結(jié)構(gòu)體定義如下:
typedef struct _div_t { int quot; int rem; } div_t; typedef struct _ldiv_t { long quot; long rem; } ldiv_t;
quot 是商,rem 是余數(shù)。下面通過(guò)一段代碼來(lái),來(lái)演示一下這個(gè)函數(shù)的用法。
#include <stdio.h> #include <stdlib.h> int main(int argc, char** argv) { int x1 = 10,x2 =3; div_t ret; ret = div(x1,x2); printf("%d %d",ret.quot,ret.rem); return 0; }
計(jì)算10 / 3的商和余數(shù),輸出結(jié)果如下:
同樣負(fù)整數(shù)也可以使用這個(gè)函數(shù)進(jìn)行計(jì)算。
ldiv函數(shù)的功能和div函數(shù)的功能一樣,不過(guò)它主要用來(lái)計(jì)算長(zhǎng)整數(shù)的除法。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
純c語(yǔ)言實(shí)現(xiàn)面向?qū)ο蠓治雠c示例分享
采用C語(yǔ)言實(shí)現(xiàn)的關(guān)鍵是如何運(yùn)用C語(yǔ)言本身的特性來(lái)實(shí)現(xiàn)多態(tài)、繼承面、封裝的面向?qū)ο蟮奶卣?最近給出了例子,大家可以參考使用2014-01-01c++中拷貝構(gòu)造函數(shù)的參數(shù)類型必須是引用
如果拷貝構(gòu)造函數(shù)中的參數(shù)不是一個(gè)引用,即形如CClass(const CClass c_class),那么就相當(dāng)于采用了傳值的方式(pass-by-value),而傳值的方式會(huì)調(diào)用該類的拷貝構(gòu)造函數(shù),從而造成無(wú)窮遞歸地調(diào)用拷貝構(gòu)造函數(shù)。因此拷貝構(gòu)造函數(shù)的參數(shù)必須是一個(gè)引用2013-07-07C++實(shí)現(xiàn)LeetCode(312.打氣球游戲)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(312.打氣球游戲),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C語(yǔ)言實(shí)現(xiàn)五子棋人人對(duì)戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)五子棋人人對(duì)戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易的三子棋小游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易的三子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08C++中構(gòu)造函數(shù)與析構(gòu)函數(shù)的調(diào)用順序詳解
C++ 語(yǔ)言一直被批評(píng)太復(fù)雜了,很多細(xì)節(jié)的地方需要仔細(xì)推敲,甚至其構(gòu)造函數(shù)和析構(gòu)的調(diào)用順序也成為了一個(gè)讓人迷惑的問(wèn)題,在此我做了簡(jiǎn)單的總結(jié)。這篇文章主要介紹了C++中構(gòu)造函數(shù)與析構(gòu)函數(shù)的調(diào)用順序,需要的朋友可以參考借鑒。2017-01-01