一、常用的库函数
int atoi(const char *nptr);
long atol(const char *nptr);
int abs(const int j);
long labs(const long int j);
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ii;
long ll;
ii=atoi("-2147483647");
ll=atol("-9223372036854775807");
printf("ii=%d\n",ii);
printf("ll=%ld\n",ll);
ii=abs(ii);
ll=labs(ll);
printf("ii=%d\n",ii);
printf("ll=%ld\n",ll);
}
- 运行结果:
二、数据类型的别名
- C语言许程序员使用 typedef 关键字来给数据类型定义一个别名
typedef unsigned int uint;
uint x; 等同于 unsigned int x;
三、随机数
1、生成随机数
- 在C语言中,我们使用 <stdlib.h> 头文件中的 srand和rand 函数来生成随机数。
void srand(unsigned int seed);
int rand();
- srand函数初始化随机数发生器(俗称种子),在实际开发中,我们可以用时间作为参数,只要每次播种的时间不同,那么生成的种子就不同,最终的随机数也就不同,通常我们采用 <time.h> 头文件中的 time 函数即可得到一个精确到秒的时间作为种子。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int ii;
srand(time(0));
for (ii=0;ii<5;ii++)
{
printf("%d ", rand());
}
printf("\n");
}
- 运行结果:
2、生成一定范围随机数
- 在实际开发中,需求往往是一定范围内的随机数,对于产生一定范围的随机数,就需要使用一定的技巧,常用的方法是取模运算(取余数),再加上一个加法运算:
int a = rand() % 50;
int a = rand() % 51 + 100;
- 取模即取余数,rand()%51+100,rand()%51是产生 0~50 的随机数,后面+100保证 a 最小只能是 100,最大就是 50+100=150。
四、转义字符
转义字符 | 意义 | ASCII码值 | 使用频率 |
---|
\n | 换行(LF) ,将当前位置移到下一行开头。 | 10 | 每天都用 |
’ | 单引号。 | 39 | 常用 |
" | 双引号。 | 34 | 常用 |
\ | 反斜杠。 | 92 | 常用 |
\r | 回车(CR) | 13 | windows平台常用,linux平台不常用。 |
五、字符就是整数
- 字符和整数没有本质的区别。可以给 char 变量一个字符,也可以给它一个整数;反过来,可以给 int 变量一个整数,也可以给它一个字符。
- char 变量在内存中存储的是字符对应的 ASCII 码值。如果以 %c 输出,会根据 ASCII 码表转换成对应的字符,如果以 %d 输出,那么还是整数。
- int 变量在内存中存储的是整数本身,如果以 %c 输出时,也会根据 ASCII 码表转换成对应的字符。
也就是说,ASCII 码表将整数和字符关联起来了。 - char类型占内存一个字节,signed char取值范围是-128-127,unsigned char取值范围是0-255。
- 如果整数大于255,那么整数还是字符吗?
①、描述再准确一些,在char的取值范围内(0-255),字符和整数没有本质区别。
②、字符肯定是整数,0-255范围内的整数是字符,大于255的整数不是字符。