作者ccpz (OoOoOo)
看板TransCSI
标题Re: [问题] 补南部补习班二技模拟考..问题
时间Sat Apr 8 21:50:21 2006
※ 引述《j121780im (Wen)》之铭言:
: 我算出来答案是3 .
: 3.若int a=2,b=3 ; 则printf("%d%d%d%d",a++ , --b ; --a ; b++);的输出结果为?
: 1.2332
: 2.2323
: 3.3333
: 4.1313
: 5.以上皆非
: 我算出来是4.
这题觉得和 cmopiler 有关
因为参数传递是先 push 进 stack,函数中再一个个取出
而 stack 最後进的最先出
所以在函数中,要和你打的顺序一样的取出顺序
就要从最後一个开始 push
这样第一次 pop 时才是第一个
所以 b++ 先算,再来 --a ...
而最後结果是 4 没错
(这是我用 gcc 跑的结果)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.92.3
1F:→ j121780im:,跟; 有差吗?...XD 04/08 21:56
2F:→ ccpz:应该是打错吧, 用 ; 没办法编译 XD 04/08 22:12
3F:推 ileadu:我也是直接贴原po 打的才发现他打错.. 因为编译时发生错误 04/08 23:23
4F:→ j121780im:是考券打错..呵。辛苦你们了 04/09 08:46