我考试中出现的确切代码片段是:
int main()
{
int n=234;
printf("%d,",printf("%d",n));
}
根据我在编译代码时得到的答案是:"2343,"
对于我问我朋友的解释,他说最外面printf()
的数字给出了数字中的位数......
这是真的吗?有人可以解释吗?
该代码与以下代码相同:
int n=234;
int k = printf("%d",n);
printf("%d,",k);
如果您现在知道printf返回的内容,您可以轻松推断该程序将打印出什么内容。
printf
如果成功,则返回打印的字符数。因此,在您的示例中,n
变量 a numbe 由 3 位数字组成(如果打印,则对应于 3 个字符),因此嵌套的 printf 将在打印后返回 3 n
。这将从外部打印中打印出来。(更多)
从 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).
因此,是的,这是真的。您可以随时调试代码以确保自己。
是 printf 返回打印的字符数,例如
http://www.cplusplus.com/reference/cstdio/printf/
http://man7.org/linux/man-pages/man3/printf.3.html
所以在这种情况下,首先内部printf将n的值打印到屏幕(234),然后返回 3(=三个字符),然后由外部printf打印。末尾有一个逗号,所以最后打印出来的字符串是 '2343,'