printf函数的参数类型和输出形式
字符 | 参数类型 | 输出形式 |
---|
d,i | int | 十进制数 |
u | int | 无符号十进制数 |
lld | long long | 十进制数 |
llu | unsigned long long | 无符号十进制数 |
o | int | 无符号八进制数(不含前导0) |
x,X | int | 无符号十六进制数(没有前导0x或0X),10~15分别用abcdef(参数类型为小写x时)和ABCDEF(参数类型为大写X时)表示 |
c | int | 单个字符 |
s | char* | 顺序打印字符串中的字符,直到遇到’\0’或已打印了由精度指定的字符数为止 |
f | double | 十进制小数[-]m.dddddd,其中d的个数由精度指定(默认值为6) |
e,E | double | [-]m.dddddd e [±]xx(参数类型为小写e)或[-]m.dddddd E [±]xx(参数类型为大写E),其中d的个数由精度指定(默认值为6) |
g,G | double | 如果指数小于-4或大于等于精度,则用%e或%E格式输出,否则用%f格式输出,尾部的0或小数点不打印 |
p | void* | 指针(取决于具体实现) |
在转换说明中,宽度或精度可以用*表示,这时,宽度或精度的值通过转换下一参数(必须为int类型)来计算,例如为了从字符串s中打印最多max个字符,可以使用下列语句:
printf("%.*s",max,s);
scanf函数的参数类型和输入形式
字符 | 参数类型 | 输入形式 |
---|
d | int* | 十进制整数 |
u | unsigned int* | 无符号十进制整数 |
lld | long long | 十进制数 |
llu | unsigned long long | 无符号十进制数 |
i | int* | 整数,可以是八进制(以0开头),也可以是十六进制(以0x或0X开头) |
o | int* | 八进制整数(可以以0开头,也可以不以0开头) |
x | int* | 十六进制整数(可以以0x或0X开头,也可以不以0x或0X开头) |
c | char* | 单个字符,该转换不跳过空白符 |
s | char* | 字符串 |
e,f,g | float* | 十进制小数[-]m.dddddd,其中d的个数由精度指定(默认值为6) |
e,E | double | 浮点数 |