嵌套的printf在我的考试中

时间:2013-10-28 14:33:20

标签: c printf nested

我的考试中出现的确切代码段是:

int main()
{ 
  int n=234;
  printf("%d,",printf("%d",n));
}

根据编译代码时得到的结果,答案是:"2343," 为了解释,我问了我的朋友,他说最外面的printf()给出了数字中的位数...
真的吗?有人可以解释一下吗?

4 个答案:

答案 0 :(得分:4)

该代码与:

相同
int n=234;
int k = printf("%d",n);
printf("%d,",k);

如果您现在知道printf返回的内容,则可以轻松推断出此计划将打印出来的内容。

答案 1 :(得分:2)

如果成功,

printf将返回打印的字符数。 因此,在您的示例中,您在n变量中有一个由3位数组成的数字(如果打印则对应于3个字符),因此嵌套的printf将在打印出n后返回3。这将从外看印刷品上打印出来。 (more

答案 2 :(得分:1)

来自printf的联机帮助页(也可以说是http://linux.die.net/man/3/printf):

Return Value
   Upon successful return, these functions return the number of characters printed
   (excluding the null byte used to end output to strings).

因此,是的,这是真的。您可以随时调试代码以确保自己。

答案 3 :(得分:1)

是printf返回打印的字符数,例如参见

http://www.cplusplus.com/reference/cstdio/printf/

http://man7.org/linux/man-pages/man3/printf.3.html

所以在这种情况下,首先内部 printf n 的值打印到屏幕(234),然后返回3(= 3个字符),这是由外部 printf 打印。最后有一个逗号,所以最后打印的字符串是'2343,