Я видел, как этот unsigned
«бестиповый» тип использовался пару раз, но никогда не видел ему объяснения. Полагаю, есть соответствующий signed
тип. Вот пример:
static unsigned long next = 1;
/* RAND_MAX assumed to be 32767 */
int myrand(void) {
next = next * 1103515245 + 12345;
return((unsigned)(next/65536) % 32768);
}
void mysrand(unsigned seed) {
next = seed;
}
Что я собрал до сих пор:
- в моей системе sizeof(unsigned) = 4
(намекает на 32-битное целое число без знака)
- это может использоваться как сокращение для приведения другого типа к неподписанной версии:
signed long int i = -42;
printf("%u\n", (unsigned)i);
Это ANSI C или просто расширение компилятора?
long
вместоlong int
очень распространено, поэтому я не уверен, почемуunsigned
вместо этогоunsigned int
было бы неприемлемо.в C
unsigned
- это ярлык дляunsigned int
.У вас тоже
long
есть ярлык дляlong int
И также можно объявить a
unsigned long
(это будет aunsigned long int
).Это в стандарте ANSI
источник
unsigned
то же самое,unsigned int
но я сделал поиск по WG14 / N1124 комитета проекта - 6 мая 2005 ISO / IEC 9899: TC2 для такunsigned
и не смог найти , где определяется ... Вы могли бы процитировать ту часть , где она определяется?В C и C ++
unsigned = unsigned int (Integer type) signed = signed int (Integer type)
Целое число без знака, содержащее n битов, может иметь значение от 0 до (2 ^ n-1), что составляет 2 ^ n разных значений.
Целое число без знака может быть положительным или нулевым.
Целые числа со знаком хранятся в компьютере с использованием дополнения до 2.
источник
Согласно C17 6.7.2 §2:
Таким образом , в случае
unsigned int
мы можем либо писатьunsigned
илиunsigned int
, или , если мы чувствуем себя с ума,int unsigned
. Последнее, поскольку стандарт достаточно глуп, чтобы разрешить «... могут встречаться в любом порядке, возможно, смешанные». Это известный недостаток языка.Правильный код C использует
unsigned int
.источник
Приведу свой ответ из другого вопроса .
Из спецификации C , раздел 6.7.2:
Это означает, что
unsigned
, если не указан тип, по умолчанию будет использоватьсяunsigned int
. Так писатьunsigned a
то же самое, что иunsigned int a
.источник