发信人: 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]
标 题: 一些表达式
发信站: 饮水思源 (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]
http://bbs.sjtu.edu.cn/bbstcon?board=C&reid=1317487745
No comments:
Post a Comment