私の会社のstdint.h
ヘッダーには次のように書かれています。
#define INT64_MIN -9223372036854775808LL
しかし、私のプロジェクトの一部のコードでは、プログラマーが次のように書いています。
#undef INT64_MIN
#define INT64_MIN (-9223372036854775807LL -1)
次に、この定義をコードで使用します。
プロジェクトは警告/エラーなしでコンパイルされます。
彼の定義を削除してデフォルトのものを使用しようとしたところ、次のようになりました。
error: integer constant is so large that it is unsigned
2 つの定義は同じように見えます。
1 つが正常にコンパイルされ、もう 1 つが失敗するのはなぜですか?