Linuxer
人生的乐趣有多种:爱、享受、冒险等等,还有发现和创造。能享受后两种乐趣的人并不多。做事应该带着发现的心态而不是争强好胜的心态。

导航

 
int i = 3;
int ans = (++i)+(++i)+(++i);

 

ans等于多少?我想大多数同学都会和我一样的认为: ans = 4 + 5 + 6 = 15.

 

而实际结果呢?

 

- Linux下用gcc编译的结果是16.

- Windows下用VC编译,debug模式的结果是16, Release模式的结果是18.

- VS 2010中不管是Debug模式或是Release模式,结果都是18.

 

这都是编译器优化的结果,导致结果不确定。

所以我们应该避免在一行代码中重复出现被递增(递减)的变量。

posted on 2014-10-22 15:43  JollyWing  阅读(554)  评论(2编辑  收藏  举报