C++ Вопрос Тип Char

Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
228
Реакции[?]
20
Поинты[?]
4K
только не бейте. объясните петухонисту че за этот ваш char, зачем он нужен, если есть string и int, в чем его преимущества и т.д. вот нигде не могу найти, чтоб нормально обьяснили.
 
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
228
Реакции[?]
20
Поинты[?]
4K
в отличии от стрингов он занимает всего лишь 1 байт памяти против 8
ну так а в чем он тогда уступает? в нем можно сколько угодно символов хранить, по типу "авыфавыавыфавыаваывапргыфвпрывфрпгрпгврпыгфрпгвргпыфргпргпвргфырг"?
 
40, 40, 40 blackout XD
Участник
Статус
Оффлайн
Регистрация
15 Янв 2020
Сообщения
456
Реакции[?]
228
Поинты[?]
24K
"авыфавыавыфавыаваывапргыфвпрывфрпгрпгврпыгфрпгвргпыфргпргпвргфырг"?
Попробуй объявить такой char, увидишь че будет

Char всегда заключен в одинарную ковычку ex :
char c = 'c';

Char всегда 1 байт
 
Последнее редактирование:
godsystem
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2022
Сообщения
283
Реакции[?]
45
Поинты[?]
1K
char тебе нужен чтобы работать с отдельными символами
 
I Want to Die in New Orleans
Участник
Статус
Оффлайн
Регистрация
10 Окт 2020
Сообщения
506
Реакции[?]
491
Поинты[?]
80K
сам по себе char не предназначен для работы со "строками", сравнивать его с std::string как минимум глупо, так как char это примитивный тип, в то время как std::string - объект

1 - char = однобайтовое представление
2 - char предназначен для хранения одиночных ascii символов в одиночных ковычках
3 - нет никакого смысла сравнивать char с int`ом и так далее. разные типы данных существуют для разных нужд.

ты можешь записать сколько хочешь символов в std::string потому что он создаёт строку и выделяет ей память динамически, в хипе, в то время как создав статический массив char`ов, ты выделишь память в стеке, это не одно и то же.
 
Участник
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
405
Реакции[?]
198
Поинты[?]
9K
В общем и целом annihilatorq полностью прав. Могу разве что немного дополнить, что согласно стандартам языков C и C++, char гарантированно занимает один байт, что делает его минимальной ячейкой адресации. И частенько бывает, что unsigned char используют как число размером 1 байт, ведь на уровне железа не бывает символов, всё является нулями и единицами, и всё зависит от того, как ты обрабатываешь эти данные.
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
695
Реакции[?]
328
Поинты[?]
12K
Попробуй объявить такой char, увидишь че будет


char c = 'c';
Сможешь написать больше одного символа в одинарные кавычки :seemsgood:
Компилятор не будет ругаться если ты в одинарные кавычки засунешь больше 1 символа, это всего лишь явная пометка что тип данных на выходе будет равняться символьному литералу ( ЧАРУ ) , следовательно он считает на этапе компиляции только последний символ записанный тобой
 
Последнее редактирование:
40, 40, 40 blackout XD
Участник
Статус
Оффлайн
Регистрация
15 Янв 2020
Сообщения
456
Реакции[?]
228
Поинты[?]
24K
Компилятор не будет ругаться если ты в одинарные кавычки засунешь больше 1 символа, это всего лишь явная пометка что тип данных на выходе будет равняться символьному литералу ( ЧАРУ ) , следовательно он считает на этапе компиляции только последний символ записанный тобой
1700827223722.png
спасибо за лекцию))
 
Участник
Статус
Оффлайн
Регистрация
23 Апр 2022
Сообщения
695
Реакции[?]
328
Поинты[?]
12K
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
че за этот ваш char, зачем он нужен, если есть string и int
Плюсы это строготипизированный язык, поэтому для начала необходимо знать типы данных.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Вкратце, char зачастую используют для описания одного символа из ascii таблицы, т.е. одну букву латинского алфавита.
int как и char является знаковым целочисленным типом, но может хранить гораздо большее число, его используют просто для вычислений.
std::string же это готовый контейнер с памятью, который юзают для хранения строки, под капотом он как раз выделяет массив из char.
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,570
Реакции[?]
593
Поинты[?]
32K
Сверху Снизу