C语言类型转换
0、typedef (C语言的关键字)
使用typedef为现有类型创建别名,定义易于记忆的类型名
如 将 unsigned char 定义别名为 U8
将 unsigned long long 定义别名为 U64
typedef unsigned char U8; 1字节 %d 输出 无符号char字符类型
typedef unsigned short U16; 2字节 %d 输出 无符号short短整数类型
typedef unsigned int U32; 4字节 %u 输出 无符号int类型
typedef unsigned long long U64; 8字节 %llu 输出 无符号long long长整型类型
signed int = int (int默认有符号) %d 有符号十进制输出
unsigned int 无符号int 非负整数 %u 无符号十进制输出
1、重点介绍
(1)、long
long: 长整型, 是long int 的简写. 格式化字符输出:%ld
每个long占4个字节,在32位编译系统下,long 和 int 占的空间是相同的,取值范围-2^31~(2^31-1)
unsigned long: 无符号长整型, 格式化字符输出:%lu, 取值范围 0 ~ 2^32-1
long long类型: 表示C语言目前最长的系统整型类型,占8字节,64位。格式化字符%lld
(2)、sprintf (不是C语言类型)
sprintf 指的是字符串格式化命令
函数声明为
int sprintf(char *string, char *format [,argument,...]);
主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。sprintf 是个变参函数。
代码:
char str_0404[40];
int num = 7
sprintf(str_0404, "/normalTest/a%d", num);
结果:
所以str_0404 就是 /normalTest/a7
2、类型转换
(1)、char -> int
代码:
void Test01_char_to_int()
{
char str01[] = "306";
/*求字符串长度*/
int length = strlen(str01);
printf("length=%d\n",length);
int i = 0;
int num = 0;
int m = 0;
/* 把字符转换为数字。 字符 '0' 对应的ASCII是48 */
printf("str01[0]=%d\n",str01[0]