0

可能重复:
为什么将 printf 的结果传递给另一个 printf 工作?

我有一个代码片段..

printf("%d", printf("tim"));

函数 printf 打印值 tim3 .. 第二个 printf 语句没有说明符,那么为什么字符数与字符串 "tim" 一起打印?

当我只运行这段代码时..printf("tim");我得到输出,tim Exited: ExitFailure 3为什么会这样?

第一个 printf 语句在printf("tim")期望整数时如何作为参数?

4

2 回答 2

6

printf返回打印的字符数,因此printf("tim")返回 3,因为字符串中有 3 个字符。

第二个printf需要先评估,然后才能在格式字符串中使用它的值,因此首先打印它。

至于您的输出tim Exited: ExitFailure 3,这看起来更像是您在打印时遇到了另一个问题。注释掉这些行,您可能会在其他地方发现问题。

于 2012-10-03T08:44:03.383 回答
4

printf如果未指定格式说明符,则按原样打印字符串。所以将按原样printf("Hello");打印。Hello

您也可以通过使用格式说明符来做同样的事情 -printf("%s", "Hello");

printf还返回打印的字符数。所以printf("Hello");首先打印字符串Hello然后返回5

在您的声明中,您正在打印printf使用的返回声明printf("%d", ...);

实际上,您给出的声明可以这样写-

int i = printf("tim");
printf("%d", i);

至于失败,我猜你return printf("tim");main功能中有一个。

于 2012-10-03T08:59:24.633 回答