Що таке unsigned char проти signed char?
2024Тип unsigned char може зберігати лише невід’ємні цілі значення, він має мінімальний діапазон від 0 до 127, як визначено стандартом C. Тип signed char може зберігати негативні, нульові та позитивні цілі значення. Він має мінімальний діапазон від -127 до 127, як визначено стандартом C. 15 грудня 2020 р.
Символи (зі знаком) зберігають один байт пам’яті. Значення, яке зберігається в цьому байті, може коливатися від -128 до 127. Беззнакові символи також зберігають один байт, але оскільки він беззнаковий, можливий діапазон значень від 0 до 255.
Використовуйте char, коли ви маєте справу з символами ASCII. Використовуйте unsigned char, коли ви маєте справу з двійковими даними (скажімо, вміст бінарного файлу або растрового зображення). Примітка: тип символу без прикрас у C може бути або беззнаковим, це залежить від компілятора.
Уявіть тип даних char просто як однобайтове ціле число. Ігноруйте той факт, що ви зберігаєте там коди ASCII, і лише в числовому вигляді. Звичайний старий char (або знак char) може містити ціле число зі знаком від -128 до +127. Беззнаковий char може містити беззнакове ціле число від 0 до 255.
Тип char відрізняється від знакового char і unsigned char , і ці три типи несумісні. З метою розрізнення перевантажених функцій C++ char є відмінним типом від signed char і unsigned char.
Ціле число зі знаком — це 32-розрядний даний, який кодує ціле число в діапазоні [-2147483648 до 2147483647]. Беззнакове ціле число — це 32-розрядний даний, який кодує невід’ємне ціле число в діапазоні від [0 до 4294967295]. Ціле число зі знаком представлено у вигляді доповнення до двох.
Якщо ви хочете зберегти від’ємні значення в змінній типу char , ви обов’язково повинні оголосити його як signed char, оскільки лише тоді ви можете бути впевнені, що кожна платформа зможе зберігати там від’ємні значення.