为了找出表达式“i++ + i++ + i++ + i++”发生了什么,我编写了一个如下的测试程序。
用 g++ 4.6.3 编译它并在 Ubuntu 12.04 下运行这个程序,结果是:
构造 3 构造 7 构造 12 建造 18 构造无值 为 18 调用 i++ 为 12 调用 i++ 为 7 调用 i++ 为 3 调用 i++ 呼叫 + 为 3 和 7 拨打 + 10 和 12 拨打 + 获取 22 和 18 i1++ + i2++ + i3++ + i4++ : 4 8 13 19 40 构造 3 为 3 调用 i++ 为 4 调用 i++ 为 5 调用 i++ 为 6 调用 i++ 呼叫 + 6 和 5 拨打 + 11 和 4 拨打 + 15 和 3 i++ + i++ + i++ + i++ : 7 18 × 7 × 12
通过使用我定义的类型的测试用例一和二的结果对比Int
,我预测测试用例三应该打印x 7 xx 18
,但它没有。
我的问题是如何解释结果?