Já vi esse unsigned
tipo "sem tipo" ser usado algumas vezes, mas nunca vi uma explicação para isso. Suponho que haja um signed
tipo correspondente . Aqui está um exemplo:
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;
}
O que reuni até agora:
- no meu sistema, sizeof(unsigned) = 4
(sugere um int não assinado de 32 bits)
- pode ser usado como uma abreviação para lançar outro tipo para a versão não assinada:
signed long int i = -42;
printf("%u\n", (unsigned)i);
É ANSI C ou apenas uma extensão do compilador?
long
em vez delong int
é muito comum, então não sei por que, emunsigned
vez deunsigned int
, não seria aceitável.