Уроки C++ с нуля / Урок #13 - Перечисления (Enum)

Поделиться
HTML-код
  • Опубликовано: 16 дек 2024

Комментарии • 121

  • @MrGangsterGaming
    @MrGangsterGaming 7 лет назад +201

    Сегодня мы поговорим про перечисления. Что же такое перечисление? Это Enumeration, или Enum. Что такое Enum? Это перечисления. Всем спасибо, урок окончен.

    • @Slavasil
      @Slavasil 6 лет назад +13

      он комментатор, такой же как и ты

  • @viacheslavmartyniuk5400
    @viacheslavmartyniuk5400 3 года назад +2

    Отличный урок, в принцыпе как и все у тебя.
    Всё доходчиво и просто.
    Спасибо большое.

  • @ДаниилСилантьев-о5ы

    Спасибо! На этажах гораздо понятнее!

  • @Timediamond-r7t
    @Timediamond-r7t 4 года назад +1

    спасибо!)твои уроки огонь!все ясно и понятно,если запоминать инфу с прошлых уроков)

  • @AngrySerezha
    @AngrySerezha 2 года назад

    пример суперский
    да и свич с использованием перечислений открылся в новом свете, даже не знал что его можно так использовать. наверняка в джаве тоже можно так описать свич, будет на много удобнее, чем перебирать все значения для кейсов

  • @it-learner5701
    @it-learner5701 4 года назад

    Спасибо!Спасибо!Спасибо!Спасибо!

  • @АндрейПоляков-о1в
    @АндрейПоляков-о1в 7 лет назад +2

    Спасибо за уроки)

  • @Dreamcatcher_Lvl_
    @Dreamcatcher_Lvl_ 3 года назад +3

    10:24 -что напишем на дефолт?
    -вы сломали лифт!

  • @Иван-у4с9н
    @Иван-у4с9н 5 лет назад +2

    Если что в плюсах переменная по умолчанию равна указателю, а не null. Иначе у тебя бы всё работало, null принимается как false. Как и нулевой указатель nullptr.

  • @GTAVME-j5r
    @GTAVME-j5r 9 месяцев назад

    Спасибо

  • @АндрейЛенин-п2у
    @АндрейЛенин-п2у 2 года назад +1

    можно было бы на примере создания меню для lcd показать

  • @higher_intelligence_
    @higher_intelligence_ 4 года назад

    Супер

  • @Vitya952
    @Vitya952 7 лет назад +9

    Пример для енамов с деревьями не очень) Можно было массив создать, а так хорошие уроки, спасибо)

  • @soulthier
    @soulthier 4 года назад

    Так листаю что не знаю врубаю вообще топ

  • @Mdwed
    @Mdwed 4 года назад +2

    Подойдёт ли для перечисления параметров, например: здоровье, броня, снаряды и тд?

    • @ИгорьК-т1ш
      @ИгорьК-т1ш 4 года назад

      да норм

    • @AlexanderSemenko
      @AlexanderSemenko 4 года назад

      enum отлично подходит для перечислений (собственно, он для этого и предназначен). Однако, параметры лучше указывать отдельными переменными, т.к. они могут иметь разный тип. Например, здоровье - как целое число, броня - как тип (указанный в своём перечислении), снаряды, кстати, могут быть разного вида и для них вообще можно иметь массив объектов (со своим типом, количеством и прочими параметрами).

  • @Босхет-э5о
    @Босхет-э5о 4 года назад +1

    Наверное, стоило этот урок рассказать после ООП
    Енамы удобно использовать, когда одинаковые переменные по смыслу и значению встречаются в разных классах

    • @AlexanderSemenko
      @AlexanderSemenko 4 года назад

      Перечисления позволяют сгруппировать именованные константы в одно множество, и такая задача встречается как при использовании ООП, так и без него. Я, например, показываю, как применять enum до того, как рассказываю про классы, и активно применяю их потом, когда вовсю использую ООП

    • @Босхет-э5о
      @Босхет-э5о 4 года назад +1

      @@AlexanderSemenko в данном видео, как мне кажется, не очевидно зачем их придумали

  • @zumerok2283
    @zumerok2283 7 лет назад +25

    давайте поможем набрать ему 1 000 000 подпишиков чтобы он был рад

    • @SHKOLNIKDEN
      @SHKOLNIKDEN 6 лет назад +1

      Не очень цель

    • @root539
      @root539 4 года назад +1

      @@SHKOLNIKDEN ну да лучше сразу 10 000 000

    • @root539
      @root539 4 года назад +1

      )))

  • @МаксимБойко-и9р
    @МаксимБойко-и9р 7 лет назад

    Если не инициализировать переменную, то в ней будет храниться "мусорное значение". Null в переменной может быть, только если переменная является указателем! Т.е. в указателе может быть как адрес на ячейку памяти так и NULL! В любом случае мусорное значение.

    • @1wardark
      @1wardark 7 лет назад

      Максим Бойко, если мы используем объект со статическим временем хранения, он автоматически инициализируется нулем, то есть там не мусор, в отличие от автоматического времени хранения)

  • @yura_belyavtsev
    @yura_belyavtsev 6 лет назад +3

    #include
    using namespace std;
    enum mall {parking = -1, hall, many_shops, roof};
    int main() {
    int floor;
    bool exit = true;
    while (exit) {
    cout > floor;
    switch (floor) {
    case parking:
    cout

  • @mashaaaa-d3u
    @mashaaaa-d3u 7 лет назад +24

    С каждым уроком наблюдается снижение просмотров и лайков)

  • @evgenii.zaikin
    @evgenii.zaikin 7 лет назад +1

    Могу ли я в ENUM хранить переменные разных типов? Например tree_1 (char), tree_2 (string), tree_3(double).

    • @bednyaga404
      @bednyaga404 7 лет назад +4

      enum только для чисел создан

  • @sergeyomel
    @sergeyomel 7 лет назад +2

    Спасибо за прекрасный урок! но у меня вопрос. Изначально мы объявляем,что переменная exit ложна,цикл выполняется пока exit ложен,т.е. пока ложна ложь,т.е. exit = 1.Выход из программы осуществляется при exit = 1,но по моей логике получается,что наоборот,цикл должен повториться.Объясните пожалуйста,где мои рассуждения неверны.Заранее благодарю!

    • @misharyduk8503
      @misharyduk8503 4 года назад +4

      Думаю, вопрос уже давно не актуален, но все же: в условии стоит !exit - знак восклицания меняет логическое выражение на противоположное - если exit изначально 0, то станет 1, и наоборот. Когда пользователь ввел 1, условие стало 0, а цикл выполняется только когда условие верно (1)

  • @oraclevb5430
    @oraclevb5430 4 года назад +1

    Урок хорошый пример отличный но я не согласен что это оптимальный код здесь в таком случаи можно было вобше удалить строку с кодом енум но для начинаюших хорошый пример 👍👍

  • @ladyoioi3657
    @ladyoioi3657 6 лет назад +1

    Программа по enum:
    #include
    using namespace std;
    enum magazine {cover = -1, information_page, scandals, posters, recommendations, quiz};
    int main() {
    int page;
    bool exit = false;
    while (!exit) {cout > page;
    switch (page) {case cover:
    cout

  • @elkhanisayev7964
    @elkhanisayev7964 7 лет назад +4

    #include
    using namespace std;
    enum mall { parking = 0, hall, shops, roof };
    int main()
    {
    bool exit = false;
    int floor;
    while(!exit)
    {
    cout floor;
    switch (floor)
    {
    case parking:
    cout

    • @Kavicon
      @Kavicon 7 лет назад

      Я сделал так.
      #include
      #include
      using namespace std;
      enum market {parking = -1,nul,shop,restoran,roof};
      int main () {
      int floor;
      bool leave = false;
      while (!leave) {
      cout floor;
      switch (floor) {
      case parking:
      cout

  • @daniilafendulov7401
    @daniilafendulov7401 6 лет назад +1

    если мы вместо цифр используем enum , то ,как я понял, создаются куча переменных. Как повлияет это на размер и скорость выполнения программы?

    • @ИгорьК-т1ш
      @ИгорьК-т1ш 4 года назад +2

      я думаю дает преимущество, так как если вы отдельно создадите переменные, они будут занимать много места в памяти, например создав 10 переменных типа int каждая по 4 байта весит у вас получается 40 байт в памяти, если вы создадите enum и объявите эти переменные там, то у вас будет общий вес enum с этими переменными 4 байта, разница как видите есть, это можно проверить с помощью оператора sizeof

  • @Funkbass1986
    @Funkbass1986 7 лет назад

    когда пишешь с использованием Qt сразу понятно зачем нужны енумы. как по мне - это просто удобный программный интерфейс для кодера, что можно оперировать поименованными переменными и не задумываться об их значении. Например enum Colors_set{red; orange; yellow;} мы хотим задать цвет окна main_window -> color = Colors_set::red
    И нам абсолютно пофиг какая там цифра... if ((Colors_set::red) == (main_window->color)) thats_ok = true; (Йодина нотация)))) Главное что цвет - красный)))

  • @vladtheterrible1204
    @vladtheterrible1204 7 лет назад

    Подскажите немного, тут же изначально задаётся bool exit = false; а в цикле WHILE мы пишем условие (!exit) то есть отрицание фолса - > while (true), то есть пока екзит = тру выполняется цикл, но екзит у нас false задан, как так

    • @СправаФея
      @СправаФея 7 лет назад

      while (УСЛОВИЕ) {тело}, просто запомни: здесь и всегда цикл будет работать, пока его УСЛОВИЕ = true. И как ты уже выше написал, у нас условие = !exit, то есть, = !false, то есть, = true. А как нам известно, пока while (true) - цикл работает,

    • @nikolaiuser3190
      @nikolaiuser3190 6 лет назад

      Прочитай это по-другому: while(!exit) эквивалентна while(exit == false). Тогда будет понятнее.

  • @ГлібМаліков
    @ГлібМаліков 7 лет назад

    #include "stdafx.h"
    #include
    #include
    using namespace std;enum shop { parking = 0, hall, strsh, kanztov, chshop, prshop, roof };
    int main()
    {
    setlocale(LC_CTYPE, "rus");
    int floor;
    bool exit = false;
    while (!exit) {
    cout > floor;
    switch (floor)
    {
    case parking:
    cout

  • @aladdin2443
    @aladdin2443 7 лет назад

    очень благодарен вам
    Всё получается, всё делаю как вы
    Но не могу запомнить все кода, это прийдет со временем или надо зубарить их??

    • @eldarismailov655
      @eldarismailov655 7 лет назад +1

      не надо зубрить. Все придет с опытом.

    • @necrof5127
      @necrof5127 4 года назад

      в начале стоит записывать команды в текстовой файл

  • @EkariQQ
    @EkariQQ 8 лет назад +4

    3:10 как так можно строки копировать? Спасибо заранее

    • @RUSlTUZ
      @RUSlTUZ 8 лет назад +10

      Shift + Home, выделится вся строка с выбранной позиции до конца влево, и Ctrl + C копировать

    • @EkariQQ
      @EkariQQ 8 лет назад +2

      Спасибо

    • @likhomanov_777
      @likhomanov_777 6 лет назад

      Или ctrl + A для всего текста

  • @АвтосервисГАрАж
    @АвтосервисГАрАж 5 лет назад

    В визуал студио переменная bool принимает 1 как exit и 0 как true

  • @artemartem1235
    @artemartem1235 7 лет назад

    Получается, что это переменные в оперативной памяти? Можно их как-то в константы перенести?

  • @jaremy_426
    @jaremy_426 3 года назад

    А на 10:57 можно через трай, а не дефолт?

  • @АвтосервисГАрАж
    @АвтосервисГАрАж 5 лет назад

    Кто нибудь помогите. Как записывать текст в переменные т.е. буквы

  • @АвтосервисГАрАж
    @АвтосервисГАрАж 5 лет назад

    Почему я прописываю в визуал студио !exit и он мне бесконечность раз выдает надпись?

  • @etovamneeto
    @etovamneeto 2 года назад

    Забавно, когда вводишь вместо числа любой символ, то floor становится 0 и программа флудит бесконечно в консоли. Кто-нибудь может объяснить почему так?

  • @spek5525
    @spek5525 3 года назад

    Как сделать проверку exit, если нажмёш больше 1 или меньше 0 на консоли выдаётся бесконечный цикл текста

  • @CREATIVE_tg1
    @CREATIVE_tg1 2 года назад

    Почему, когда я нажимаю 1 в конце, то цикл начинается с начала, а не останавливается? Код перепроверил, точно такой же

  • @aleksandr3094
    @aleksandr3094 5 лет назад

    Мне нравится смотреть как с каждым уроком просмотры падают. Взяться за что-то и бросить - не для пользователей ютюба!

    • @ВладиславЕфимов-щ1г
      @ВладиславЕфимов-щ1г 4 года назад

      не обязательно, например я смотрю 2-3 блога по ютубу и самоучебник, так намного понятнее

  • @FilthyGoose
    @FilthyGoose 5 лет назад +1

    Гоша пишет код: все понятно. "А теперь немного теории. Перечисление это вы можете создать перечисление опять же таки тавтология."
    В целом урок норм, но если даешь определение, ты б хоть перед собьой на бумажке держал его)

  • @denniga4506
    @denniga4506 5 лет назад

    Я старался.
    #include "pch.h"
    #include
    #include
    using namespace std;
    enum mall { parcking = -1, hall, many_shops, roof};
    int main()
    {
    setlocale(LC_CTYPE, "Rus");
    int floor;
    bool exit = false;
    while (!exit)
    {
    cout > floor;
    switch (floor)
    {
    case parcking:
    cout

  • @andrhk
    @andrhk 5 лет назад +1

    Вот это прикол). Урок хороший. Но есть проблемка. Написал такой-же код.. Играю. Жму -1. Затем в вопросе: "Хотите играть дальше" набираю случайно 04, -4, 02 и другие бредовые числа. Консоль начинает спамить кучей сообщений. 0-0

  • @Александр-в8к6р
    @Александр-в8к6р 6 лет назад

    Уже и перечитал и пересмотрел кучу всего, но так и не понял, в чем фишка? Почему нельзя просто так же создать константы и написать им значения? Так даже удобнее, ведь если много значений, и тебе надо увидеть какое число соответствует константе, то в построчной записи констант сразу видно, а здесь считать 99ое оно или 100ое???

  • @ontixor
    @ontixor 5 лет назад

    Почему объединения не объяснили?

  • @atdawntime
    @atdawntime 3 года назад

    6:32 exit = false
    !exit = не exit = не false(true)
    В этом моменте я не понял логики, объясните пожалуйста

    • @gdkor
      @gdkor 2 года назад

      !exit это сокращение от exit == false

  • @darklord7645
    @darklord7645 6 лет назад

    Так в чем отличие массива от енум? Твой лифт можно сделать с тем же успехом массивами

    • @themaxname-6836
      @themaxname-6836 6 лет назад

      он просто на примере лифта показал как работает enum.
      а вот как лучше зделать,и он сам знает.

  • @bosicc6644
    @bosicc6644 7 лет назад +1

    переписал твой код) Почему у меня не работает он?

    • @ДаниилЛежнин-ч6з
      @ДаниилЛежнин-ч6з 7 лет назад +1

      Попробуй в int main стереть всё что находится в круглых скобках

  • @YesterdayMy
    @YesterdayMy Год назад

    Короче в Visual studio выдаёт ошибку потому что у тебя xtool а у нас visual studio так вот в чём ошибка в том что enum пишется также как struct только все переменные через запятую пример enum tree { tree1, tree2, tree3};

  • @ЕвгенийДымман
    @ЕвгенийДымман 5 лет назад

    А если ввести 2 , как пофиксить бесконечный код

  • @АлександрИлюхин_2002
    @АлександрИлюхин_2002 4 года назад

    а что значит bool, swich, case, default???

    • @Timediamond-r7t
      @Timediamond-r7t 4 года назад

      bool - если,swich - проверка,case-если проверка удалась то выводим cout! ,default-ошибка ,это если проверка не прошла и пользователь выбрал не существующий этаж

  • @eldarismailov655
    @eldarismailov655 7 лет назад

    у меня просто "bool = exit;" работает без инициализации.

    • @JoffreyB
      @JoffreyB 7 лет назад +5

      че блять

  • @sanapopov9105
    @sanapopov9105 7 лет назад +6

    Мне понятно зачем они. Чтобы создать игру змейку.

  • @mimyklip9424
    @mimyklip9424 4 года назад

    Попробуйте в этом коде ввести 1.2

    • @ray-uk6pz
      @ray-uk6pz 3 года назад

      азазазазахахахаахахаахахха чел ты крут

  • @alexandrtsvetkov7715
    @alexandrtsvetkov7715 6 лет назад

    я не могу понять одного. А для чего это перечисление вообще нужно? Где его использовать?

    • @ddezz7401
      @ddezz7401 6 лет назад

      Если я не ошибаюсь перечисления используются для оптимизации данных и самого кода. Также учитывая время работы при написании кода, использовать перечисление намного быстрее по сравнению с простым вписыванием значений через int, float, char и тд...

  • @shushanikpetrosyan.3022
    @shushanikpetrosyan.3022 6 лет назад

    не получается обясните и в чем проблема ???
    #include
    #include
    using namespace std;
    enum shop (parking = 0 , magazine , beauty , cafe ):
    int main(int argc, const char * argv []) {
    cout

    • @TheEvgenyHps
      @TheEvgenyHps 6 лет назад

      #include
      #include
      using namespace std;
      enum shop {parking = 0 , magazine , beauty , cafe};
      int main(int argc, const char * argv []) {
      cout

    • @TheEvgenyHps
      @TheEvgenyHps 6 лет назад

      И неважно что уже 4 месяца прошло))

  • @Slavasil
    @Slavasil 6 лет назад

    кстати нулевого этажа не бывает

    • @Penilopa24
      @Penilopa24 6 лет назад +1

      да ну! Пару раз видела точно.

  • @swat551
    @swat551 6 лет назад

    либо я тупой либо на это влияет то что у тебя macbook короче я переписал все что ты тут понаписал и у меня куча ошибок выдает в cpp.sh ? но объясняешь классно !

  • @koteich_live
    @koteich_live 4 года назад

    хотите прикол видите на этапе 14:00 222222 ))))

  • @jointmeister
    @jointmeister 4 года назад

    Зачем нужен enum, если это можно реализовать это через массивы?

    • @ruslanvolovik2745
      @ruslanvolovik2745 4 года назад

      Просто потому что масив используют для других вещей это во-первых, во-вторых, енам позволяет давать значения имена, а не просто какое-то смещение в непрерывной области памяти (массив), в третьих, нужно какое-то множество значения, который на самом деле ты будешь использовать, а не просто массив создал и все, потом как-то же нужно следить за самим кодом и не превращать это в срач, еще еман только для чисел создан, уже можно было подумать зачем он нужен...
      Еще занимает меньше памяти, код более читаемый, и тд

    • @AlexanderSemenko
      @AlexanderSemenko 4 года назад

      enum - это множество именованных констант, сгруппированных по смыслу в одну "коллекцию". Это нужно для того, чтобы, например, вместо "цвет №2" написать Red, что помогает не путать смыслы - например, в одной функции мы используем цвет №2 для вывода надписи №2 игроку №2. Чтобы не путаться, я сделаю 3 перечисления, в котором одному и тому же числу будут соответствовать РАЗНЫЕ имена, например Red, Hello_Text и Second_Player.

  • @sergeichwelcome
    @sergeichwelcome 4 года назад

    Введите дробное значение и цикл станет бесконечным!

  • @elinaallakhverdova382
    @elinaallakhverdova382 5 лет назад

    Насчет значений по умолчанию
    Для С++ 17 это НЕВЕРНО!
    Выдаст ошибку, NULL не присваивается.

    • @ruslanvolovik2745
      @ruslanvolovik2745 4 года назад

      Нет значения по умолчанию, есть мусор

  • @yellowmoonishka1725
    @yellowmoonishka1725 2 года назад

    Ths

  • @KiBErporT-
    @KiBErporT- 2 года назад

    Программист которому нужно было создать перечисления на лифт с БурджХалиф всм…

  • @ВладимирПодшивалов-с1т

    Используй русский знакогенератор и не упражняйся с английским . Зачем вставляешь не понятные функции , если вставляешь объясняй . Каким образом он вернется обратно ?

  • @irena4459
    @irena4459 5 лет назад

    1

  • @xelax3613
    @xelax3613 6 лет назад

    Ихняя вся суть...

    • @abmilion8560
      @abmilion8560 5 лет назад +1

      ЧЛЕНОГРАМ ЕБАНЫЙ СУУУУУУУУКА

  • @sype1680
    @sype1680 2 года назад

    Что за бред ты несешь? По умолчанию null не хранится в переменных. В неинициализированных переменных хранятся мусорные значения. Булевы значения не могут быть объявлены без инициализации.

  • @inflator3616
    @inflator3616 5 лет назад

    майнус one

  • @newsmolensk
    @newsmolensk 5 лет назад

    одна вода...

  • @JokerKonor
    @JokerKonor 4 года назад

    #include
    using namespace std;
    enum mall {parking =-1, hall, many_shops, roof};
    int main()
    {
    int floor;
    bool exit= false;
    while(!exit){
    coutfloor;
    switch(floor){
    case parking:
    cout