发信人: lbl(lbl), 信区: C
标 题: 一些表达式
发信站: 饮水思源 (2011年10月02日00:49:25 星期天), 站内信件

(1)
x = 1;
y = (x++) * (x++) // y = 1; 为什么不是 2 = 1 * 2?

(2)
x = 1;
y = (x++) * (++x) // y = 4 = 2 * 2?

(3)
x = 1;
y = (++x) * (++x) // y = 9 = 3 * 3? 为什么不是 2 * 3;

(4)
x = 1;
y = (++x) * (++x) * (++x) // y = 36 = 3 * 3 * 4?

上面都是在GCC下编译,运行得到的结果。用VC,(4)好像不同。
就是想弄清楚一下编译器到底怎么来解析这些表达式的。

有碰到过同样问题的吗?
--

※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 2001:da8:8000:e191:9459:e4a6:8eaf:89cf]