C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
сколько символов содержит переменная типа CHAR ?
Guest
  Отправлено: 30.05.2005, 20:39


Не зарегистрирован







Как определить сколько символов содержит переменная типа CHAR
** avtoritet
Отправлено: 31.05.2005, 02:42


Не зарегистрирован







Я поступаю так:

sizeof(переменная — 1);
AVC
Отправлено: 31.05.2005, 08:18


Ветеран

Группа: Модератор
Сообщений: 1583



Чем отличается "символ" от "CHAR"?
Konstantine
Отправлено: 31.05.2005, 09:50


Мастер участка

Группа: Модератор
Сообщений: 545



CHAR или char ? smile.gif
а вообще можно так: sizeof(CHAR)
** avtoritet
Отправлено: 31.05.2005, 11:33


Не зарегистрирован







to Константин:

sizeof(char) вернет тебе 1 байт как ни крути, так ты в этом случае получаешь размер типа.

char str[] = "12345";
sizeof(str) вернет 6 байтов(физический размер переменной), так как в конце еще есть знак окончания "строки", знак которого визуально не видно.

sizeof(str-1) вернет 5 байтов, и это буде длина строки, ведь каждый символ в char = 1 байт
Gedeon
Отправлено: 31.05.2005, 11:47


Ветеран

Группа: Модератор
Сообщений: 1742



Да, мы легких путей не ищем smile.gif

CODE

int i = strlen(str);
AVC
Отправлено: 31.05.2005, 12:50


Ветеран

Группа: Модератор
Сообщений: 1583



2** avtoritet
QUOTE (** avtoritet @ 31/05/2005, 10:33)

to Константин:

sizeof(char) вернет тебе 1 байт как ни крути, так ты в этом случае получаешь размер типа.

char str[] = "12345";
sizeof(str) вернет 6 байтов(физический размер переменной), так как в конце еще есть знак окончания "строки", знак которого визуально не видно.

а char str[] = {1,2,3,4};
sizeof(str) вернет 4, которые и были нужны.
Но речь то не о том.
Это размер массива с элементами типа char.
А Guest спрашивал:
- сколько символов содержит переменная типа CHAR
Ответ 1 — char это и есть символ (только по англицки) smile.gif
Konstantine
Отправлено: 31.05.2005, 15:37


Мастер участка

Группа: Модератор
Сообщений: 545



AVC — Я почти это и имел ввиду.
просто тип char — встроенный, а CHAR — предопределяемый, и может быть определён чему программеру удобно...
а в вопросе было именно CHAR , а его размер и узнаётся через sizeof(CHAR)
Boyko
Отправлено: 31.05.2005, 16:17


Станционный диспетчер

Группа: Участник
Сообщений: 88



Думаю что Guest уже знает ответ. biggrin.gif

Все таки он спрашивал и теперь знает
и
sizeof()
и
strlen()
и
Help
тоже у него. wink.gif
avc*
Отправлено: 31.05.2005, 16:31


Не зарегистрирован







2Konstantine
Вы безусловно правы.
Просто тип CHAR настолько рано определяется, что я решил не придавать значения разнице char и CHAR.
Георгий
Отправлено: 31.05.2005, 19:23


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



кстати, на некоторых платформах sizeof(char) = 2
timson
Отправлено: 01.06.2005, 08:28


Станционный диспетчер

Группа: Участник
Сообщений: 82



sizeof(WCHAR) == 2, када используется кодировка UNICODE, это видно в файлах *.dfm
Георгий
Отправлено: 01.06.2005, 09:13


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



не, это компиляторы под некоторые RISC процессоры так считают, где минимально адресуемыми являются не байты, а пары байт.
timson
Отправлено: 02.06.2005, 16:05


Станционный диспетчер

Группа: Участник
Сообщений: 82



Да, с железом тоже связано., но и с кодировкой тоже:
CODE
Wninnt.h:
...
typedef unsigned short WCHAR;    // wc,   16-bit UNICODE character
...

Там вроде один байт — кодировка, другой сообственно символ

Вернуться в Вопросы программирования в C++Builder