EgoRusMarch
@EgoRusMarch
C++ Developer

Как применять перечисляемый тип enum?

Не могу понять, пролистал всю книгу. Гуглил. Не понял все равно ничего.

Вот есть такой пример:
#include <stdio.h>

void main(void) {
    enum type {A,B,C} var;
    
    printf("%d\n%d\n%d\n",A,B,C);
    printf("\n%d\n",var);
    
    enum type D,E,F;
    printf("\n%d\n%d\n%d\n",D,E,F);
    
    system("PAUSE");
}

С тем, что внутри блока находится, все понятно. А вот с тем что такое type и var
(хотя по аналогии со struct и union понятно, но...)

Вот результат работы:
46b4a607d2bf45b4be70d9ba78364388.png
Так зачем это нужно? Как это применять?
  • Вопрос задан
  • 345 просмотров
Решения вопроса 2
type -- это имя типа вашего enum. var -- название переменной только что объявленного типа. Код можно переписать так:
enum type {
    A,B,C
};
enum type var;

Пример, конечно, ужасный. Создаётся впечатление, что type -- это ключевое слово, лучше классический enum fruit { apple, orange };. Плюс определять переменные в объявлении типа -- advanced feature, я бы её в первом же примере не давал.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Всё очень просто. Enum используется, когда вариантов значений не очень много и они заранее известны. Например простейший светофор имеет три цвета:
typedef enum {
  red,
  yellow,
  green
} color;

Теперь определив переменную типа color мы можем присваивать ей значение не в виде числа, а в виде цвета.
color traffic_light_state;
traffic_light_state = red;

По умолчанию C трактует значения enum как целые числа начиная с нуля. Поведение можно изменить прямым указанием, например
typedef enum {
  red = -1,
  yellow,
  green = 3
} color;

определит red как -1, yellow как 0 (-1 + 1), green как 3.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
maaGames
@maaGames
Погроммирую программы
В примере D,E,F не инициализирвоаны. В консоль выводится мусор.
Ответ написан
@abcd0x00
Для начала тебе надо выкинуть тот материал, в котором ты прочитал вот это:
void main(void) {

Когда найдёшь материал, где написано:
int main(void) {
тогда и узнаешь, что такое enum и так далее.

Просто если ты учишься по хреновым материалам, то ты и не можешь ничего узнать, потому что автор материалов сам ничего не знает.

Есть хорошая книга, главная в C мире
https://en.wikipedia.org/wiki/The_C_Programming_La...
250 страниц, в которых ты найдёшь всё, что надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы