荒谬的输出。提供不同的输出和无调试。需要专家干预

时间:2017-12-03 17:07:05

标签: c++

所以这就是问题所在。 查找以下代码的输出。 在c ++中执行

#include<iostream>
 using namespace std;
 int main()
 {
 int i=2;
 cout<<i++<<i<<i++<<i;
 cout<<i;
 }

此概念基于后期/预增量运算符。基于这个概念,我预测输出为23344.就像我预期的那样,当我尝试调试这段代码时它是正确的。但没有调试我得到输出为34244。 这甚至可能吗?顺便说一下,我在Dev-C ++ 5.11上试过这个。谢谢:))

1 个答案:

答案 0 :(得分:0)

您的构造会调用未定义的行为。

请参阅Undefined behavior in c/c++: i++ + ++i vs ++i + i++Why are these constructs (using ++) undefined behavior?

 #include<iostream>

 using namespace std;
 int main()
 {
 int i=2;

 //cout<<i++<<i<<i++<<i; // UB! 

  cout<<i++; 
  cout<<i;
  cout<<i++;
  cout<<i;

  return 0;
}