c语言中printf函数的使用方法笔记/格式化输出整理

本文是一篇关于C语言printf函数的使用笔记,详细介绍了各种数字类型的占位符、转换规范、长度指示符、精度范围、最小字段宽度以及标志字符,并通过代码示例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面是代码形式的笔记,可以直接存为.c文件进行学习

#include <stdio.h>

int main(void)

{

    //printf函数的第一个参数必须是字符串,其后的每个参数应该与前面的占位符一一对应

    //               数字的占位符

    //对于传入printf的参数,c语言会发生自动类型提升

    //在整型中,char,short,int均会变成int,都可以使用%d作为占位符

    //比int更长的类型如long,long long需要%ld与%lld来进行占位

    //在很多编译器中long类型的长度与int相同,用%d输出也可以得到正确的结果

    //对于无符号整型,unsigned char,unsigned short ,unsigned int均使用%u

    //unsigned long,unsigned long long 分别使用%lu %llu

    //对于浮点数而言,均会提升为double,输出均使用%f

    //              转换规范

    //事实上占位符严格来讲应该叫做转换规范

//    转换规范以%百分号开始,依次具有下面这些元素:

//    1. 零个或多个标志字符(-,+,0,#)。

//    2. 一个可选的十进制整数常量表示的最小字段宽度。

//    3. 一个可选的用点号表示的精度范围,它的后面可以跟一个十进制整数。

//    4. 一个可选的长度指示符,可以用下列字母组合之一来表示: h、 hh、 l、 LL, z。

//    5. 由单个字符表示的转换操作

    //

    //下面介绍转换操作

    //转换操作由单个字符表示,取自下面这个集合: c、d、e、E、f、i、o、s、u、x、X

//    c sizeof(int) 数值对应的ASCII字符

//    d sizeof(int) 有符号十进制整型

//    e sizeof(double) 双精度浮点型, e计数法表示,e写做小e

//    E sizeof(double) 双精度浮点型, e计数法表示,e写做大E

//    f sizeof(double) 双精度浮点型,十进制浮点数

//    i sizeof(int) 在printf函数中与d相同

//    o sizeof(unsigned int) 无符号八进制整型

//    s sizeof(char *) 字符串

//    u sizeof(unsigned int) 无符号十进制整型

//    x sizeof(unsigned int) 无符号十六进制整型,小写字母

//    X sizeof(unsigned int) 无符号十六进制整型,大写字母

    //当u与d误用时,如果在共有的范围区间内,则可以正确转换,如果不在共有区间,则出错

    //

    //下面介绍长度指示符

    //长度指示符在转换操作前面,用于加宽或缩短转换操作所获取的二进制数据长度。

    //增加一个l,可以将转换操作获取的二进制长度升为更高一级的类型长度。

    //增加一个h,可以将转换操作获取的二进制长度降为更低一级的类型长度。

    //下面是一些示例:

//    l   d或i           sizeof(long)

//    ll  d或i           sizeof(long long)

//    l   u或o或x或X      sizeof(unsigned long)

//    ll  u或o或x或X      sizeof(unsigned long long)

//    h   d或i           sizeof(short)

//    hh  d或i           sizeof(char)

//    h   u或o或x或X      sizeof(unsigned short)

//    hh  u或o或x或X      sizeof(unsigned char)

    //sizeof返回的数值是size_t类型的,这是一种整型变量,是已有整型变量的别名。

    //size_t变量可能是unsigned int/long/long long的别名,因此使用%d输出不严谨

    //长度指示符z用于指示size_z类型的大小,使用%zu可以严谨地转换size_z类型

    //

    //下面介绍精度范围

    //转换操作可以制定一个可选的精度范围,用一个点号以及它后面一个可选的十进制正数表示

//    1. d、 i、 o、 u、 x、 X所打印的最小数字位数,不足将补齐。

//    2. e, E,和f转换中小数点右边的数字位数

    //

    //下面介绍最小字段宽度

    //最小字段宽度指定输出的字符最小为多少字符,如不足,将使用空格补齐到指定的最小宽度

    //在左侧补足

    //

    //下面介绍标志字符

    //只有四种标志:-,+,0,#。也可以不写

    //标志 0 :使用0而不是空格作为填充字符

    //标志 - :打印的字符左对齐

    //标志 - 同时导致Flag '0' is ignored when flag '-' is present

    int n = 1234;

    printf("%-6d\n", n);

    printf("%-06d\n", n);

    //运行结果如下:

    //1234

    //1234

    //注意,0标志失效,且1234后其实有两个空格

    //标志 + :总是产生符号, +(正数)或-(负数)

    int m = 1234;

    printf("%+6d\n", m);

    printf("%+06d\n", m);

    //运行结果如下:

    // +1234

    //+01234

    //注意符号需要占据一个长度位置,且与补空格和补0的位置有区别

    //标志 # 八进制前加0,十六进制前加0x(大小写要看具体转换操作)

    return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值