Tôi đã thấy loại hình này unsigned
"không có chữ" đượ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ó loại signed
tương ứng. Dưới đây là một ví dụ:kiểu dữ liệu chưa được ký là gì?
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 ý tại một int unsigned 32-bit)
- nó có thể được sử dụng như một cách viết tắt cho đúc loại khác tới phiên bản chưa được ký:
signed long int i = -42;
printf("%u\n", (unsigned)i);
Đây có phải là ANSI C hay chỉ là phần mở rộng của trình biên dịch?
Có. 'unsigned' giống như' unsigned int' nhưng tôi đã thực hiện tìm kiếm trên _WG14/N1124 Ủy ban Dự thảo - ngày 6 tháng 5 năm 2005 ISO/IEC 9899: TC2_ cho 'unsigned' và không thể tìm thấy vị trí được xác định ... trích dẫn phần mà nó được xác định? – user454322