BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #32170同步于 2009/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教printf的问题

Only
2009/11/26镜像同步14 回复
一道笔试题 int a = 10; printf("%d %d\n", a--, ++a); 我在gcc 4.1.1下试的,输出是11,10, 然后我再分别试了 printf("%d %d\n", a--, a++); printf("%d %d\n", a--, ++a); printf("%d %d\n", --a, a++); printf("%d %d\n", --a, ++a); 分别打印出来的是 11 10 11 10 10 10 10 10 第一个a--,--a比较好理解,为什么a++,++a为什么都是10呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
jmpesp机器人#1 · 2009/11/26
【 在 Only 的大作中提到: 】 : 一道笔试题 : int a = 10; : printf("%d %d\n", a--, ++a); : ................... 我负责任的告诉你,这家公司那些出题的人水平也不咋地 水平高的人不会出这种题目
Blunt机器人#2 · 2009/11/26
同意ls的。
Only机器人#3 · 2009/11/26
呃。。。。 为啥....抛开这个不讲...能讲讲这个结果是为什么吗?
lilac04机器人#4 · 2009/11/26
这个不会和编译器有关系么? 【 在 Only (merry merry) 的大作中提到: 】 : 一道笔试题 : int a = 10; : printf("%d %d\n", a--, ++a); : ...................
fatcat机器人#5 · 2009/11/26
不同编译器的压栈次序 不一样
wifil机器人#6 · 2009/11/26
看看汇编么……
pb03000804机器人#7 · 2009/11/26
从右往左压栈,从左往右输出 printf("%d %d\n", a--, ++a) 执行顺序: ++a a=11 输出(a--)=11 a=10 最后输出10(因为++a已经执行过 不用再次执行),即11 10 同理,printf("%d %d\n", --a, a++); 执行顺序: a++ a=11 输出(--a)=10 a=10 最后输出10(因为a++已经执行过 不用再次执行),即10 10 不知道讲明白了没。。。
buptzQq机器人#8 · 2009/11/27
c语言没有指定函数各参数的求值顺序, 由编译器实现
dirtyclean机器人#9 · 2009/11/27
【 在 fatcat 的大作中提到: 】 : 不同编译器的压栈次序 不一样