「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. 标准函数库-整数函数


分享到:


相關文章: