C語言的abs()函數和div()函數你瞭解嗎

C語言庫中提供瞭許多函數,這樣需要計算的時候,可以直接借助庫函數,而不用自己重新編寫函數。今天就來看一下C語言標準庫函數裡面的整型函數。

  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函數用來計算整數的絕對值,它的參數就是待計算的整數,返回值是計算後的絕對值。編寫一段簡單的代碼,演示一下這個函數的用法。

#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;
}

定義一個正整數,一個負整數,然後用abs函數分別求絕對值,然後將計算的結果打印出來。

image.png

如果傳遞進去的數字不是整數的話,輸出的結果是什麼呢?

image.png

abs函數裡面分別傳入一個正的浮點數和一個負的浮點數,計算出來的結果依然是正整數,說明傳遞參數後,abs函數會將傳入的參強制轉換為整數,然後在進行計算。

labs函數的功能和abs函數的功能是一樣的,不過它主要用來計算長整數的絕對值。

div函數用來計算兩個數字相除的商和餘數,它有兩個參數,用第一個參數(分子)除以第二個參數(分母),然後將商和餘數存放在結構體中,返回的結果是一個結構體。它的結構體定義如下:

  typedef struct _div_t {
    int quot;
    int rem;
  } div_t;
  typedef struct _ldiv_t {
    long quot;
    long rem;
  } ldiv_t;

quot 是商,rem 是餘數。下面通過一段代碼來,來演示一下這個函數的用法。

#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;
}

計算10 / 3的商和餘數,輸出結果如下:

image.png

同樣負整數也可以使用這個函數進行計算。

image.png

ldiv函數的功能和div函數的功能一樣,不過它主要用來計算長整數的除法。

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!     

推薦閱讀: