我无法理解以下代码如何给出不同的输出
#include <stdio.h>
int main()
{
int i=43;
printf("%d\n",printf("%d",printf("%d",i)));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出: 4321
printf("%d\n",printf("%d",printf("%d ",i)));
Run Code Online (Sandbox Code Playgroud)
输出: 43 31
printf("%d\n",printf("%d ",printf("%d ",i)));
Run Code Online (Sandbox Code Playgroud)
输出: 43 3 2
printf("%d\n",printf("%d ",printf(" %d ",i)));
Run Code Online (Sandbox Code Playgroud)
产量 43 4 2
printf("%d\n",printf(" %d ",printf(" %d ",i)));
Run Code Online (Sandbox Code Playgroud)
输出: 43 4 3
和其他变化也给出了其他产出.
如何只是一个空格改变一个数字.
提前致谢.
printf 返回打印的字符数
在您的情况下,该语句可以像这样打破 - 输出是预期的:
printf("%d\n", // 1
printf("%d", // 2
printf("%d",i) // 43
)
); // 4321
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅标准fprintf(与流的printf特殊情况)fprintfstdout
7.21.6.1 fprintf函数
#include <stdio.h>
int fprintf(FILE * restrict stream,
const char * restrict format, ...);
Run Code Online (Sandbox Code Playgroud)
fprintf函数返回传输的字符数,如果发生输出或编码错误,则返回负值.