Sự khác biệt chính: char đã ký và char không dấu là hai loại dữ liệu được sử dụng trong lập trình C. Cả char không dấu và có chữ ký được sử dụng để lưu trữ các ký tự và bao gồm một vùng gồm 8 bit. Các ký tự không được ký có các giá trị trong khoảng từ 0 đến 255, trong khi các ký tự được ký có các giá trị từ dòng128 đến 127 (trên máy có 8 bit byte và số học bổ sung của hai số).
C90 cho phép C sử dụng các từ khóa được ký và không dấu bằng char. Điều quan trọng cần lưu ý là chúng chỉ được sử dụng khi các giá trị nguyên nhỏ được xử lý. Đã ký char và char không dấu là cả hai byte 8 bit trên máy 16 bit. Họ chủ yếu khác nhau trong phạm vi đại diện bởi họ. Phạm vi của char không dấu là 0 đến 255, trong khi kích thước của char hoặc char đã ký là -128 đến 127.
Việc chuyển đổi char thành giá trị int được thực hiện tự động bởi C. Tuy nhiên, nó vẫn phụ thuộc vào máy quyết định rằng kết quả có âm hay không. Chữ in hoa A tương đương với giá trị nguyên là 65.
Các thuật ngữ không dấu và ký được sử dụng với char có nghĩa là nếu nội dung của tám bit này được hiểu thành một số nguyên thì các thuật ngữ này có thể tạo ra một số khác biệt. Kiểu dữ liệu ký tự thường là kiểu không dấu theo mặc định. Tuy nhiên, trong chế độ C ++ và ANSI C, có một tùy chọn để khai báo rõ ràng chúng là char đã ký hoặc không dấu. Trong char 8 bit không dấu được sử dụng làm bit dữ liệu, trong khi đó, biểu diễn bộ nhớ của char 1 bit đã ký (bit quan trọng nhất) được sử dụng cho bit đã ký và 7 bit được sử dụng làm bit dữ liệu. Nếu bit đã ký là 0 thì có nghĩa là số đó dương. Nếu bit đã ký là 1 thì số âm.
So sánh giữa Char đã ký và Char chưa ký:
Đã ký Char | Char chưa ký | |
Phạm vi | -128 đến +127 | 0 đến 255 |
Chiều rộng bit điển hình | 1 byte | 1 byte |
Ví dụ (x = 10000010) | Đã ký char x = -2 | Chưa ký char = 82 |
Đại diện | 1 bit = bit đã ký 7 bit = bit dữ liệu | 8 bit = bit dữ liệu |
Tờ khai | Đã ký char b | Chưa ký char |