整形详解
包含头文件
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
类型别名和整数类型声明
使用 typedef
创建类型别名,并声明不同类型的整数变量。
//类型别名
typedef unsigned int uint;
//短整形,两个字节
short int a = 1;
short a2 = 1;
//无符号段整形
unsigned short int a3 = 1;
//整形,四个字节
int b = 1;
//无符号整形
unsigned int b1 = 1;
//使用类型别名
uint b2 = 1;
//有符号整形,默认就是有符号的
signed int b3 = 1;
//长整形,八个字节
long int c = 1;
long c1 = 1;
整数的格式化输出
使用 printf
函数以不同的格式输出整数。
//整形的各种输出格式控制,h->short,d->decimal
//十进制格式
printf("有符号十进制,短整形:%hd,整形:%d,长整形:%ld\n",-10,-10,-10);
printf("无符号十进制,短整形:%hu,整形:%u,长整形:%lu\n\n",10,10,10);
//二进制格式
printf("无符号不带前缀二进制,短整形:%hb,整形:%b,长整形:%lb\n",-2,-2,-2);
printf("无符号二进制,短整形:%hub,整形:%ub,长整形:%lub\n\n",2,2,2);
//八进制格式
printf("无符号不带前缀八进制,短整形:%ho,整形:%o,长整形:%lo\n",8,8,8);
printf("无符号带小写前缀八进制,短整形:%#ho,整形:%#o,长整形:%#lo\n\n",8,8,8);
//十六进制
printf("无符号不带前缀小写十六进制,短整形:%hx,整形:%x,长整形:%lx\n",16,16,16);
printf("无符号不带前缀大写十六进制,短整形:%hX,整形:%X,长整形:%lX\n",16,16,16);
printf("无符号带前缀小写十六进制,短整形:%#hx,整形:%#x,长整形:%#lx\n",16,16,16);
printf("无符号带前缀大写十六进制,短整形:%#hX,整形:%#X,长整形:%#lX\n\n",16,16,16);
整数库函数的使用
使用标准库函数进行字符串转换和绝对值计算。
//整形常用的库函数
//字符串转int
int val1 = atoi("-1000");
//字符串转long
long val2 = atol("-100000000");
//求int的绝对值
int abs1 = abs(val1);
//求long的绝对值
long abs2 = labs(val2);
printf("字符串转int的值:%d,字符串转long的值:%ld,int的绝对值:%d,long的绝对值:%ld\n",val1,val2,abs1,abs2);
随机数生成
使用 time
函数获取当前时间作为随机数种子,并生成随机数。
//获取当前时间作为随机数种子
long seed = time(0);
//随机数生成器的初始化函数,
srand(seed);
//获取一个随机数
int rand_val = rand();
printf("获取的随机数是:%d\n",rand_val);
printf("获取的随机数是:%d\n",rand() );
//获取一定范围内的随机数
//0-50
rand_val = rand() % 50;
printf("随机生成的[0,50]的随机数:%d\n",rand_val);
//100-150
rand_val = rand() % 50 + 100;
printf("随机生成的[100,150]的随机数:%d\n",rand_val);
函数原型
int atoi(const char *str);
:将字符串转换为int
。long atol(const char *str);
:将字符串转换为long
。int abs(int j);
:返回int
的绝对值。long labs(long j);
:返回long
的绝对值。void srand(unsigned int seed);
:设置随机数种子。int rand(void);
:生成一个随机数。time_t time(time_t *timer);
:返回当前时间。
完整实例代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
//类型别名
typedef unsigned int uint;
//短整形,两个字节
short int a = 1;
short a2 = 1;
//无符号段整形
unsigned short int a3 = 1;
//整形,四个字节
int b = 1;
//无符号整形
unsigned int b1 = 1;
//使用类型别名
uint b2 = 1;
//有符号整形,默认就是有符号的
signed int b3 = 1;
//长整形,八个字节
long int c = 1;
long c1 = 1;
//整形的各种输出格式控制,h->short,d->decimal
//十进制格式
printf("有符号十进制,短整形:%hd,整形:%d,长整形:%ld\n",-10,-10,-10);
printf("无符号十进制,短整形:%hu,整形:%u,长整形:%lu\n\n",10,10,10);
//二进制格式
printf("无符号不带前缀二进制,短整形:%hb,整形:%b,长整形:%lb\n",-2,-2,-2);
printf("无符号二进制,短整形:%hub,整形:%ub,长整形:%lub\n\n",2,2,2);
//八进制格式
printf("无符号不带前缀八进制,短整形:%ho,整形:%o,长整形:%lo\n",8,8,8);
printf("无符号带小写前缀八进制,短整形:%#ho,整形:%#o,长整形:%#lo\n\n",8,8,8);
//十六进制
printf("无符号不带前缀小写十六进制,短整形:%hx,整形:%x,长整形:%lx\n",16,16,16);
printf("无符号不带前缀大写十六进制,短整形:%hX,整形:%X,长整形:%lX\n",16,16,16);
printf("无符号带前缀小写十六进制,短整形:%#hx,整形:%#x,长整形:%#lx\n",16,16,16);
printf("无符号带前缀大写十六进制,短整形:%#hX,整形:%#X,长整形:%#lX\n\n",16,16,16);
//整形常用的库函数
//字符串转int
int val1 = atoi("-1000");
//字符串转long
long val2 = atol("-100000000");
//求int的绝对值
int abs1 = abs(val1);
//求long的绝对值
long abs2 = labs(val2);
printf("字符串转int的值:%d,字符串转long的值:%ld,int的绝对值:%d,long的绝对值:%ld\n",val1,val2,abs1,abs2);
//获取当前时间作为随机数种子
long seed = time(0);
//随机数生成器的初始化函数,
srand(seed);
//获取一个随机数
int rand_val = rand();
printf("获取的随机数是:%d\n",rand_val);
printf("获取的随机数是:%d\n",rand());
//获取一定范围内的随机数
//0-50
rand_val = rand() % 50;
printf("随机生成的[0,50]的随机数:%d\n",rand_val);
//100-150
rand_val = rand() % 50 + 100;
printf("随机生成的[100,150]的随机数:%d\n",rand_val);
return 0;
}