c, почему это печатает отрицательное число?

Используйте станд.:: вектор:: зарезервируйте () метод. Это не изменит размеры вектора, но это выделит место.

6
задан user105033 29 September 2009 в 13:09
поделиться

4 ответа

Формат % d является целым числом со знаком (десятичным). Целые числа хранятся с использованием дополнения до двух , что означает, что старший бит (8000 0000) указывает, так сказать, знак значения.

Отсчет от 3 до значений:

0000 0003 = 3
0000 0002 = 2
0000 0001 = 1
0000 0000 = 0
FFFF FFFF = -1
FFFF FFFE = -2

и т. Д.

Если вы хотите, чтобы FFFF FFFF отображался как большое положительное число, используйте формат % u (без знака).

30
ответ дан 8 December 2019 в 02:11
поделиться

Аргумент «% d» печатает ввод как целое число со знаком. В результате вы обнаружили представление дополнения до двух , вместо этого рассмотрите "% u".

8
ответ дан 8 December 2019 в 02:11
поделиться

Значения, которые вы упомянули, представляют собой два дополнительных представления -1 и -2

Найдите два дополнения

4
ответ дан 8 December 2019 в 02:11
поделиться

Первый бит целого числа со знаком является знаком, поэтому наибольшее число, которое может быть сохранено, равно 0xEFFFFFFF.

3
ответ дан 8 December 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: