Widziałem ten unsigned
„bez typu” typ używany kilka razy, ale nigdy nie widziałem jego wyjaśnienia. Przypuszczam, że istnieje odpowiedni signed
typ. Oto przykład:
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;
}
Co zebrałem do tej pory:
- w moim systemie, sizeof(unsigned) = 4
(wskazówka na 32-bitowy int bez znaku)
- może być użyty jako skrót do rzutowania innego typu na wersję bez znaku:
signed long int i = -42;
printf("%u\n", (unsigned)i);
Czy to ANSI C, czy tylko rozszerzenie kompilatora?
long
zamiastlong int
jest bardzo powszechne, więc nie jestem pewien, dlaczegounsigned
zamiast tegounsigned int
byłoby to nie do przyjęcia.