跳到主要内容

C++ printf() 函数

C++ 中的 printf() 函数用于将格式化字符串写入标准输出(stdout)。它定义在 cstdio 头文件中。

示例

#include <cstdio>

int main() {
int age = 23;

// 打印字符串字面量
printf("我的年龄是 ");

// 打印 int 类型变量
printf("%d", age);

return 0;
}

// 输出:我的年龄是 23

printf() 语法

printf() 的语法是:

printf(const char* format, ...);

其中,

  • format 是要写入标准输出的字符串
  • ... 表示你可以传递多个参数给 printf()

printf() 参数

printf() 函数接受以下参数:

  • format - 指向以 null 结尾的字符串(C 字符串)的指针,该字符串被写入 stdout。它由字符组成,还包含以 % 开始的可选格式说明符。
  • ... - 指定要打印数据的其他附加参数。它们按照格式说明符的顺序出现。

printf() 返回值

printf() 函数返回:

  • 成功时 - 写入的字符数
  • 失败时 - 负值

printf() 函数原型

printf() 函数在 cstdio 头文件中的原型是:

int printf(const char* format, ... );

示例 1:C++ printf()

#include <cstdio>

int main() {
int num = 5;
char my_name[] = "Lincoln";

// 打印字符串和 int 变量
printf("num = %d \n", num);

// 打印字符串和字符数组
printf("我的名字是 %s", my_name);

return 0;
}

输出

num = 5
我的名字是 Lincoln

在这个程序中,我们使用 printf() 函数来打印整数 num 和 C 字符串 my_name

printf("num = %d \n", num);
printf("我的名字是 %s", my_name);

这里,

  • %d 被替换为输出中的 num 变量
  • \n 是一个 转义序列 字符,用于打印新行
  • %s 被替换为 my_name C 字符串。## 格式说明符

printf() 函数的 format 参数可以包含以 % 开始的格式说明符。这些说明符会被随后格式字符串后面相应变量的值所替换。

格式说明符包含以下部分:

  • 一个前导的 % 符号
  • flags - 一个或多个修改转换行为的标志(可选)
    • -:在字段内左对齐结果。默认情况下是右对齐。
    • +:结果的符号附加在值的开头,即使对于正结果也是如此。
    • 空格:如果没有符号,结果开头会附加一个空格。
    • #:执行转换的另一种形式。
    • 0:用于整数和浮点数。用前导零而不是空格填充数字。

width - 一个可选的 * 或整数值,用于指定最小宽度字段。 precision - 一个可选字段,由 . 后跟 * 或整数或无以指定精度。 length - 一个可选的长度修饰符,用于指定参数的大小。 specifier - 转换格式说明符。

printf() 格式说明符原型

printf() 的格式说明符的一般原型是:

%[flags][width][.precision][length]specifier

常用格式说明符

下表列出了一些常用的格式说明符:

格式说明符描述
%一个 % 后跟另一个 % 字符会在屏幕上打印 %
c写入单个字符
s写入字符字符串
di将有符号整数转换为十进制表示
o将无符号整数转换为八进制表示
Xx将无符号整数转换为十六进制表示
u将无符号整数转换为十进制表示
Ff将浮点数转换为十进制表示
Ee将浮点数转换为十进制指数表示法
Aa将浮点数转换为十六进制指数表示法
Gg将浮点数转换为十进制或十进制指数表示法
n- 返回到目前为止写入的字符数- 结果写入通过参数指向的值- 参数必须是指向 signed int 的指针
p写入定义指针的实现定义字符序列

示例 2:C++ 中 printf() 的更多示例

#include <cstdio>

int main() {
char ch = 'a';
float a = 5.0, b = 3.0;
int num = 10;

// 将精度设置为 3 个小数位
printf("%.3f / %.3f = %.3f \n", a, b, a / b);

// 将宽度设置为 5 位数,使用 *
printf("Setting width %*c \n", 5, ch);

// 获取整数的八进制值
printf("Octal equivalent of %d is %o", num, num);

return 0;
}

输出

5.000 / 3.000 = 1.667
Setting width a
Octal equivalent of 10 is 12

在这个程序中,我们使用了 printf() 函数三次。

1. 在第一个 **printf()** 函数中:

  • %.3f - 将 float 变量的精度设置为 3 个

小数位。

  • 第一个 %.3f 被第二个参数 a 的值所替换。
  • 第二个 %.3f 被第三个参数 b 的值所替换。
  • 最后一个 %.3f 被第四个参数 a / b 的值所替换。

2. 在第二个 **printf()** 函数中:

  • %*c - 以未指定宽度打印字符变量 ch(第三个参数)。
  • 宽度后来被第二个参数 5 指定为五位数。

3. 在第三个 **printf()** 函数中:

  • %d - 以十进制数系统打印 int 变量 num 的值
  • %o - 以八进制数系统打印 int 变量 num 的值

此外,转义字符 \n 打印一个新行。