// Использование enam
#include <iostream>
// enam - значения присваиваются с нуля; значения последующего увеличивается на 1.
// lg_EN==0, lg_RU==1, lg_KZ==2
enum lang {lg_EN, lg_RU, lg_KZ};
// Можно инициировать константой
// Диапазон значений определяется: n - макс. значение, m - мин. целое.
// Верхняя граница диапозона Rmax == 2**m-1 (два в степени m минус один).
// Тогда Rmax > n
// Нижняя граница Rmin при m >= 0 Rmin == 0. При m<0 Rmin == 2**m + 1
enum bits {BIT_0=1, BIT_1=2, BIT_2=4, BIT_3=8}; // == 15
// Почему не 8? Rmax=2**3-1=8-1=7 ошибка, Rmax=2**4-1=15
int main()
{
// При преобразовании главное что бы входило в диапозон.
bits b1=bits(5); // входит в диапозон
b1=bits(2);
switch(b1)
{
case BIT_0: std::cout<<"bit=1\n";break;
case BIT_1: std::cout<<"bit=2\n";break;
case BIT_2: std::cout<<"bit=4\n";break;
case BIT_3: std::cout<<"bit=8\n";break;
default: std::cout<<"bit not implimentation\n";
};
int i=0;
std::cin>>i;
return 0;
}