Я перехожу к C++ Primer 5th Edition и сейчас выполняю подписанный/неподписанный раздел. Быстрый вопрос у меня есть, когда есть наматывается вокруг, скажем, в этом блоке кода:Оберните вокруг диапазона unsigned int в C++?
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.
Полезный совет: диапазон подписанного числа бит-бит 2-го разряда [- (2^(b-1)), (2^(b-1)) - 1]. Обратите внимание, что это не симметрично около 0. – wjl
Как вы думаете, '0u - 1' должно быть? –
'UINT_MAX' гарантированно будет * не менее *' 65535'. Обычно это '4294967295' в большинстве современных реализаций. –