char, unsigned char и AnsiString

Существует несколько способов конвертировать целое число в класс AnsiString. Обычно для этого используется функция IntToStr. Но класс AnsiString умеет конвертировать числа «на лету» при сложении строки с числом. Правда здесь нужно быть осторожным. Рассмотрим небольшой пример:

AnsiString str = "a = ";
unsigned char a = 53;
str += a;

В результате его работы в переменной str окажется строка «a = 53». Обратите внимание: мы не вызываем функцию IntToStr. Класс AnsiString сам конвертирует число в строку. Теперь взглянем на пример ниже:

AnsiString str = "a = ";
char a = 53;
str += a;

Мы изменили тип переменной a с unsigned char на char. Что это меняет? Оказывается очень много. Теперь в переменной str оказывается не «a = 53», а «a = 5». Почему? Дело в том, что тип char интерпретируется не как число 53, а как ASCII символ с кодом 53. А это символ ‘5’.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *