C ++前后增量编译器行为

时间:2015-01-25 19:10:12

标签: c++

我使用前后增量运算符编写非常简单的c ++代码,我遇到了c ++编译器的这种神秘行为。任何人都可以解释在执行下面的每个打印声明时实际发生的事情......

代码

#include <iostream>

using namespace std;

int main()
{
    int i=5;
   cout <<i++<<endl;
   return 0;
}

上面给出的代码输出是:

5

现在我明白了,因为这是后期增量,i的值将在print语句后增加1!

现在让我们打印不同的东西!

#include <iostream>

using namespace std;

int main()
{
    int i=5;
   cout <<i++<<i--<<endl;
   return 0;
}

该计划的输出是......

45

现在我不明白为什么i的值在这里减少了,即使我没有递减它也使用了后增量操作!

现在,如果我编写与此相同的代码......

#include <iostream>

using namespace std;

int main()
{
    int i=5;
   cout <<i++<<i<<endl;
   return 0;
}

代码的输出是

56

这个输出是预期的,我可以理解这里真正发生了什么!

为了让事情变得更有趣,我最终在单个打印语句中尝试了所有前后增量操作,我只是惊讶于我获得的输出!

#include <iostream>

using namespace std;

int main()
{
    int i=5;
   cout <<i++<<i--<<++i<<--i<<i<<endl;
   return 0;
}

我获得的输出是

45555

所以请解释一下当我使用前后增量操作打印单个语句时会发生什么事情!

我不明白上面第二段代码中编译器的行为!为什么i的值减少到4!

0 个答案:

没有答案