Как переменная типа 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.

Другие вопросы по тегам