c语言的基本类型及输入输出占位符

基本类型

c语言的基本类型:int 【long、short、unsigned、signed(c90)】、char、float、double、_Bool【布尔值】、_complex、_Imaginary【复数和虚数】

输入输出

printf

printf

标志字符

标志 含义
- 转换的结果在字段内左对齐
+ 有符号的转换结果总是以+或者-开始
空格 如果有符号转换的第一个字符不是符号,或者有符号转换不产生任何字符,则在结果前加一个空格。如果空格和+同时出现,空格标志将被忽略
# 结果被转换成另一种形式
0 对于 d,i,o,u,x,X,a,A,e,E,f,F,g,G 的转换,前导零(跟随在符号或基底表示后面)用于填充字段宽度,而不是执行空格填充,除非转换无穷大或非数值。

长度修饰符

修饰符 含义
hh 指定后面的 d,i,o,u,x 或 X 转换说明符应用于 signed charunsigned char 实参(实参将根据整型提升而提升,但其值在打印之前应当转换为 signed char 或 unsigned char);或者后面的 n 转换说明符应用于指向 signed char 实参的指针。
h 指定后面的 d,i,o,u,x 或 X 转换说明符应用于 short intunsigned 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

posted @   dzy2831  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示