Ho visto questo unsignedtipo "senza tipo" usato un paio di volte, ma non ho mai visto una spiegazione per questo. Suppongo che ci sia un signedtipo corrispondente . Ecco un esempio:
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;
}
Quello che ho raccolto finora:
- sul mio sistema, sizeof(unsigned) = 4(suggerisce un int senza segno a 32 bit)
- potrebbe essere usato come scorciatoia per lanciare un altro tipo nella versione non firmata:
signed long int i = -42;
printf("%u\n", (unsigned)i);
È ANSI C o solo un'estensione del compilatore?
longinvece dilong intè molto comune quindi non sono sicuro del motivo per cuiunsignedinvece diunsigned intnon sarebbe accettabile.