基本类型
c语言的基本类型:int 【long、short、unsigned、signed(c90)】、char、float、double、_Bool【布尔值】、_complex、_Imaginary【复数和虚数】
输入输出
printf
标志字符
标志 |
含义 |
- |
转换的结果在字段内左对齐 |
+ |
有符号的转换结果总是以+或者-开始 |
空格 |
如果有符号转换的第一个字符不是符号,或者有符号转换不产生任何字符,则在结果前加一个空格。如果空格和+同时出现,空格标志将被忽略 |
# |
结果被转换成另一种形式 |
0 |
对于 d,i,o,u,x,X,a,A,e,E,f,F,g,G 的转换,前导零(跟随在符号或基底表示后面)用于填充字段宽度,而不是执行空格填充,除非转换无穷大或非数值。 |
长度修饰符
修饰符 |
含义 |
hh |
指定后面的 d,i,o,u,x 或 X 转换说明符应用于 signed char 或 unsigned char 实参(实参将根据整型提升而提升,但其值在打印之前应当转换为 signed char 或 unsigned char);或者后面的 n 转换说明符应用于指向 signed char 实参的指针。 |
h |
指定后面的 d,i,o,u,x 或 X 转换说明符应用于 short int 或 unsigned short int 实参(实参将根据整型提升而提升,但其值在打印前应当转换为 short int 或 unsigned short int);或者后面的 n 转换说明符应用于指向 short int 实参的指针。 |
l |
指定后面的 d,i,o,u,x 或 X 转换说明符应用于 long int 或 unsigned long int 实参;或者后面的 n 转换说明符应用于指向 long int 实参的指针;或者后面的 c 转换说明符应用于 wint_t 实参;或者后面的 s 转换说明符应用于指向 wchar_t 实参的指针;对后面的 a,A,e,E,f,F,g 或 G 转换说明符没有影响。 |
ll |
指定后面的 d,i,o,u,x 或 X 转换说明符应用于 long long int 或 unsigned long long int 实参;或者后面的 n 转换说明符应用于指向 long long int 实参的指针。 |
j |
指定后面的 d,i,o,u,x 或 X 转换说明符应用于 intmax_t 或 uintmax_t 实参;或者后面的 n 转换说明符应用于指向 intmax_t 实参的指针。 |
z |
指定后面的 d,i,o,u,x 或 X 转换说明符应用于 size_t 或相应的有符号整数类型实参;或者后面的 n 转换说明符应用于指向与 size_t 相对应的有符号整型实参的指针。 |
t |
指定后面的 d,i,o,u,x 或 X 转换说明符应用于 ptrdiff_t 或相应的无符号整型实参;或者后面的 n 转换说明符应用于指向 ptrdiff_t 实参的指针。 |
L |
指定后面的 a,A,e,E,f,F,g 或 G 转换说明符应用于 long double 参数。 |
转换说明符
说明符 |
含义 |
d,i |
int实参被转换成带符号的十进制形式,格式为[-]dddd,精度指定最少要输出的数字位数;如果要转换的值可以用更少的数字表示,则用前导零扩充。默认精度为1。 |
o,u,x,X |
unsigned int实参被转换成无符号八进制(o),无符号十进制(u),或无符号十六进制表示法(x或X)格式为dddd。字母abcdef用x转换,字母 ABCDEF 用于 X 转换。精度指定最少要输出的数字位数;如果要转换的值可以用更少的数字表示,则用前导零扩充。默认精度为1。使用精度为零对零值进行转换的结果是没有字符。 |
f,F |
表示浮点数的double实参被转换[-]ddd.ddd样式的十进制表示法,小数位数由精度指定。如果缺省精度,则默认值为6。如果精度为0且未指定#标志,则不会出现小数点字符。 |
e,E |
表示浮点数的double实参被转换成[-]ddde±dd样式,在小数点字符之前有一个数字(如果实参是非零,则为非零),小数点后的位数取决于精度;如果缺省精度,则默认值为6。如果精度为零且未指定#标志,则不会出现小数点。该值四舍五入到合适的数位。E转换说明符使用带E的数字而不是带e的数字引入指数。指数总是包含两位数字,并且只包含两位数字。 |
g,G |
会自主选择【f,F e,E中】合适的表示法输出 |
c |
如果没有l长度修饰符,则将int实参转换成unsigned char,并写入结果字符 ; 如果存在 l 长度修饰符,则对 wint_t 实参进行转换,就像使用 ls 转换说明进行转换一样且没有精度,而实参指向含两个元素的 wchar_t 数组的初始元素。第一个元素包含 lc 转换说明的 wint_t 实参,第二个元素是空宽字符。 |
s |
如果没有 l 长度修饰符,实参应当是一个指向字符类型数组初始元素的指针。数组中的字符被写入直到(但不包括)末尾的空字符。如果指定了精度,则写入的字节数不会超过这个数。如果精度没有指定或者大于数组的大小,数组中应该包含一个空字符。 如果存在 l 长度修饰符,则实参必须是指向 wchar_t 类型数组初始元素的指针。数组中的宽字符被转换为多字节字符(每个都像是调用 wcrtomb 函数一样,在转换第一个宽字符之前,由 mbstate_t 对象描述的转换状态初始化为零)直到并包括结束的空宽字符。生成的多字节字符被写入直到(但不包括)末尾的空字符(字节)。如果没有指定精度,数组应该包含一个空宽字符。如果指定一个精度,不会超过那么多字节被写入(包括转换序列,如果有的话),无论何时数组中应当包含一个空宽字符,为了使多字节字符序列长度与精度相等,该函数需要访问数组结束后的一个宽字符。在任何情况下都不会写入部分多字节字符。 |
p |
实参应当是一个指向 void 的指针。指针的值被转换成一个打印字符序列,以一种实现定义的方式。 |
n |
实参应当是一个指向有符号整数的指针,这个实参被写入通过调用 fprintf 写入输出流到目前为止的字符数。不转换实参,只消耗一个实参。如果转换说明包含任何标志、字段宽度或精度,则行为未定义 |
% |
写入一个%字符。不转换参数。完整的转换说明为%%。 |
scanf
转换说明 |
含义 |
%c |
把输入解释成字符 |
%d |
有符号十进制整数 |
%e、%f、%g、%a |
把输入解释成浮点数 |
%E、%F、%G、%A |
把输入解释成浮点数 |
%i |
有符号十进制整数 |
%o |
有符号八进制 |
%p |
指针 |
%s |
字符串 |
%u |
无符号十进制 |
%x X |
有符号十六进制 |
转换说明 |
含义 |
* |
抑制赋值【用于丢弃输入中的某些数据】 ||| scanf("%2d*%3d%2d",&a,&b);【丢弃输入中的第四-五位字符】 |
数字 |
最大字段宽度 |
hh |
signed char或unsigned char类型 |
ll |
long long或unsigned long long 类型 |
h、l或L |
|
j |
|
z |
|
t |
|