私がこれを行う場合、C++で:
__int64 var = LLONG_MIN;
__int64 var2 = -var;
cout << "var: "<< var << endl;
cout << "var2: "<< var2 << endl;
私が得る出力は次のとおりです。
var: -9223372036854775808
var2: -9223372036854775808
これをカバーする標準の部分は何ですか? 符号付き整数オーバーフローだと思います。これは g++ (GCC) 4.7.2 を使用してコンパイルされました。
私は減算関数を持っていて、加算関数を書いています
add( someobj &obj, long long num ) { subtract( obj, -num ); }
。LLONG_MIN がなければうまくいくと思います。