我发现一个问题,在互联网这样的,有一个ç程序,它喜欢 -
为什么printf()打印这样的东西?
int main(){
int a = 123;
printf("%d", printf("%d",a));
return 0;
}
我在代码块运行这个程序,并找到导致。
我的问题是,为什么printf()的行为是这样的?
我发现一个问题,在互联网这样的,有一个ç程序,它喜欢 -
为什么printf()打印这样的东西?
int main(){
int a = 123;
printf("%d", printf("%d",a));
return 0;
}
我在代码块运行这个程序,并找到导致。
我的问题是,为什么printf()的行为是这样的?
参见printf
是返回int
的函数。其中int
是印数characters
。
这是一个printf
原型
int printf(const char *restrict format, ...)
按照您的程序:
printf("%d", printf("%d",a));
printf("%d",a)
其中a
为123
,所以它打印123
并返回3
和printf("%d", printf("%d",a));
成为printf("%d",3);
所以,冲印3
单独
所以你的输出是:
1233
打破它,理解它。 printf函数的返回值 成功时,是成功写入的字符总数。
printf("%d",a)
成功写入3个字符,然后返回值作为第二个参数被传递到原始呼叫作为一个参数被评估
printf("%d", 3);
二printf
被传递,然后其结果被传递在所述外printf
。
printf总是返回字符数。由于a = 123意味着3个字符,所以输出即为1233.您将从这个例子中理解。
int main(){
int a = 123;
int b=printf("%d",a);
printf("\n%d", b);
return 0;
}
好奇:你期望打印什么? – chux
我没想到什么。我只是在代码块中运行代码并找出这样的输出。所以我很好奇,为什么? @chux –