Флейм
GameDev.ru / Флейм / Форум / char - зачем? (4 стр)

char - зачем? (4 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
kiparУчастникwww11 июля 201815:28#45
Panzerschrek[CN]
это я отвечал на то что хранить кириллицу нельзя.

Так то я согласен что символьный тип и числовой должны быть разными. Но в случае с utf-8 получается тип разного размера, а utf-32 уж очень нишевая.

KartonagnickЗабаненwww11 июля 201815:37#46
Panzerschrek[CN]
> Проблема только в том, что "char" теряет свою семантику. Вместо типа, хранящего
> символы, он является типом, хранящим байты utf-8 строк.

ну и что? проблема то в чем?
тебе же хранить, а не парсить.

FordPerfectПостоялецwww11 июля 201819:14#47
> арифметические операции
производятся как-раз таки не над char.
sizeof('a')!=sizeof('a'+'b')
DelfigamerПостоялецwww11 июля 201819:59#48
Kartonagnick
> то есть, код рабочий, но так делать нельзя?
> чо за бред?
А, ты ещё не в курсе?
Delfigamer
> Си и плюсы опасны тем, что на них даже неправильные программы могут иногда
> работать. Поэтому, для обучения - когда целью стоит понять, что отличает плохую
> программу от хорошей - Си подходит очень плохо.
MrShoorУчастникwww11 июля 201819:59#49
kipar
> Логично иметь отдельный символьный тип для символов, потому что символы -
> определенно не числа.
Вот только в С нет типа byte. И char там используется чтобы хранить числа. А еще эпичности добавляет то, что неизвестно знаковый это тип или нет (хотя зачастую знаковый), и чтобы поиметь байт 0..255 нужно писать unsigned char
DelfigamerПостоялецwww11 июля 201820:01#50
Panzerschrek[CN]
> Проблема только в том, что "char" теряет свою семантику. Вместо типа, хранящего
> символы, он является типом, хранящим байты utf-8 строк. В кроестах это ещё и
> тип, над которым зачем-то можно ещё и арифметические операции проводить.
>
> Меня бы больше устроил тип с несколько другим именем и без возможности
> арифметических операций.
Щито поделать, раньше это экономило память, а сейчас нужна обратная совместимость.

О, придумал. Можно сделать

enum class byte: char;

Правка: 11 июля 2018 20:03

kiparУчастникwww11 июля 201820:22#51
Delfigamer
Неплохо. Будет вполне в стиле крестов - для символов используйте byte, для чисел - char. Почему так а не наоборот - ну, исторически сложилось, да это и к лучшему, только выиграли. И вообще char не используйте, он встроенный но как бы устарел, используйте uint8_t.

Правка: 11 июля 2018 20:27

FordPerfectПостоялецwww11 июля 201820:30#52
Delfigamer
kipar
MrShoor
https://en.cppreference.com/w/cpp/types/byte
Всем радоваться полчаса.
MrShoorУчастникwww11 июля 201820:33#53
FordPerfect
1. Это не С
2. Это библиотечный тип
3. Since C++17
kiparУчастникwww11 июля 201820:36#54
MrShoor
главное что он и не символьный и не число, т.е. третья сущность - набор бит.
MrShoorУчастникwww11 июля 201820:51#55
kipar
> т.е. третья сущность - набор бит.
Ну так я и раньше мог тайпдефнуть себе "новый тип". Прикол в том, что на уровне языка нет такой элементарной вещи, как byte
FordPerfectПостоялецwww11 июля 201821:23#56
MrShoor
> 2. Это библиотечный тип
std::size_t вон тоже библиотечный, хотя его возвращает встроенный sizeof.
Вот такой вот core language.

> 3. Since C++17
Ну так, вас услышали (for some value of 'вас'). Ещё год назад.

Но это плюсы, не спорю.

DelfigamerПостоялецwww11 июля 201822:55#57
FordPerfect
> https://en.cppreference.com/w/cpp/types/byte
> Всем радоваться полчаса.
A byte is only a collection of bits, and the only operators defined for it are the bitwise ones.

Делали-делали, да и недоделали.
Ну и да, C++17 в 2018-м пока что жирноват, мелкие вон до сих пор ещё C++14 не доосилили.

MrShoor
> Прикол в том, что на уровне языка нет такой элементарной вещи, как byte
Зачем вклинивать в язык то, что можно реализовать стандартной библиотекой?

MrShoor
> 1. Это не С
> 2. Это библиотечный тип
Ты так говоришь, будто это что-то плохое.

MrShoor

typedef struct { unsigned char value; } byte;
Вот, держи - это си, это тип не из библиотеки и он работает даже на дремучем C89. Идеальный же вариант.

Правка: 11 июля 2018 23:46

ZefickЗабаненwww12 июля 20187:47#58
122
> > #include
> Ясно, очередной чей-то велосипед.
  Ты и православным STL тоже не пользуешься, потому что "чей-то велосипед"?

> А стандарт работает без библиотек, тому же int'у ведь не нужны библиотеки.
  Если бы ты хоть раз открывал стандарт, про который говоришь, то уже в оглавлении увидел бы, что там описывается в том числе и так называемая стандартная библиотека.

KartonagnickЗабаненwww12 июля 201811:57#59
Delfigamer
> А, ты ещё не в курсе?
оно работает. но оно - не правильное. а почему неправильное я не скажу.
ясно.
Страницы: 1 2 3 4 5 6 7 Следующая »

/ Форум / Флейм / Программирование

2001—2018 © GameDev.ru — Разработка игр