为了找出表达式“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,但它没有。
我的问题是如何解释结果?