|
10 / 9 / 1
Регистрация: 25.12.2019
Сообщений: 335
|
||||||
Зачем нужны перечисления в С++?19.02.2020, 17:08. Показов 5984. Ответов 56
Метки нет (Все метки)
int main(братья)
Снова зову коллективный разум! Дошел в книжке до перечислений и не пойму зачем они вообще нужны, когда есть массивы и структуры (ну может еще что-то о чем я пока не подозреваю) Вот код из книги который я немного переделал и результат получил тот же:
Да, я только учусь и много где могу быть не прав, это новая предметная область для меня! В книгах все это обясняется, но до меня не доходит практическое применение Здесь на форуме тоже читал темы, не могу понять зачем они, в чем их преимущество...
0
|
||||||
| 19.02.2020, 17:08 | |
|
Ответы с готовыми решениями:
56
Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить?
|
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
||||||||||||||||
| 19.02.2020, 17:18 | ||||||||||||||||
Сообщение было отмечено R_U_S_V как решение
Решение
ну смотри, без них бы ты писал что то вроде
автоматическая генерация уникальных айдишников или описаний для характеристик объекта: добавляя в enum элемент ты не паришься о его нумерации, ты знаешь точно что все что в enum - уникально, если конечно сам не перезаписал значение.
группирование и именование типа констант вместе по каким либо критериям удобнее использовать COLOR color; чем непонятный int.
1
|
||||||||||||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 19.02.2020, 17:23 | |
|
Ну например у вас элемент mon имеет значение 1. Если где то в коде написать 1 то не понятно что это... 1 литр, 1кг или может 1 доллар?
вместо этого можно написать mon, и сразу понятно что речь идёт про первый день недели - понедельник. Используя enum вы сгруппировали все дни недели в одном перечислении что так же удобно для восприятия данных внутри кода. Так же enum имеет возможность ввести тип перечисления. Так, например можно создать тип enum day_of_week {...}. Этому типу будут соответствовать все значения этого перечисления
1
|
|
|
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
|
|
| 19.02.2020, 17:29 | |
|
Чистой воды символизм, который позволяет уйти от т.н. "магических чисел", сделать код более удобочитаемым и удобопонимаемым.
2
|
|
|
Комп_Оратор)
|
||
| 19.02.2020, 17:51 | ||
|
1
|
||
|
10 / 9 / 1
Регистрация: 25.12.2019
Сообщений: 335
|
|
| 19.02.2020, 17:51 [ТС] | |
|
Спасибо!
Про удобство понял.. То есть получается, что самое существенное отличие перечислений от массмива в том, что мы можем переопределять нумерацию?
0
|
|
|
Just Do It!
|
|||||||
| 19.02.2020, 17:56 | |||||||
|
некоторые штуки в крестах создавались именно для того, чтобы кодер мог пейсать код в 3kk строчек и если его вдруг задавит дорожный каток, то другой прогер мог без затруднений продолжить его дело. Можно ваще выкинуть из крестов все тамошние фичи и пейсать код в машинном виде. Но это будет значит только то, что тот, кто так сделал просто пошёл мимо опушки нискось лесом. иллюстрация одного важного прибамбаса enum:
1
|
|||||||
|
10 / 9 / 1
Регистрация: 25.12.2019
Сообщений: 335
|
||||||
| 19.02.2020, 17:59 [ТС] | ||||||
|
Чето я в этом форуме вообще не понимаю, как писать!
А как тогда можно обратиться к конкретному слову в списке перечисления?
Вот cout << sotrudniki[0];
0
|
||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 19.02.2020, 18:02 | |
|
R_U_S_V,
Мы не к слову обращаемся не путайте перечисления и массивы. Напишите cout << mon; и получите 1 в ответ. То есть эти слова нужны не для того что бы делать так: cout << enum[0]. Иначе это был бы массив строк а не enum
1
|
|
|
Комп_Оратор)
|
|||||||
| 19.02.2020, 18:09 | |||||||
![]() /не проверял (но идея - главное) /
1
|
|||||||
|
10 / 9 / 1
Регистрация: 25.12.2019
Сообщений: 335
|
|||||||||||
| 19.02.2020, 18:13 [ТС] | |||||||||||
|
Я просто видимо не способен понять
Вот код который не работает: Тут задача сделать так, чтобы при вводе первой буквы слова, выводилось само слово!
В итоге я все это сделал на массивах, поскольку не пойму эти перечисления
0
|
|||||||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||||||||||
| 19.02.2020, 18:26 | ||||||||||||
|
R_U_S_V,
В решении этой задачи особой пользы от использования перечислений не будет ![]() Вот так можно было решить без массивов и перечислений:
2
|
||||||||||||
|
Комп_Оратор)
|
||||||
| 19.02.2020, 18:28 | ||||||
2
|
||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 19.02.2020, 18:30 | |
|
1
|
|
|
10 / 9 / 1
Регистрация: 25.12.2019
Сообщений: 335
|
|
| 19.02.2020, 18:32 [ТС] | |
|
Я забыл упомянуть , что до упаду сидел со структурами, до этого, ... второй раз пытался понять и понял только то, что это "хлебная крошка" , то есть моя переменная приобретает кучу иерархических "родителей" которые усложняют код (по моему дилетантскому мнению) и не более того, что она напрочь меня запутывает откуда берется переменная и во что она перевоплощается! Вот видимо такой я чеоловек((( Мне проще было бы обычными переменными пользоваться ведь в среде они подсвечиваются все сразу!
0
|
|
|
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
|
||||||
| 19.02.2020, 18:40 | ||||||
|
R_U_S_V, перечисления создают удобства не на уровне времени исполнения, а на уровне написания и понимания кода. Вот еще пример использования, который часто-густо можно встретить при программировании, например, оконных приложений, когда приходится работать с большим количеством всяких атрибутов.
3
|
||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 19.02.2020, 18:48 | ||
|
2
|
||
|
10 / 9 / 1
Регистрация: 25.12.2019
Сообщений: 335
|
|
| 19.02.2020, 18:51 [ТС] | |
|
IGPIGP
не знаю как тут на форуме ответить с цитатой! поэтому только так! Вы знаете мне вообще не понятно в чем прикол. Мы создаем группу из дней недели - sun, mon, tue, wed, thu, fri, sat Саму группу называем - days_of_week (дни недели) дням недели автоматически присваиваем числовой идентификатор - от нуля и дальше ... Дальше создаем 2 переменные - day1, day2 пользователького типа - days_of_week days_of_week day1, day2; Присваиваем этим переменным идентификаторы от переменных - mon && thu day1 = mon; day2 = thu; то есть теперь day1 = 1 day2 = 4 И производим какую-то арифметику Мне столько человек уже ответило СПАСИБО!!!! я до сих пор не пойму нахрена так усложнять и вводить переменные посредники. Ведь можо оперироватиь и самими - sun, mon, tue, wed, thu, fri, sat они же у меня в перечислении есть, я же вижу что-они кто они... Вообще странно, массивы - понял вопросов зачем нужны нет, функции начал изучать, тоже крутая штука сокращает код, вопросов нет, ту тут же блин вообще засада! Я внимательно изучаю ветку Ваших ответов, надеюсь дойдет!!!!
0
|
|
|
Комп_Оратор)
|
||||||||
| 19.02.2020, 19:05 | ||||||||
1
|
||||||||
|
10 / 9 / 1
Регистрация: 25.12.2019
Сообщений: 335
|
||
| 19.02.2020, 19:12 [ТС] | ||
|
0
|
||
| 19.02.2020, 19:12 | |
|
Помогаю со студенческими работами здесь
20
Зачем нужны классы?
Зачем нужны классы? Зачем нужны итераторы?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|