详解C语言printf()输出格式

 更新时间:2023年03月18日 09:56:27   作者:APOLLO_TS  
这篇文章主要介绍了C语言printf()输出格式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

C语言printf()输出格式

主要说明格式字符串的基本思想。

格式字符串纲要

[标志]    [输出最少宽度]    [.精度]    [长度]    类型 \fcolorbox{#ffae42}{#2E8B57}{\textcolor{White}{[标志]\;[输出最少宽度]\;[.精度]\;[长度]\;类型}} [标志][输出最少宽度][.精度][长度]类型​

🍉🍉因为权重是自右向左,所以先从右侧往左介绍,有时这个很重要,比如字符类型进行修饰总让人很疑惑。

  • 类型称为转换类型更合适;
  • 长度 : 并非确切长度,它仅仅是修饰符,h代表短型,l代表长型,如果用ll虽然也可以,但目前很多编译器已经开始提示用其它替代方案;
  • [.精度] : 浮点型小数位数未指定精度时,隐含的精度为6位。如果是字符串,只取字符串中左端设置精度数 字符(n个字符,精度为n);
  • 输出最少宽度 : 如果实际长度低于设置,那么填充就起作用;
  • 标志的功能主要是是对齐填充补充 ,主要为左对齐(-) 、右对齐(省略既是右对齐,字符串类型可以用+)、 补充(#)、空格(若符号为正,则显示空格,负则显示"-")、填充(0);

类型

转换说明A备注转换说明B备注
%d或%i有符号十进制整数%u无符号十进制整数
%f浮点数(包括float和doulbe)%e(%E)浮点数[e-(E-)记数法]
%g(%G)浮点数不显无意义的零"0",甚至小数点
%c字符,实际上是int,可以用%d打印%s字符串
%x(%X)十六进制无符号整数%o八进制无符号整数
%a(%A)浮点数、十六进制数字和p-(P-)记数法(C99),p代表2,类似于e代表10
%p

指针

%%百分号自身输出

长度

  • h 代表short,一般用%hd
  • l 代表long,可以修饰%ld 、%lu、 %lf、%lo,修饰%lc,因为c存储的是int型,可以用l修饰,但权重自右向左,还是会输出字符,而不是数字。
  • ll 代表long long,目前很多编译器已经不太推荐用ll修饰了,他们有专业的推荐。
  • %zd专门为sizeof strlen() 等size_t 返回类型准备的格式。

精度

🍊 采用一段代码说明更实际

   //加上F防止隐性转化,因为代码风格中用小写字母l会被误认为数字1,所以统一采用大写的L、F
    float PI = 3.1415F;
    //先优先精度(.14)这就占了三位,在向左设置显示宽度,没有设置对齐方式,那么默认右侧对齐左侧填充,
    //左侧填充没有设置,那么填充空格,所以显示 □□3.14
    printf("%6.2f\n", PI);
    //设置为0会被四舍五入,显示3
    printf("%.0f\n", PI);

输出最少宽度

    //没有设置精度,位数不够左侧填充空格,如果设置为%05d则填充0,如果设置左对齐,也不可能右侧填充0
    //如果是字符串填充0是无效的,只填充空格
    printf("%5d \n", d);

标志

  • - : 左对齐
  • 省略既是右对齐,字符串可以用+
  • 0 : 填充0,只限于左侧填充
  • # : 对c,s,d,u类无影响;对o类,加前缀数字0;对x类,加前缀0x;对X类,加前缀0X;对e,g,f 类当结果有小数时才给出小数点。
  • 空格 : 若符号为正,则显示空格,负则显示"-"

👉👉👉 %#o,%#x这样使用是合理的,如果在e,g,f中使用#,没有设置精度,那么因为数据不同显示可长可短,所以基本作为补充前缀使用。
补充和填充是有区别的,# 并不是Excel中格式设置的那些作用。

到此这篇关于C语言printf()输出格式的文章就介绍到这了,更多相关C语言printf()输出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++如何实现简易扫雷游戏

    C++如何实现简易扫雷游戏

    这篇文章主要为大家详细介绍了C++如何实现简易扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C语言指针超详细讲解上篇

    C语言指针超详细讲解上篇

    指针提供了对地址操作的一种方法,因此,使用指针可使得 C 语言能够更高效地实现对计算机底层硬件的操作。另外,通过指针可以更便捷地操作数组。在一定意义上可以说,指针是 C 语言的精髓
    2022-04-04
  • 求子数组最大和的实例代码

    求子数组最大和的实例代码

    求子数组最大和的实例代码,需要的朋友可以参考一下
    2013-03-03
  • C语言详细分析讲解内存管理malloc realloc free calloc函数的使用

    C语言详细分析讲解内存管理malloc realloc free calloc函数的使用

    C语言内存管理相关的函数主要有realloc、calloc、malloc、free等,下面这篇文章主要给大家介绍了关于C语言内存管理realloc、calloc、malloc、free函数的相关资料,需要的朋友可以参考下
    2022-05-05
  • C++ Boost Chrono实现计时码表流程详解

    C++ Boost Chrono实现计时码表流程详解

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-11-11
  • C语言实现汉诺塔(图文详解)

    C语言实现汉诺塔(图文详解)

    个人觉得汉诺塔这个递归算法比电子老鼠的难了一些,不过一旦理解了也还是可以的,其实网上也有很多代码,可以直接参考。记得大一开始时就做过汉诺塔的习题,但是那时代码写得很长很长,也是不理解递归的结果。今天重新来实现一下
    2021-08-08
  • C语言实现页面置换算法(FIFO、LRU)

    C语言实现页面置换算法(FIFO、LRU)

    这篇文章主要介绍了通过C语言实现的两种页面置换算法:先进先出(FIFO)页面置换算法和最近最久未使用(LRU)页面置换算法。文中的代码具有一定的学习或工作价值,快来跟随小编学习一下吧
    2021-12-12
  • c++ 前自增/后自增操作符效率分析

    c++ 前自增/后自增操作符效率分析

    这篇文章主要介绍了c++ 前自增/后自增操作符效率分析,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下
    2021-01-01
  • C语言实现的循环单链表功能示例

    C语言实现的循环单链表功能示例

    这篇文章主要介绍了C语言实现的循环单链表功能,结合实例形式分析了基于C语言实现的循环单链表定义、创建、添加、删除、打印、排序等相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • Ubuntu18.04上安装Qt5.10的步骤实践

    Ubuntu18.04上安装Qt5.10的步骤实践

    Qt是一个跨平台的C++图形用户界面库,本文就介绍了Ubuntu18.04上安装Qt5.10的步骤实践,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论