2017-12-03 9 views
-11

ここに質問があります。 次のコードの出力を探します。 は、この概念は、ポスト/前インクリメント演算子に基づいており、C++不合理な出力。デバッグを使用して、異なる出力を提供します。専門家の介入が必要

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

で行います。このコンセプトに基づいて私は23344として出力を予測しました。私はこのコードをデバッグしようとしたときに正しいと思いました。しかし、デバッグをしないと出力が34244になってしまいます。 これも可能ですか? BTW私はDev-C++ 5.11でこれを試しました。ありがとう:)

+1

を参照してください[お聞きしていない何](https://stackoverflow.com/tags/c%2b%2b/info)してくださいを参照してください。 – user0042

+1

['using namespace std;'は悪い習慣です(https://stackoverflow.com/q/1452721/2176813)、決して使用しないでください。 – tambre

+0

人を抱きしめる。私はちょうど答えが23344が正しいか34244が正しいかどうかを知る必要があります。それで全部です。 –

答えて

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; 
} 
+0

私はそのコードを追加したかったが、それは無関係だと感じました。私もそれを試したが、私はそれを試して、別の出力を与え、また、デバッグもしなかった。今のところ、他の専門家のように、私はそれが未定義の挙動によるものだと言いました。しかし、もう一度助けてくれてありがとう。 –

関連する問題