ฉันเคยเห็นunsigned
ประเภท "ไร้ประเภท" นี้มาแล้วสองสามครั้ง แต่ไม่เคยเห็นคำอธิบาย ฉันคิดว่ามีsigned
ประเภทที่เกี่ยวข้อง นี่คือตัวอย่าง:
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;
}
สิ่งที่ฉันรวบรวมมาจนถึงตอนนี้:
- ในระบบของฉันsizeof(unsigned) = 4
(บอกใบ้ int ที่ไม่ได้ลงนาม 32 บิต)
- อาจใช้เป็นชวเลขในการแคสต์ประเภทอื่นไปยังเวอร์ชันที่ไม่ได้ลงชื่อ:
signed long int i = -42;
printf("%u\n", (unsigned)i);
นี่คือ ANSI C หรือเป็นเพียงส่วนขยายของคอมไพเลอร์?
long
แทนที่จะlong int
เป็นเรื่องธรรมดามากดังนั้นฉันไม่แน่ใจว่าทำไมunsigned
แทนที่จะunsigned int
เป็นที่ยอมรับไม่ได้