printf("%d", printf("%d", printf("%d", 12))); ubuntu 上输出结果是:1221
网上查了资料,printf()函数参数是从后往左入栈,打印时再出栈。 但是输出 1221 不能理解,求指导。
1
takeoffyoung 2018-10-17 16:54:55 +08:00
int a = printf("%d", 12);
int b = printf("%d", a); printf("%d", b) |
2
Yggdroot 2018-10-17 16:55:56 +08:00 3
首先你要搞清楚 printf ()的返回值是什么。
|
3
980502757 OP |
4
opiviqo 2018-10-17 17:32:50 +08:00 via Android
返回长度
|
5
visitant 2018-10-17 18:49:06 +08:00 via iPhone
printf 的可变长度参数,我记得有一个宏专门负责这个来着
|
6
GeruzoniAnsasu 2018-10-17 18:52:03 +08:00
|
7
visitant 2018-10-17 19:00:20 +08:00 via iPhone
@GeruzoniAnsasu 我是想回复楼主说的那个入栈的那句话,以前还研究过 printf 的可变参数 手动狗头
|
8
wevsty 2018-10-17 19:47:30 +08:00
入栈顺序是没有标准的,可以从前往后,也可以从后往前,这取决于编译器怎么处理。
|