5.1.25 · D1 · HinglishC Programming

FoundationsEnumerations

3,619 words16 min read↑ Read in English

5.1.25 · D1 · Coding › C Programming › Enumerations

Parent note ki ek bhi line samajhne se pehle, tumhe un choti-choti ideas ki alphabet mein fluent hona chahiye jo woh silently assume karta hai. Yeh page un sabko kuch nahi se build karta hai, usi order mein jisme ek doosre pe depend karte hain.


1. Integer kya hota hai (aur computer ko yeh kyun pasand hai)?

Picture: socho ek numbered lockers ki row jo left aur right dono taraf jaati hai. Har locker apne agle se ek whole step door hai — tum locker 3 pe khade ho sakte ho, lekin locker 3 aur locker 4 ke beech mein kabhi nahi.

Figure — Enumerations

Topic ko iske liye kyun chahiye: har enum naam secretly inhi lockers mein se ek hota hai. Jab parent note kehta hai "ek enum sirf ints hai", matlab har naam exactly ek whole-number locker se glued hai. Agar integer ke baare mein shaky ho, toh dekho Integer Types in C.


2. Constant kya hota hai?

Picture: ek locker jiska darwaza locker 5 pe weld karke band kar diya gaya ho. Tum ise dekh sakte ho, point kar sakte ho, iska number use kar sakte ho — lekin tum us naam ko kabhi kisi dusre locker ka matlab nahi bana sakte.

Topic ko iske liye kyun chahiye: har enumerator (agle section mein define hoga) ek constant hota hai. Jab ek baar naam 0 ka matlab ho jaye, toh hamesha 0 ka hi matlab rahega. Yeh ek variable se alag hai, jo ek aisa locker hota hai jiske contents tum swap kar sakte ho.


3. Enumerator kya hota hai?

Picture: enum jars ki ek row hai; apne naam-label ke saath har jar ek enumerator hai. RED jar-0 ka label hai, GREEN jar-1 ka label hai, wagera.

Topic ko iske liye kyun chahiye: poora parent note enumerators ke baare mein hi hai — Section 7 mein recurrence, value(...) mapping, switch cases aur array-index trick sab enumerators pe operate karte hain. Jab tak yeh nahi pata ki symbol ka matlab "-va enumerator" hai, ek bhi formula follow nahi kar sakte. Hum ko formally define karenge jab Section 6 mein subscript tak pahunchenge.


4. enum keyword aur enumeration actually kya hoti hai

Hum "enum" word baar baar use kar chuke hain — ab ise C language ke ek real piece ke roop mein pin karte hain.

Picture: enumeration poori labelled shelf hai; uske upar har jar ek enumerator hai. enum woh sign hai jo shelf ke upar laga hai aur announce karta hai "yeh named numbers ki shelf hai".

Declaration ki anatomy, piece by piece:

  • enum — woh keyword jo har enumeration start karta hai.
  • Colortag, is new type ka ek optional naam taaki baad mein enum Color c; declare kar sako.
  • { ... } — braces jo comma-separated enumerators hold karte hain.

Topic ko iske liye kyun chahiye: parent ke har example mein enum se shuru hota hai. Jab tak yeh nahi pata ki yeh ek keyword hai (koi naam nahi jo tumne banaya) aur "enumeration" matlab poora group jabki "enumerator" matlab ek member, tab tak yeh sentence ki "ek enum ek naya integer type declare karta hai jiske values enumerators ki list hain" ek uljhan hai. enum Color c; se enum word chhod ke sirf Color c; likhne ke liye, dekho typedef.


5. C mein = sign — assignment vs. definition

Picture: number se naam ki taraf point karta ek arrow — number andar aata hai aur chipak jaata hai.

Topic ko iske liye kyun chahiye: parent ke "explicit values" (OK = 1) isi pe rely karte hain. Agar yeh difference miss karo toh WARN = 5 ordinary assignment lagega jabki yeh actually naam ko number se ek baar ke liye weld karna hai.


6. Type kya hota hai?

Picture: lockers alag sizes aur shapes mein aate hain. Ek char locker chota hai; ek int locker bada hai; ek enum Color locker int jaite hi size ka hai lekin ek sticky label pehne hua hai jo kehta hai "yahaan colours rehte hain".

Figure — Enumerations

Topic ko iske liye kyun chahiye: parent kehta hai "ek enum ek naya integer type declare karta hai". Bina yeh jaane ki type kya hota hai, woh sentence khokha hai. Aur yeh parent ki teesri mistake explain karta hai: enum Color ek int-sized box pe ek label hai, koi locked vault nahi — tum phir bhi usme 99 thoos sakte ho.


7. Subscript notation , value(...) mapping, aur recurrence

Parent likhta hai:

Yahaan notation ke teen pieces naye hain. Inhe ek ek karke samjhte hain.

Picture: named jars ki ek line mein shelf. sabse left wala jar hai, agla, wagera. Subscript har jar ke neeche ka label hai jo batata hai woh kis slot mein hai — iska matlab yeh nahi ki andar kya hai.

Picture: jar ke saamne se number padhna hai. Kisi jar (enumerator) ko point karo, aur uska locker number batata hai.

Picture: dominos. Jab ek baar pehle jar ki value 0 fix ho jaaye, har agle jar apne left neighbour ka number padh ke 1 add karta hai. Pehle ko girao, sab apni jagah par aa jaate hain.

Figure — Enumerations

"+1 kyun, ×2 ya +2 kyun nahi"? Kyunki yahi rule C standard ne choose kiya: woh chahta tha sabse simple, sabse predictable count — 0, 1, 2, 3 — taaki array indices aur enum values perfectly line up hon. Koi aur step parent ke example 4 ka array-sizing trick tod deta.


8. Function calls aur printf("%d", x)

Parent ke printf(...) lines padhne se pehle, humein function call ki shape hi chahiye — parent assume karta hai ise, toh hum ise yahaan build karte hain.

Picture: ek vending machine. Naam machine hai; parentheses coin-slot hain; har argument ek coin hai jo tum andar dalte ho. Button dabao aur result (yahaan, printed text) bahar aata hai.

Picture: %d ek number ke shape ka stencil hai. Tum jo bhi isme daalte ho woh digits ke roop mein bahar aata hai — kabhi letters ya names ke roop mein nahi.

Topic ko iske liye kyun chahiye: parent ki pehli badi mistake — "enum print karne par uska naam milta hai" — yahaan khatam hoti hai. printf("%d", RED) number 0 ko number-stencil se pour karta hai, toh tum 0 dekhte ho, kabhi "RED" nahi. Machine ke andar print karne ke liye koi naam hi nahi hai.


9. Arrays, indexing syntax, aur COUNT trick

Picture: ek egg carton. Box 0, box 1, box 2 ... tum [ ] ke andar slot number likh ke point karte ho.

Topic ko iske liye kyun chahiye: parent ka example int days[MONTH_COUNT]; us enumerator ki value () ko array-creation brackets ke andar size ke roop mein use karta hai, aur enum names ko usmein indices ke roop mein. Enum ka 0-se-count aur array ka 0-se-count deliberately same hai, yahi MONTH_COUNT sentinel trick ko kaam karta hai. Dekho Arrays in C.


Yeh sab topic ko kaise feed karte hain

Map padhne ka tarika: har arrow ka matlab hai "arrow ki tail wali cheez pehle samajh lo, tabhi head wali cheez samajh mein aayegi." Arrows follow karo aur tum literally safe learning order mein chal rahe ho — un boxes se shuru karo jinmein koi incoming arrow nahi (Integer), aur har box jo tum reach karo woh sirf aisi ideas use karega jo tum pehle se pass kar chuke ho. Node Enumeration enum destination hai: dekho kaise is page ki har foundation eventually usmein feed hoti hai, isi liye pehle inhe build karna pada.

Integer whole number

Constant welded value

Enumerator one named constant

enum keyword

Equals sign as definition

Type labelled box

Subscript index e_k

value mapping enumerator to int

Recurrence prev plus one

Function call name and parentheses

printf and percent d

Array and index brackets

Enumeration enum

Left ka har box is page ne zero se banaya hai; mil ke yeh sab enumeration ki parent idea ko support karte hain. Related type-building tools jo paas mein milenge: struct in C, typedef, aur woh jagah jahan enums sabse zyada shine karte hain — switch statement.


Equipment checklist

Mujhe bina fractional part ka ek whole number do — kya 3.5 ek hai?
Nahi — integer mein koi decimal part nahi hota; 3 aur 4 hain, 3.5 nahi.
Constant aur variable mein kya fark hai?
Constant weld hua hota hai aur kabhi nahi badlta; variable ek aisa box hai jise tum refill kar sakte ho.
Enumerator exactly kya hota hai?
Ek enum ke andar listed ek named constant — ek akela naam ek akele integer se weld hua.
Enumeration aur enumerator mein kya fark hai?
Enumeration poora labelled group hai (shelf); enumerator ek member hai (ek jar).
Kya enum ek keyword hai ya koi naam jo tum banate ho?
Ek reserved keyword — tum ise ordinary variable naam ki tarah use nahi kar sakte.
Ek enum ke andar RED = 0 ka kya matlab hai?
Yeh permanently define karta hai ki enumerator RED value 0 ke liye stand kare (ek definition, normal assignment nahi).
"Type" word compiler ko kya batata hai?
Ek box mein kisi value ka kya kind rehta hai aur box kitna bada hai.
Kya ek enum ka underlying integer type int hona guaranteed hai?
Nahi — yeh implementation-defined hai (compiler ek integer type choose karta hai jo kaafi wide ho), toh range aur overflow behaviour bhi.
mein, subscript kya represent karta hai?
Enumerator ki position/index, 0 se count karte hue.
Mapping kya return karta hai?
Woh integer jo -ve enumerator ke liye stand karta hai.
Default enum values ki recurrence words mein batao.
Har enumerator ki value = pehle enumerator ki value + 1.
enum M { A=1, B, C=5, D }; mein, charon values kya hain?
1, 2, 5, 6 — ek explicit value jahan bhi aaye count reset kar deti hai.
Agar ek enum A = -2 se start ho, toh agle do values kya honge?
-1 aur 0 (+1 rule sign ko ignore karta hai).
Kya do enumerators ek hi value share kar sakte hain, jaise A=1, B=1 mein?
Haan — sirf naam unique hone chahiye, values nahi.
= 5000000000 jaisi huge explicit value mein kya galat ho sakta hai?
Yeh implementation-defined underlying type ki range exceed kar sakti hai aur non-portable ya overflow ho sakti hai.
printf("%d", x) mein parentheses kis liye hain?
Yeh woh arguments hold karte hain jo function call ko diye jaate hain.
int days[3]; aur days[2] mein square brackets kya karte hain?
Banate waqt: boxes ki sankhya set karte hain; index karte waqt: position se ek box pick karte hain (0 se).
Ek trailing MONTH_COUNT enumerator item count ke barabar kyun hota hai?
+1 recurrence ise last real item ke ek baad land karaati hai, jo pehle wale kitne the uske barabar hota hai.
Enum aur array dono 0 se count karna kyun shuru karte hain?
Taaki enum values valid array indices ke roop mein line up ho sakein, jisse COUNT-sentinel sizing trick kaam kare.