C语言---printf函数使用详细说明

文章目录

  • [1. 类型符(Type Specifiers)------ 必选](#1. 类型符(Type Specifiers)—— 必选)
  • [2. 标志(Flags)------ 可选](#2. 标志(Flags)—— 可选)
  • [3. 最小宽度(Width)------ 可选](#3. 最小宽度(Width)—— 可选)
  • [4. 精度(.Precision)------ 可选](#4. 精度(.Precision)—— 可选)
  • [5. 长度修饰符(Length)------ 可选](#5. 长度修饰符(Length)—— 可选)
  • 代码示例

printf 函数的格式控制字符串是 C 语言中最强大也最复杂的工具之一。其完整语法格式为:
%[标志][最小宽度][.精度][长度修饰符]类型符

1. 类型符(Type Specifiers)------ 必选

决定了数据以何种形式呈现。

类型符 描述 示例
%d / %i 有符号十进制整数 123
%u 无符号十进制整数 123
%o 无符号八进制整数 173
%x / %X 无符号十六进制整数(小写/大写) 7b / 7B
%f 十进制浮点数(默认 6 位小数) 3.141593
%e / %E 科学计数法(小写/大写) 3.14e+00
%g / %G 自动选择 %f 或 %e 中较短的一种 -
%c 单个字符 'A'
%s 字符串 "Hello"
%p 指针地址(十六进制) 0x7ffe...
%% 输出一个百分号 % %

2. 标志(Flags)------ 可选

用于微调输出的外观。

标志 描述
- 左对齐(默认是右对齐)。
+ 显示正负号。正数前加 +,负数前加 -。
空格 正数前加空格,负数前加 -(与 + 冲突时 + 优先)。
# 特殊转换:%o 前加 0,%x 前加 0x;对于浮点数,强制显示小数点。
0 零填充:在宽度范围内用 0 代替空格填充(通常用于数字)。

3. 最小宽度(Width)------ 可选

指定输出内容占用的最小字符数。

如果实际内容长度小于宽度,则根据对齐方式填充空格或 0。

如果实际内容长度大于宽度,则按实际长度输出(不会截断)。

动态宽度:可以使用 *,由后面的参数指定。例如 printf("%*d", 5, 10); 等同于 %5d。

4. 精度(.Precision)------ 可选

以点号 . 开头,后跟数字。

对于整数:表示输出的最少数字位数。不足则补 0(如 %.3d 输出 001)。

对于浮点数:表示小数点后的位数(四舍五入)。

对于字符串:表示输出的最大字符数(超过则截断)。

动态精度:同样可以使用 *。例如 printf("%.*f", 2, 3.1415);。

5. 长度修饰符(Length)------ 可选

用于指定数据类型的具体长度(如 long 或 short)。

修饰符 描述 示例
h 短整型 (short) %hd
l 长整型 (long) 或 宽字符 %ld, %lf
ll 长度更长的整型 (long long) %lld
L 长双精度浮点型 (long double) %Lf

代码示例

bash 复制代码
#include <stdio.h>

int main() {
    int num = 42;
    double pi = 3.14159265;
    char *str = "Hello World";

    // 1. 宽度与对齐
    printf("|%10d|\n", num);    // 右对齐,宽度10
    printf("|%-10d|\n", num);   // 左对齐,宽度10
    printf("|%010d|\n", num);   // 补零,宽度10

    // 2. 精度控制
    printf("%.2f\n", pi);       // 保留2位小数: 3.14
    printf("%.5s\n", str);      // 只输出前5个字符: Hello

    // 3. 进制与符号
    printf("%+d\n", num);       // 强制显示正号: +42
    printf("%#x\n", num);       // 显示十六进制前缀: 0x2a

    // 4. 动态参数
    printf("%*.*f\n", 8, 3, pi); // 宽度8,精度3: "   3.142"

    return 0;
}
相关推荐
2301_7657031421 小时前
C++中的职责链模式实战
开发语言·c++·算法
f狐0狸x21 小时前
【C++修炼之路】C++ list容器基本用法详解
开发语言·c++·list
坚持就完事了21 小时前
Java的OOP
java·开发语言
jllllyuz21 小时前
基于MATLAB的锂电池物理对象建模实现
开发语言·matlab
MyBFuture21 小时前
C#数组详解:一维二维与交错数组
开发语言·windows·c#·visual studio·vision pro
程序 代码狂人21 小时前
CentOS7初始化配置操作
linux·运维·开发语言·php
从此不归路21 小时前
Qt5 进阶【13】桌面 Qt 项目架构设计:从 MVC/MVVM 到模块划分
开发语言·c++·qt·架构·mvc
zhangx1234_21 小时前
C语言 数据在内存中的存储
c语言·开发语言
星空露珠21 小时前
速算24点检测生成核心lua
开发语言·数据库·算法·游戏·lua
老蒋每日coding21 小时前
Python3基础练习题详解,从入门到熟练的 50 个实例(一)
开发语言·python