ฉันเคยเห็น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เป็นที่ยอมรับไม่ได้