Tôi đã thấy kiểu unsigned
"không đánh máy" này được sử dụng một vài lần, nhưng chưa bao giờ thấy giải thích cho nó. Tôi cho rằng có một signed
loại tương ứng . Đây là một ví dụ:
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;
}
Những gì tôi đã thu thập được cho đến nay:
- trên hệ thống của tôi, sizeof(unsigned) = 4
(gợi ý về số int 32-bit không dấu)
- nó có thể được sử dụng như một cách viết tắt để truyền một kiểu khác sang phiên bản không dấu:
signed long int i = -42;
printf("%u\n", (unsigned)i);
Đây là ANSI C, hay chỉ là một phần mở rộng của trình biên dịch?
long
thay vìlong int
rất phổ biến nên tôi không chắc tại saounsigned
thay vìunsigned int
sẽ không được chấp nhận.