整理一下便于查看和使用>>>
常见的类型
type的
字符用于规定输出数据的类型,含义如下:
字符 | 对应数据类型 | 含义 |
d / i | int | 接受整数值并将它表示为有符号的十进制整数,i是老式写法 |
o | unsigned int | 无符号8进制整数(不输出前缀0) |
u
| unsigned int | 无符号10进制整数 |
x / X
| unsigned int | 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x) |
f(lf)
| float(double) | 单精度浮点数用f,双精度浮点数用lf(尤其scanf不能混用) |
e / E
| double | 科学计数法表示的数,此处"e"的大小写代表在输出时用的“e”的大小写 |
g / G
| double | 有效位数,如:%8g表示单精度浮点数保留8位有效数字。双精度用lg |
c
| char | 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符 |
s / S
| char * / wchar_t * | 字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符) |
p
| void * | 以16进制形式输出指针 |
n | int * | 到此字符之前为止,一共输出的字符个数,不输出文本 |
%
| 无输入 |
不进行转换,输出字符‘%’(百分号)本身
|
m | 无 | 打印errno值对应的出错内容,(例: printf("%m\n"); ) |
注:%g、%G在小数点位数四位或指数大于等于精度时用%e、%E,否则用%f。
printf中几个不常用的类型
d,lx,ld
,lu,这几个都是输出32位的,
hd,hx,hu,这几个都是输出16位数据的,
hhd,hhx,hhu,这几个都是输出8位的,
lld,llu,llx,这几个都是输出64位的,