Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我不熟悉这种printf()语句。为什么我的输出看起来像这样?谢谢_C - Fatal编程技术网

C 我不熟悉这种printf()语句。为什么我的输出看起来像这样?谢谢

C 我不熟悉这种printf()语句。为什么我的输出看起来像这样?谢谢,c,C,嵌套printf的用途是什么?我使用了43号值,但其他值如何 在输出中显示 输出: 43211 您正在打印的返回值,因为第一次打印正确 printf不像scanf系列函数那样返回输入的项数。它返回实际的字符数。printf返回一个int值,因此,如果串联printf命令,第一个值是要打印的数字,其他值是printf指令的结果,如果成功,则返回打印字符数,即使它们是回车符或新行,因此不可见 就你而言: 43第一个数字 3 printf int结果 等等 将此视为代码的更简单版本: #include

嵌套printf的用途是什么?我使用了43号值,但其他值如何 在输出中显示

输出:

43211


您正在打印的返回值,因为第一次打印正确

printf不像scanf系列函数那样返回输入的项数。它返回实际的字符数。

printf返回一个int值,因此,如果串联printf命令,第一个值是要打印的数字,其他值是printf指令的结果,如果成功,则返回打印字符数,即使它们是回车符或新行,因此不可见

就你而言: 43第一个数字 3 printf int结果 等等
将此视为代码的更简单版本:

#include <stdio.h>       
     int main()
     {
          int i=43;
          printf("%d",printf("%d",printf("%d",printf("%d",i))));
          return 0;            
     }    
很清楚为什么43是印刷品。对于其他数字,它们是printf的返回值:

成功时,返回写入的字符总数

所以,考虑到这是你的确切代码,你应该得到的是:43211

43是第一个印刷品 2是在“4”+“3”之前打印的位数 1是在“2”之前打印的位数 1是在“1”之前打印的位数
printf的返回值是打印字符数

让我们分析一下发生了什么

int main(){
    int i = 43;
    int a = printf("%d", i);
    int b = printf("%d", a);
    int c = printf("%d", b);
    printf("%d", c);
    return 0;
}
最里面的printf%d,i明显地打印43,因为我是43

下一个外部printf%d,printf%d,i打印2,因为上一个printf的输出长度是2长度43

因此,到目前为止,输出为:

432

下一个外部printf将打印1,因为上一个printf的输出长度是1的长度,即1

因此,到目前为止,输出为:

4321

外部printf将再次打印1,因为上一个printf的输出长度是1的长度,即1

因此,最终输出为:

43211

printf的返回值是打印字符数。这种printf嵌套调用的使用只是为了演示或娱乐。这样做没有真正的好处。
printf("%d",printf("%d",printf("%d",printf("%d",i))));