printf没有说明符

时间:2012-10-03 08:41:45

标签: c printf

  

可能重复:
  Why does passing the result of printf to another printf work?

我有一个代码段..

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

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

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

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

2 个答案:

答案 0 :(得分:5)

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

第二个printf需要在其值可以在格式字符串中使用之前进行评估,因此首先打印它。

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

答案 1 :(得分: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