コードにこれがあり、次の警告が発生しています。
long ans = ((long) INT_MIN) * 2 - 1;
私が得る警告は次のとおりです。
warning: integer overflow detected: op "*"
INT_MIN を使用できるように、limits.h を含めました。
#include <limits.h>
コードにこれがあり、次の警告が発生しています。
long ans = ((long) INT_MIN) * 2 - 1;
私が得る警告は次のとおりです。
warning: integer overflow detected: op "*"
INT_MIN を使用できるように、limits.h を含めました。
#include <limits.h>
これは、計算が の範囲をオーバーフローすることを意味しますlong。符号付きオーバーフローにより、未定義の動作が発生します。
longで表現できる値の範囲との値の間の唯一の相関関係は、として表現できるINT_MINことです。2 倍未満の 1 つが として表現できるという保証はありません。INT_MINlongINT_MINlong
Windows x86 では、Visual C++ コンパイラを使用すると、 と同じlong4 バイトintです。試すlong long