作者dbzgtgwduo (迪欧麦斯威尔)
看板C_and_CPP
标题[问题] printf 传相同变数运算的问题???
时间Sun Jul 23 23:33:09 2006
这个是我今天才知道的,一般人写程式不会这麽写吧!
但是研究所都考这种特别不同的......,题目如下
==============================
int i = 0;
printf( "%d %d %d %d", ++i, ++i, ++i, i-- );
==============================
老师说要从後面算回来,所以最後一个 i-- 先算
再来算倒数第二个 ++i,依此类推,所以答案是 2 1 0 0
想请问一下为什麽要从最後算回来?不是要印出字串的时候读到 %d
会往後面找第一个变数来印,再来是第二个……
因为这跟我的直觉想法不一样,所以想要问一下原因
不然太久了会忘记,谢谢。
--
▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁╴╴╴╴▃▃
▕█████████████████████████▅
o ∥
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▃▔▔▔▅▅
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.81.229.204
1F:推 ledia:想先请问老师是哪一位 :p 07/23 23:34
2F:推 ckclark:置底文第九条 这个应该是compiler dependent 07/23 23:33
3F:推 dbzgtgwduo:我是去补习看到的。 07/23 23:47
4F:→ dbzgtgwduo:老师是......不能说。 07/23 23:47
5F:→ dbzgtgwduo:这个应该不是置底文第九条的,因为这个可以算出来 07/23 23:48
6F:→ dbzgtgwduo:有正确答案,跟 Compiler 没有关系。 07/23 23:48
7F:推 cole945:只确定从後面开始丢(push)但不一定从後面开始运算呀.. 07/24 00:11
8F:推 cole945:c99标准6.5.2.2 Function calls 第10点 07/24 00:29
9F:→ cole945:c++03标准 5.2.2 Function call 第8点 07/24 00:29
10F:→ cole945:都说在function call时, 运算的顺序没有明定.. 07/24 00:30
11F:推 PRAM:这题目不必看,原因很简单,你必须指定限制条件,否则无解 07/24 00:45
12F:推 drkkimo:这种是烂题目了 十诫有解说~ 07/24 02:38
13F:推 drkkimo:我觉得会不会和参数推入堆叠的顺序有关 有Pascal和其他 07/24 02:40
14F:推 drkkimo:各种 07/24 02:41
15F:推 drkkimo:但那好像是OS相关而和语言无关@@?? 07/24 02:42
16F:推 UNARYvvv:看一下置底第九条的 C++ 错误范例 07/24 10:55
17F:→ UNARYvvv:cout<<i 实际上可是 operator<<(cout,i) 喔 07/24 10:56
18F:→ UNARYvvv:再想想这里情况是否和第九条真的无关 07/24 10:56
19F:→ UNARYvvv:function call 的参数运算顺序,原先是没有硬性规定的 07/24 10:58
20F:→ UNARYvvv:你说这个可算出来,是因为那位老师已经限定从後面算回来.. 07/24 10:59
21F:推 rephansu:vc.net也是从後面算回来,只是++i或--i都是回传最後的i 07/24 13:07
22F:推 abcdefghi:研究所考这种题目的,建议不要去念,浪费两年时间,学一些 07/24 21:45
23F:→ abcdefghi:错误观念,还不如早点出社会历练.... 07/24 21:47
24F:→ abcdefghi:多花点时间看OS,计组,资结,离散,线代这些教科书比较实际 07/24 21:48
25F:推 dbzgtgwduo:嗯!楼上的中肯,跟我想的一样,你说的这些科目都是 07/25 01:00
26F:→ dbzgtgwduo:台大研究所要考的,正在准备中。 07/25 01:00