C++ printf()

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

示例

#include <cstdio>

int main() {
  int age = 23;

// print a string literal printf("My age is ");
// print an int variable printf("%d", age);
return 0; } // Output: My age is 23

printf() 语法

printf() 的语法是

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

这里,

  • format 是要写入标准输出的字符串
  • ... 在上面的代码中表示你可以向 printf() 传递多个参数。

printf() 参数

printf() 函数接受以下参数

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

printf() 返回值

printf() 函数返回

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

printf() 原型

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

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

示例 1: C++ printf()

#include <cstdio>

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

// print string and int variable printf("num = %d \n", num);
// print string and char array printf("My name is %s", my_name);
return 0; }

输出

num = 5 
My name is Lincoln

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

printf("num = %d \n", num);
printf("My name is %s", my_name);

这里,

  • %d 在输出中被 num 变量替换
  • \n 是一个转义序列字符,用于打印新行
  • %smy_name C 字符串替换。

格式说明符

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

格式说明符包含以下部分

  • 一个前导的 % 符号
  • flags - 一个或多个修饰转换行为的标志 (可选)
    • - : 将结果左对齐到字段内。默认是右对齐。
    • + : 结果的符号会附加到值的前面,即使是正值。
    • space: 如果没有符号,则在结果前面附加一个空格。
    • # : 执行转换的替代形式。
    • 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;

// set precision to 3 decimal places printf("%.3f / %.3f = %.3f \n", a, b, a / b);
// set width to 5 digits with * printf("Setting width %*c \n", 5, ch);
// get octal value of an integer 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 - 打印 char 变量 ch (第三个参数),宽度未指定。
  • 宽度随后由第二个参数 5 指定。

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

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

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


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战