可能重复:
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")
作为参数?
答案 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
。