Enumerated Data Type का प्रयोग करके हम हमारी इच्छा व आवश्यकतानुसार नए Data Types बना सकते हैं और ये define कर सकते हैं कि बनाया गया Data Type किस प्रकार के मान Accept करेगा। इस प्रकार के Data Type बनाने के लिए हमें enum Keyword का प्रयोग करना होता है और enum Data Type का definition बिल्कुल उसी प्रकार से किया जाता है जिस प्रकार से एक Structure को define किया जाता है। जैसे कि
enum stu_status
{
pass, fail, supplementary;
};
enum stu_status Student1, Student2;किसी Structure की ही तरह से enum प्रकार के Variables Student1, Student2 Declare किये गए हैं और Structure की ही तरह से ये Declare किया गया है कि ये Data Type किस प्रकार के मान accept करेगा। ये मान Enumerators कहलाते हैं। उसी प्रकार से जिस प्रकार से किसी Structure के मान Members कहलाते हैं। अब हम इन Variables को मान प्रदान कर सकते हैं। जैसे:
Student1 = pass;
Student2 = fail;
ये बात हमेंशा ध्यान रखें कि किसी भी Variable को प्रदान किया जाने वाला मान enumerator ही हो सकता है। जैसे:
Student2 = first_division;
ये एक गलत Assignment है क्योंकि first_division enumerator नहीं है। “C” Compiler Internally enumerators को Integers प्रकार से Treat करता हैं। Lost के अन्दर का हर मान एक Integers द्वारा पहचाना जाता है जो कि 0 के क्रम से शुरू होता है। यानी Enumerator pass अंक 0 से सम्बंधित है। enumerator fail अंक 1 से सम्बंधित है। enumerator supplementary अंक 2 से सम्बंधित है और ये ही क्रम आगे भी चलता रहता है यदि हमारे पास इससे अधिक Enumerators हैं। हम इन अंको को बदल भी सकते हैं। हम जो अंक Assign करते हैं वे अंक इन अंको पर Over Write हो जाते हैं। जैसे:
enum stu_status
{
pass = 10, fail = 20, supplementary = 30;
};
enum stu_status Student1, Student2;अब हम एक प्रोग्राम द्वारा इसका प्रयोग करना समझेंगे।
// Program
#include<stdio.h>
main()
{
enum stu_status
{
pass, fail, supplementary
};
struct Students
{
char name[20];
int age;
int class1;
enum stu_status stud;
};
struct Students Student1;
strcpy( Student1.name, "Kuldeep" );
Student1.age = 20;
Student1.class1 = 12;
Student1.stud = pass;
printf("\n Name %s", Student1.name);
printf("\n Age %d", Student1.age);
printf("\n Class %d", Student1.class1);
printf("\n Status %d", Student1.stud);
if(Student1.stud = = fail )
printf("\n %-s is Fail", stident1.name );
else
printf("\n %-s is Not Fail ", Student1.name );
}
// Output
Name Kuldeep
Age 20
Class 12
Status 0
Kuldeep is Failइस Program में हमने enum में तीन मान pass, fail व supplementary रखे है। एक Structure बनाया है जिसमें चार Members हैं। चौथे Member के रूप में enum को nested किया है। फिर सभी Members को value assign किया हैं। Student1.stud = fail; किया है। ये Statement Student1.stud = 0; Statement से काफी सरल है जिससे ये समझ में आ जाता है कि Student1 को enumerated Data Type में fail दिया गया हैं।
Enumerated Data Type के साथ ये कमी है कि हम किसी Function द्वारा fail या pass सीधे ही enum Data Type से print नहीं करवा सकते हैं। क्योंकि ये int प्रकार से अंकों के रूप में enum में रहते हैं। यदि इन्हें print करवाया जाता है तो ये enum के अंक ही print करते हैं जैसे कि printf(“\n Status %d”, Student1.stud); Statement द्वारा pass को print करवाने पर 0 Print होता है। यदि हमें pass print करवाना हो तो अलग से Statements लिखने होते हैं। (Enumerated Data Type – Wiki)
Buy this eBook to read more about “Enumerated in C“
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C Programming Language in Hindi | Page: 477 + 265 | Format: PDF
