саму ипостась перечислениий я понял (увеличивается на один и ещё т.д.)
но вот отрывок примера перечислений
enum color { RED, GREEN, BLUE };
маин функция()
{
color c; /* вот зачем тут так делать и смысл вообще инициализировать
каак вообще изменить это переменное C*/
switch(c) // какое тут может быть вообще значение
{
case RED:
// do something
break;
case BLUE:
// do something
break;
}
}
объясните пожайлусто а то мой псевдо мозг не хочет это осознать
заранее спасибо
Другие языки программирования и технологии
абсолютные непонятки с перечислением констант (enum) в с++ соответсвенно
По умолчанию значения перечисления нумеруются, поэтому и в switch можно использовать
Как известно, перечисления - это тип который может содержать значения указанные программистом. Целочисленные именованные константы могут быть определены как члены перечисления. Например:
enum { RED, GREEN, BLUE };
определяет три целочисленные константы и присваивает им значения. По умолчанию, значения присваиваются по порядку начиная с нуля, т. е. RED == 0, GREEN == 1 и BLUE == 2. Перечисление также может быть именованным:
enum color { RED, GREEN, BLUE };
Каждое перечисление - это отдельный тип, и тип каждого члена перечисления - это само перечисление. Например RED имеет тип color. Объявление типа переменной как color, вместо обычного unsigned, может подсказать и программисту и компилятору о том как эта переменная должна быть использована. Например:
void f(color c)
{
switch(c){
case RED:
// do something
break;
case BLUE:
// do something
break;
}
}
В этом случае компилятор может выдать предупреждение о том, что обрабатываются только два значения color из трёх возможных.
Таким образом перечисления это:
- Создание именованных констант с автоматическим увеличением значения константы
- Предупреждения о возможных ошибках со стороны компилятора
Как известно, перечисления - это тип который может содержать значения указанные программистом. Целочисленные именованные константы могут быть определены как члены перечисления. Например:
enum { RED, GREEN, BLUE };
определяет три целочисленные константы и присваивает им значения. По умолчанию, значения присваиваются по порядку начиная с нуля, т. е. RED == 0, GREEN == 1 и BLUE == 2. Перечисление также может быть именованным:
enum color { RED, GREEN, BLUE };
Каждое перечисление - это отдельный тип, и тип каждого члена перечисления - это само перечисление. Например RED имеет тип color. Объявление типа переменной как color, вместо обычного unsigned, может подсказать и программисту и компилятору о том как эта переменная должна быть использована. Например:
void f(color c)
{
switch(c){
case RED:
// do something
break;
case BLUE:
// do something
break;
}
}
В этом случае компилятор может выдать предупреждение о том, что обрабатываются только два значения color из трёх возможных.
Таким образом перечисления это:
- Создание именованных констант с автоматическим увеличением значения константы
- Предупреждения о возможных ошибках со стороны компилятора
Перечисления содержат именованные константы целого типа int и только по умолчанию отсчёт начинается с нуля, но вы самостоятельно можете менять как порядок отсчёта так и начинать отсчёт с отрицательного числа. Если не задать явно значение для такой константы, то она увеличит своё значение на единицу по отношению к предыдущей.
Именованные константы позволяют сделать код понятнее, чем целые числа. Пример использования:
Именованные константы позволяют сделать код понятнее, чем целые числа. Пример использования:

enum color {RED = 1, GREEN, BLUE, RANDOM};
Это значит, что RED == 1, GREEN == 2, BLUE == 3, RANDOM == 4.
Т. е. эта строчка эквивальентна этим вместе взятым:
const int RED = 1;
const int GREEN = 2;
const int BLUE = 3;
const int RANDOM = 4.
switch(c) - нельзя так, это бред!
enum color {RED = 1, GREEN, BLUE, RANDOM};
int x = 2;
switch(x)
{
case RED:
/*...*/
break;
case GREEN:
/*...*/
break;
case BLUE:
/*...*/
break;
case RANDOM:
/*...*/
break;
default:
break;
}
Это будет эквивальентно такой записи:
int x = 2;
switch(x)
{
case 1:
/*...*/
break;
case 2:
/*...*/
break;
case 3:
/*...*/
break;
case 4:
/*...*/
break;
default:
break;
}
Это значит, что RED == 1, GREEN == 2, BLUE == 3, RANDOM == 4.
Т. е. эта строчка эквивальентна этим вместе взятым:
const int RED = 1;
const int GREEN = 2;
const int BLUE = 3;
const int RANDOM = 4.
switch(c) - нельзя так, это бред!
enum color {RED = 1, GREEN, BLUE, RANDOM};
int x = 2;
switch(x)
{
case RED:
/*...*/
break;
case GREEN:
/*...*/
break;
case BLUE:
/*...*/
break;
case RANDOM:
/*...*/
break;
default:
break;
}
Это будет эквивальентно такой записи:
int x = 2;
switch(x)
{
case 1:
/*...*/
break;
case 2:
/*...*/
break;
case 3:
/*...*/
break;
case 4:
/*...*/
break;
default:
break;
}
Илья Просеков
>> switch(c) - нельзя так, это бред!
Вы не правы! МОЖНО!
По умолчанию значения перечисления нумеруются с нуля!
Т.е. enum color {RED, GREEN, BLUE, RANDOM};
на самом деле
enum color {RED=0, GREEN=1, BLUE=2, RANDOM=3};
и switch(c) прекрасно отработает
Вы не правы! МОЖНО!
По умолчанию значения перечисления нумеруются с нуля!
Т.е. enum color {RED, GREEN, BLUE, RANDOM};
на самом деле
enum color {RED=0, GREEN=1, BLUE=2, RANDOM=3};
и switch(c) прекрасно отработает
Похожие вопросы
- Вопрос про константы в С++ внутри.
- Почему числа в языках программирования называются константами?
- зачем в программировнии константы?
- Почему требует константу? С++
- как сделать так чтобы. Вот например вводишь ты значение, и это значение становится константой.
- C#.Объясните код. Class + Enum
- Как правильно называется штука в Pawn записываемая в таком виде: enum Array[][n] { N }. Впервые вижу такую конструкцию.
- зачем в php константы и и переменные? не вижу в этом смысла, обьясните
- В двух массивах строковых констант хранятся слова:существительные и глаголы. Составте программу, которая выводит:
- скажите для чего в с++ константы, можно просто взять переменную например int x=15; и не менять её
каак switch понимает что там должно быть в переменной С