「C與指針心得」28. 標準函數庫-整數函數

本節主要講解之前沒有用過的一些標準函數庫。主要分為 整數函數、浮點型函數、日期和時間函數等。

這一章主要講解整數函數。

整數函數:

整數函數的返回值為整型值,分為三類:算術隨機數字符串轉換


算術:

標準函數庫包含了4個整型算術函數—abs\labs\ div\ldiv

1. abs—求絕對值:

原型:int abs(int value);
函數說明:abs用來計算傳入參數的絕對值,然後將結果返回。
用法:
int answer;
answer = abs(-12);//answer 返回為-12的絕對值,結果為12


2. labs—求絕對值:

原型:long int labs(long int value);

返回值:labs跟abs一樣,用來計算絕對值,但是labs支持長度為long int類型,長度更長。

用法


long result;
long x = -12345678L; //長度範圍超過了int的最大範圍
result= labs(x);


3.div—兩個整數相除:

原型:div_t div(int numerator,int denominator);

返回值:返回商和餘數

用法

div_t q;
q = div(10,3);
printf("8 div 3 = %d, remainder = %d\n", q.quot,q.rem);

輸出:

8 div 3 = 3, remainder = 1


4.ldiv—兩個整數相除:

原型:ldiv_t ldiv(long int numer, long int denom);

返回值:返回商和餘數

用法


ldiv_t lx;
lx = ldiv(100000L, 30000L);
printf("100000 div 30000 = %ld remainder %ld\n", lx.quot, lx.rem);

輸出:

100000 div 30000 = 3 remainder 10000

隨機數:

在我們常用的一些加密、模擬操作的時候,需要用到隨機數,這裡有兩個函數(rand\srand)合在一起使用能夠產生偽隨機數。

偽隨機數:通過計算產生隨機數,有可能重複,因此不是真正的隨機數。


1. rand—產生隨機數:

原型:int rand():

用法

int number;
number = rand();


2.srand —提供隨機數種子:

原型:void srand(unsigned int seed);

這裡的seed是rand函數的種子,用來初始化rand()的初始值。

rand調用之前,需要用srand產生一個種子,如果沒有用主動調用srand,系統也會默認使用srand(1)。

通常情況下,srand後面跟時間函數來完成隨機種子生成,減少隨機數相同的可能性。

srand((unsigned)time(NULL));
int a = rand();

字符串轉換:

字符串轉換函數把字符串轉換成數值,常用的有atoi\atol.

1.atoi—字符串轉成整數:

原型:int atoi(const char *nptr);

返回值:參數nptr字符串,如果第一個非空格字符存在,是數字或者正負號則開始做類型轉換,之後檢測到非數字(包括結束符 \0) 字符時停止轉換,返回整型數。否則,返回零。


示例:

int n;
char *str = "12345.67";
n = atoi(str); //n的值為12345

2.atol—字符串轉成長整形:

原型:long atol(const char *nptr);

返回值:返回轉換後的長整型數。如果傳入的字符串為空,或者字符串包含的內容非阿拉伯數字序列,則函數返回默認值0。

示例

long l;
char *str = "98765432";
l = atol(str); //l為98765432
「C與指針心得」28. 標準函數庫-整數函數


分享到:


相關文章: