对于以下代码段:
int a=printf("made,%d,easy",printf("Lucknow"));
printf("%d",a);
我使用GCC编译器得到a的值为11,我没有得到这背后的逻辑,printf
返回屏幕上打印的字符数,因此它打印lucknowmade,7,easy
。因此,我们在屏幕上打印了18个字符,因此a的值应为18,为什么OP为11?
请简要解释一下。
答案 0 :(得分:4)
代码首先执行printf("Lucknow")
打印"勒克瑙"在屏幕上,将值7返回到第二个printf()
调用。第二个printf()
打印"制作,7,简单"并返回11,即它打印的字符数。它不知道或关心其他功能的作用。
答案 1 :(得分:1)
如您所述,printf
会返回打印的字符数。
printf("made,%d,easy",printf("Lucknow"))
返回11因为printf("Lucknow")
打印"勒克瑙"然后返回7,所以你最终会打印出#7; made,7,easy"这是11个字符。