Как переменная типа unsigned int может хранить отрицательное значение?
Когда я попробовал приведенный ниже фрагмент кода, его печать -1 в качестве вывода. Но как unsigned int хранит -1?
код:
unsigned int a = -1;
printf("a = %d \n",a)
Выход: -1
Как это возможно?
примечание: я видел подобный вопрос в stackru. Это другое. Мой вопрос, почему он напечатал -1 в качестве вывода, даже если "а" без знака.
1 ответ
Решение
%d
спецификатор рассказывает printf
, "Интерпретировать это значение как целое число со знаком". Даже если a
имеет значение 0xFFFFFFFF
(4,294,967,296), когда интерпретируется как значение со знаком, оно будет отображаться как -1.