返回信息流一道笔试题
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呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #32170同步于 2009/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请教printf的问题
Only
2009/11/26镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 Only 的大作中提到: 】
: 一道笔试题
: int a = 10;
: printf("%d %d\n", a--, ++a);
: ...................
我负责任的告诉你,这家公司那些出题的人水平也不咋地
水平高的人不会出这种题目
这个不会和编译器有关系么?
【 在 Only (merry merry) 的大作中提到: 】
: 一道笔试题
: int a = 10;
: printf("%d %d\n", a--, ++a);
: ...................
从右往左压栈,从左往右输出
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
不知道讲明白了没。。。