【发布时间】:2012-12-12 03:05:00
【问题描述】:
我现在知道了!这是负责'cout' 全部代码:
#include <iostream>
using namespace std;
int main()
{
int i = 3;
cout <<-i++<<endl<<i<<endl<<-(i++)<<endl<<i<<endl;
return 0;
}
我使用VC++6.0编译,输出为:-4 4 -3 3
但我使用 g++ 编译,输出为:-4 5 -3 5
为什么?我认为它们应该是相同的:-4 4 -4 4
PS:我试试:
int main()
{
int i = 3;
cout <<-i++<<endl;
return 0;
}
和
int main()
{
int i = 3;
cout <<-(i++)<<endl;
return 0;
}
我一一编译,结果是一样的:-3 3 思考所有答案,我可能以某种方式测试 -i++ 和 -(i++) 有错误
【问题讨论】:
-
能否重新格式化,以便我们看到完整的代码。
-
归结为评估顺序。看看这个:stackoverflow.com/questions/3181211/…
-
我是C++新手,没学过课
-
@GrinV 一个有用的like to you answer
-
@GrinV:虽然您的每个输出语句都取决于评估顺序,但您报告的实际结果是不切实际的。您发布的代码不可能产生您发布的输出。发布您运行的确切代码及其打印的确切输出。
标签: c++ language-lawyer