2

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

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

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

4

4 回答 4

4

该代码与以下代码相同:

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

如果您现在知道printf返回的内容,您可以轻松推断该程序将打印出什么内容。

于 2013-10-28T14:37:42.577 回答
2

printf如果成功,则返回打印的字符数。因此,在您的示例中,n变量 a numbe 由 3 位数字组成(如果打印,则对应于 3 个字符),因此嵌套的 printf 将在打印后返回 3 n。这将从外部打印中打印出来。(更多

于 2013-10-28T14:37:10.170 回答
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).

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

于 2013-10-28T14:38:20.580 回答
1

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

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

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

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

于 2013-10-28T14:39:45.733 回答