我正在瀏覽C++ Primer 5th Edition,目前正在執行簽名/未簽名部分。一個簡單的問題我已經是當有環繞,也就是說,在這個代碼塊:回顧C++中unsigned int的範圍?
unsigned u = 10;
int i = -42;
std::cout << i + i << std::endl; // prints -84
std::cout << u + i << std::endl; // if 32-bit ints, prints 4294967264
我認爲最大範圍爲4294967295與0被計數,所以我想知道爲什麼包裝在這個問題上似乎是從4294967296完成的。
有用的提示:有符號b位2的補碼數的範圍是[ - (2 ^(b-1)),(2 ^(b-1)) - 1]。請注意,這不是對稱的。 – wjl 2015-04-03 04:33:10
你認爲'0u - 1'應該是什麼? – 2015-04-03 04:37:07
'UINT_MAX'保證*至少*'65535'。在大多數現代實現中,它通常是'4294967295'。 – 2015-04-03 04:38:20