C++ enum (Sanash turlari)
Ro'yxatga olish - bu integral konstantalardan tashkil topgan foydalanuvchi tomonidan belgilangan ma'lumotlar turi. Ro'yxatni aniqlash uchun keyword enum ishlatiladi.
enum season { spring, summer, autumn, winter };
Bu erda ro'yxatning nomi mavsumdir.
Va bahor, yoz va qish mavsumi turlarining qadriyatlari.
Odatiy bo'lib, bahor - 0, yoz - 1 va hokazo. Deklaratsiya paytida siz enum elementining standart qiymatini o'zgartirishingiz mumkin (agar kerak bo'lsa).
enum season
{ spring = 0,
summer = 4,
autumn = 8,
winter = 12
};
Sanalgan turni yaratganingizda, faqat o'zgaruvchining sxemasi yaratiladi. Enum tipidagi o'zgaruvchilarni qanday yaratishingiz mumkin.
enum boolean { false, true };
// ichki funksiya
enum boolean check;
Bu erda enum boolean tipidagi o'zgaruvchan tekshiruv yaratiladi.
Turli sintaksis yordamida bir xil tekshirish o'zgaruvchisini e'lon qilishning yana bir usuli.
enum boolean
{
false, true
} check;
#include <iostream>
using namespace std;
enum week { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
int main()
{
week today;
today = Wednesday;
cout << "Day " << today+1;
return 0;
}
Chiqish
Day 4
#include <iostream>
using namespace std;
enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32};
int main() {
seasons s;
s = summer;
cout << "Summer = " << s << endl;
return 0;
}
Chiqish
Summer = 4
Enum o'zgaruvchisi ko'p mumkin bo'lgan qiymatlardan faqat bitta qiymatni oladi. Keling, bir misolni ko'rib chiqaylik.
#include <iostream>
using namespace std;
enum suit {
club = 0,
diamonds = 10,
hearts = 20,
spades = 3
} card;
int main()
{
card = club;
cout << "Size of enum variable " << sizeof(card) << " bytes.";
return 0;
}
Chiqish
Size of enum variable 4 bytes.
Buning sababi, butun sonning o'lchami 4 bayt. Bu enumni bayroqlar bilan ishlash uchun yaxshi tanlov qiladi.
Xuddi shu vazifani C++ structures yordamida bajarishingiz mumkin. Biroq, enumlar bilan ishlash moslashuvchanlik bilan birga samaradorlikni ham beradi.
Keling, bir misolni ko'rib chiqaylik.
enum designFlags {
ITALICS = 1,
BOLD = 2,
UNDERLINE = 4
} button;
Aytaylik, siz Windows ilovasi uchun tugmani loyihalashtiryapsiz. Matn bilan ishlash uchun ITALICS, BOLD va UNDERLINE bayroqlarini o'rnatishingiz mumkin.
Yuqoridagi psevdokodda barcha integral konstantalar 2 ning darajalari ekanligining sababi bor.
// Ikkilik formatda
ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100
Integral konstantalar 2 ga teng bo'lganligi sababli, bitwise OR | operator yordamida bir vaqtning o'zida ikki yoki undan ortiq bayroqlarni bir-biriga yopishtirmasdan birlashtirishingiz mumkin. Bu bir vaqtning o'zida ikki yoki undan ortiq bayroqni tanlash imkonini beradi. Masalan,
#include <iostream>
using namespace std;
enum designFlags {
ITALICS = 1,
BOLD = 2,
UNDERLINE = 4
};
int main()
{
int myDesign = BOLD | UNDERLINE;
// 00000010
// | 00000100
// ___________
// 00000110
cout << myDesign;
return 0;
}
Chiqish
6
Chiqish 6 ga teng bo'lsa, siz doimo BOLD va OTG CHIZIQ ishlatilishini bilasiz.
Bundan tashqari, siz o'zingizning talablaringizga bayroqlar qo'shishingiz mumkin.
if (myDesign & ITALICS) {
// kursiv uchun kod
}
Bu erda biz dizaynimizga kursiv qo'shdik. E'tibor bering, faqat kursiv uchun kod if operatori ichida yozilgan.
C++ dasturlashda siz ro'yxatlardan foydalanmasdan deyarli hamma narsani bajarishingiz mumkin. Biroq, ular muayyan vaziyatlarda juda qulay bo'lishi mumkin. Bu yaxshi dasturchilarni ajoyib dasturchilardan ajratib turadigan narsa.