ความแตกต่างหลัก: ถ่านที่เซ็นชื่อและถ่านที่ไม่ได้ลงชื่อคือชนิดข้อมูลสองชนิดที่ใช้ในการเขียนโปรแกรม C อักขระที่ไม่ได้ลงชื่อและลงนามถูกใช้เพื่อจัดเก็บอักขระและประกอบด้วยพื้นที่ 8 บิต อักขระที่ไม่ได้ลงนามมีค่าระหว่าง 0 ถึง 255 ในขณะที่อักขระที่เซ็นชื่อมีค่าตั้งแต่ –128 ถึง 127 (บนเครื่องที่มี 8 บิตไบท์และส่วนเติมเต็มของเลขสองตัว)
C90 เปิดใช้งาน C เพื่อใช้คำหลักที่ลงนามและไม่ได้ลงนามกับถ่าน มันเป็นสิ่งสำคัญที่จะต้องทราบว่าพวกเขาจะใช้เฉพาะเมื่อค่าจำนวนเต็มขนาดเล็กจะได้รับการจัดการ ถ่านที่ได้รับการรับรองและถ่านที่ไม่ได้ลงชื่อนั้นมีทั้ง 8 บิตไบต์บนเครื่อง 16 บิต พวกเขาส่วนใหญ่แตกต่างกันในช่วงที่พวกเขาเป็นตัวแทน ช่วงของถ่านที่ไม่ได้ลงชื่อคือ 0 ถึง 255 ในขณะที่ขนาดของถ่านหรือถ่านที่ลงนามคือ -128 ถึง 127
การแปลงถ่านเป็นค่า int จะดำเนินการโดยอัตโนมัติโดย C อย่างไรก็ตามมันยังคงขึ้นอยู่กับเครื่องซึ่งตัดสินใจว่าผลลัพธ์จะเป็นลบหรือไม่ ตัวพิมพ์ใหญ่ A เทียบเท่ากับค่าจำนวนเต็ม 65
คำที่ไม่ได้ลงชื่อและลงนามใช้กับ char หมายความว่าหากเนื้อหาของแปดบิตเหล่านี้ถูกตีความเป็นจำนวนเต็มเงื่อนไขเหล่านี้สามารถสร้างความแตกต่างได้ ประเภทข้อมูลตัวละครมักเป็นประเภทที่ไม่ได้ลงชื่อโดยค่าเริ่มต้น อย่างไรก็ตามในโหมด C ++ และ ANSI C มีตัวเลือกในการประกาศอย่างชัดเจนว่าเป็นอักขระที่ลงชื่อหรือไม่ได้ลงนาม ใน char 8 บิตที่ไม่ได้ลงชื่อถูกใช้เป็น data bits ในขณะที่ในหน่วยความจำที่เป็นตัวแทนของ char 1 bit (บิตที่สำคัญที่สุด) จะใช้สำหรับบิตที่ลงชื่อและ 7 บิตจะถูกใช้เป็น data bits ถ้าบิตที่เซ็นชื่อเป็น 0 หมายความว่าหมายเลขนั้นเป็นค่าบวก ถ้าบิตที่เซ็นชื่อเป็น 1 ดังนั้นตัวเลขจะเป็นลบ
การเปรียบเทียบระหว่าง Char ที่ลงชื่อและ Char ที่ไม่ได้ลงชื่อ:
Char ลงชื่อ | Char ไม่ได้ลงนาม | |
พิสัย | -128 ถึง +127 | 0 ถึง 255 |
ความกว้างบิตทั่วไป | 1 ไบต์ | 1 ไบต์ |
ตัวอย่าง (x = 10000010) | ลงนามถ่าน x = -2 | ถ่านที่ไม่ได้ลงชื่อ = 82 |
การแสดง | 1 บิต = บิตที่เซ็นชื่อ 7 บิต = บิตข้อมูล | 8 บิต = บิตข้อมูล |
การประกาศ | ลงนามถ่าน b | ถ่านที่ไม่ได้ลงชื่อ |