Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
gdb では、
(gdb) p -2147483648 $28 = 2147483648 (gdb) pt -2147483648 type = unsigned int
-2147483648は type の範囲内にあるintのに、なぜ gdb はそれをunsigned int?
-2147483648
int
unsigned int
(gdb) pt -2147483647-1 type = int (gdb) p -2147483647-1 $27 = -2147483648
数字の値の型を設定した後、gdb が単項否定演算子を適用すると思われます。
ケース 1: gdb は型2147483648をオーバーフローして になる解析を行います。次に、否定を適用します。intunsigned int
2147483648
ケース 2:2147483647は有効intであり、その後に否定と減算が適用されたときに int のままになります。
2147483647