私の計算では、境界に長い長い定数があります。数字が「misspreted」であるためにいくつかの条件が有効でないため、私はうまく動作しません 最初の出力は使用する数字です....出力では - 記号が削除されていることがわかりますあなたが見ることができるようにアンダーフローが、ときに私は0を追加し、その数はさらに高くなって、出力が正しい....C++ Visual Studio符号付き整数の振る舞い
について私はで、Visual Studioの2012
cout<<-2147483648<<endl;
cout<<-2147483649<<endl;
cout<<-21474836480<<endl;
cout<<-21474836490<<endl;
cout<<-214748364800<<endl;
cout<<-214748364900<<endl;
を使用しています最初の2行の符号が削除されます。
2147483648
2147483647
-21474836480
-21474836490
-214748364800
-214748364900
どんなアイデアでも問題は何ですか?
https://en.wikipedia.org/wiki/Integer_overflow – Boiethios
あなたの例でも、VS2012でコンパイルされません。 。次の2行のエラーメッセージで失敗します。「エラーC4146:単項マイナス演算子が符号なしタイプに適用され、結果が未署名です」。 –