P26 printf
十六进制有小写和大写的区别,加井号的作用可以把前面的0x或者0X显示出来(八进制也可以显示)
printf("hexadecimal:%#x",number)
printf("hexadecimal:%#X",number)
各种数据类型所对应占位符的类型:
15 %h:short %hu: unsigned short
16 %l:long %lu: unsigned long
17 %ll: long long %llu: unsigned long long
printf(“随便一个数:%-10d”, number) 1 标识符
printf(“随便一个数:%10d”, number) 2
printf(“随便一个数:%+10d”, number) 3 标识符
printf(“随便一个数:%010d”, number) 4 先导数
1: 空出十个位置 number向右对齐
2: 空出十个位置 number向左对齐
3: 空出十个位置 number居中
4: 空出十个位置 number不够10位前面用0填充
P29 unsigned
unsigned int 无符号整数类型
写声明 unsigned int number = 10
在向 printf 里代的时候一定不要用%d,务必要用%u
但如果声明是负数,%d 运行可能不会出错,但是 %u 会产生随便一个数 (溢出),但是还是务必使用%u(这是规范)
包括之后for循环里的index也都是unsigned int类型
在上表中 short 类型非常重要
因为它占用的内存空间比较小
但同时它所可以接受的数的范围是比较小的
如果在项目中所用到的数的大小一定不会超过这个范围(防止溢出)
那么就可以使用 short 类型来节省空间
pg: short 的占位符是 %hd
unsigned 的占位符是 %hu
p31 long和longlong与CPU架构
CPU架构的位数
兼容
内存条
windows XP 32位->64位
windows 7 64位
32位的操作系统(CPU架构)中 long 占4个字节
64位的操作系统(CPU架构)中 long 占8个字节
但是在vs中无论是32位还是64位 long 都是只占4个字节
32位的操作系统(CPU架构)中 longlong 占8个字节
64位的操作系统(CPU架构)中 longlong 还是占8个字节
p32size_t类型与sizeof的使用
sizeof(数据类型) 这个内置函数的占位符是%zu
返回该数据类型所占的字节数
026.固定宽度整数类型 include
在实际开发中,通常不会用到int short long的类型,会用以下的形式来代替
开头需要加上 include
ctrl+鼠标左键 可以打开include进行查看源代码
在用 int..._t 时,举个例子:
在这里, int16_t 对应的是 short类型,按理说占位符应该是%h, 但写出来发现会报错
实际上,正确的占位符形式应该是%hd ,如果是无符号整数的话那么占位符就应该是%hu
以此类推,int64_t 就应该为%lld,uint64_t 就为%llu
再用到数字比较大的时候:
后缀会有一个U是一个字面量,让编译器直接把数字当作 unsigned int 来处理,防止到后面一些潜在的问题。
字面量也会有L、LL、UL、ULL
(long,long long,unsigned long,unsigned long long)。
uint32_t往后的需要加字面量
注意:
事实上数字后面的字面量下面这种类型也是可以的:
028.隐式与显式类型转换
类型转换(一定要用显式)
1.无符号转换为有符号 eg: signed --> unsigned int8_t --> uint8_t
2.有符号转换为无符号 eg: unsigned --> signed uint8-t --> int8-t
3.大范围转换为小范围 eg: int8_t --> int16_t
4.小范围转换为大范围 eg: int16_t --> int8_t
无论如何,从小范围转换成大范围肯定会出现溢出
以下为类型转换模板:
行数
1 类型1 变量名1 = 赋值 //赋值声明
2 类型2 变量名2 = (类型2)变量名1
//显式转换(等号右侧先转化为类型二接着再把值赋给变量二)
//在写代码的时候一定要加上涂色这一部分,不然溢出后出现问题报错容易察觉不到
3 printf("···")
但是我觉得显示转换应该用一下这种形式比较好:
(先声明再转换,就是之后在代码中不太好找)
或者
2 类型2 变量名2 = 变量名1 //隐式转换
3 printf("···")
或者
2 变量名2 = 变量名1 //隐式转换
3 printf("···")
要想找一个数据类型最大、最小值:
也在 include 中,Ctrl + 鼠标左键 翻一下就可以找到
029.固定宽度整数类型格式化输出 include
#include //首先,输入头文件
//然后,Ctrl + 鼠标左键
之后,在格式化输出的时候如下:
主要是在显示开发的过程中,其实根本不怎么用得到%d, %u ,%llu这样的占位符
因为第一是容易忘,第二是不直观。