Хорошо, я знаю, что этот вопрос может показаться странным, но все же я хотел его демистифицировать.
1.) Тип int
в C может хранить число в диапазоне от -2147483648 до 2147483647.
2.) Если мы добавим unsigned
перед ним, диапазон станет от 0 до 2147483647.
3.) Дело в том, почему мы вообще пытаемся использовать ключевое слово unsigned
, когда приведенный ниже код действительно может работать.
Код:
#include <stdio.h>
int main(void)
{
int num = 2147483650;
printf("%u\n" , num);
return 0;
}
4.) Как вы видите, я все еще могу распечатать целое число как тип без знака, если я использую спецификатор %u
, и он выведет мне значение 2147483650
.
5.) Даже если я создам другой целочисленный тип со значением 50
и суммирую его с num
, хотя это переполнение, но я все равно могу распечатать правильное значение суммы с помощью спецификатора %u
. Так почему unsigned
ключевое слово по-прежнему необходимо ??
Спасибо, что потратили время на чтение моего вопроса.