【发布时间】:2013-07-30 01:24:59
【问题描述】:
为了找出表达式“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,但它没有。
我的问题是如何解释结果?
【问题讨论】:
-
这是未定义的行为。不要在这里寻找任何逻辑不会有。
-
请将代码发布为格式化文本,而不是图像,以便回答者可以将其复制到自己的环境中进行使用。
标签: c++ evaluation binary-operators