本文小结平常C语言编程中遇到的整型数据格式化输出控制知识,留个笔记方便查阅。
原理规则
- 位宽控制
h, l, ll
分别指定位宽:16位,32位,64位
- 进制控制
o, x, d, u
分别决定进制:八进制、十六进制、十进制、十进制
- 符号控制
u, d
分别决定十进制里的符号位,u为无符号数,d为有符号数
- 排序规则
- 位宽+进制+符号,如输出16位十进制无符号数:
%hu
- 位宽+进制+符号,如输出16位十进制无符号数:
补充说明:
- 无8位的位宽控制符,8位位宽的数字统一扩展成高位输出
o/O, X/x
控制八或十六进制的大小写输出。输出前缀可自行加上相应的0x/0X以区分- 十六进制、二进制、八进制统一按无符号输出,若为有符号数,按首位去解读
常用例子
总结如下表:
位宽 | 进制 | 符号 | 格式化控制 |
---|---|---|---|
8位 | 十进制 | 有 | %hd |
8位 | 十六进制 | - | %hx |
16位 | 十进制 | 有 | %hd |
16位 | 十进制 | 无 | %hu |
16位 | 十六进制 | - | %hx |
32位 | 十进制 | 有 | %d or %ld |
32位 | 十进制 | 无 | %u or %lu |
32位 | 十六进制 | - | %x or %lx |
64位 | 十进制 | 有 | %lld |
64位 | 十进制 | 无 | %llu |
64位 | 十六进制 | - | %llx |
部分说明
- 8位位宽的数字,无单独的输出控制符,可以按16位/32位的方式指定扩展输出。若为8位的字符,则用
%c
输出。 - 32位的数字输出可以不加修饰符
l
,进制符u/d/x
默认32位输出。
具体不同整数类型打印格式应用:
- int %d unsigned int %u
- long %ld unsigned long %lu
- long long %lld unsigned long long %llu
更多进阶内容,请查阅书籍:《C程序设计语言》。
相关文章
- C学习:%p和%x、%lx、%hx、%llx区别辨析,link