Worked examples — Enumerations
5.1.25 · D3· Coding › C Programming › Enumerations
Yeh page ek shooting range hai: hum har tarah ki enum situation list karte hain jo C aapke saamne rakh sakta hai, phir har ek ko fully worked example se knock down karte hain. Agar aapne abhi tak nahi dekha ki enums kaise count karte hain, toh pehle parent note padho: Enumerations.
Shuru karne se pehle, ek promise us parent note se jo hum baar baar use karenge:
Neeche sab kuch is hi rule ka application hai, lekin increasingly tricky inputs par.
Scenario matrix
Samjho ki har enum jo aap kabhi bhi milenge woh in cells mein se kisi ek mein land karti hai. Hamara kaam hai inhe saare hit karna.
| # | Case class | Kya tricky hai | Kaun cover karta hai |
|---|---|---|---|
| A | Pure defaults | seedha 0,1,2,… counting | Ex 1 |
| B | Explicit start, phir resume | +1 rule kisi bhi number se continue hoti hai | Ex 2 |
| C | Negative explicit value | counting abhi bhi +1 hai, zero se neeche se | Ex 3 |
| D | Duplicate values | do naam, ek integer — legal hai | Ex 4 |
| E | Zero / empty-ish & sentinel | trailing COUNT ek array ko size karta hai |
Ex 5 |
| F | Out-of-range assignment | enum c = 99; — "no type safety" ka edge case |
Ex 6 |
| G | Real-world word problem | enum vs magic numbers mein se choose karna | Ex 7 |
| H | Exam twist — mixed = aur gaps |
poori chain haath se trace karo | Ex 8 |
Neeche Cells A–H har ek label ki gayi hain. Saath milke yeh defaults, explicit, resumed, negative, duplicate, zero/sentinel, degenerate/out-of-range, real-world, aur exam-style cover karti hain — koi bhi scenario chhuta nahi.
Neeche figure woh mental model dikhati hai jo hum har jagah use karte hain: number line par named sticky-notes.

Worked examples
Sentinel trick ek picture ki haqdar hai — aakhri note ek tally hai, koi din nahi:

Problem: Ek vending machine states ke through cycle karti hai: waiting, coin inserted, dispensing, out-of-stock. Aapko (a) states model karni hain aur (b) ek int timeInState[...] array size karni hai jo log kare ki usne har state mein kitne seconds bitaye. Enum use karo. Array size do.
Forecast: kaun sa enum layout aapko array size for free deta hai?
- States ko trailing sentinel wale enum se model karo:
Yeh step kyun? Names magic numbers se behtar hote hain (parent note) aur sentinel log ko auto-size karta hai — states par switch statement bhi readable rehta hai.enum State { WAITING, COIN_IN, DISPENSING, OUT_OF_STOCK, STATE_COUNT }; int timeInState[STATE_COUNT]; - Values:
WAITING=0, COIN_IN=1, DISPENSING=2, OUT_OF_STOCK=3, isliyeSTATE_COUNT = 3 + 1 = 4. Yeh step kyun? Default +1 counting; sentinel = 4 real states ki count. timeInStatemein isliye 4 elements hain, indices 0–3, ek har real state ke liye. Yeh step kyun? Ek slot per state, enum se index karke —timeInState[DISPENSING]English ki tarah padhta hai.
Verify: 4 real states → STATE_COUNT = 4 → array length 4. ✅
= aur gaps)
enum Q { A, B = 4, C, D = B, E, F = -1, G };Forecast: trace karne se pehle A,B,C,D,E,F,G likh lo.
A = 0(pehla, plain). Yeh step kyun? Pehla un-initialised enumerator 0 hota hai.B = 4(explicit). Anchor 4.C = 4 + 1 = 5(plain). Yeh step kyun?Bse +1.D = B.Bek compile-time constant hai jo 4 ke barabar hai, isliyeD = 4. Yeh step kyun? Ek enumerator ka initialiser doosre enumerator ki value ho sakta hai — yeh ek constant expression hai. AbD,Bki value duplicate karta hai (legal!).E = D + 1 = 5(plain). Yeh step kyun? Pichle enumerator ki value se +1 (D = 4hai), jo 5 deta hai — abE,Cko duplicate karta hai!F = -1(explicit). Anchor .G = -1 + 1 = 0(plain) —Ako duplicate karta hai. Yeh step kyun?Fse +1, 0 tak upar chalte hue.
Verify: A=0, B=4, C=5, D=4, E=5, F=-1, G=0. Teen "accidental" duplicate pairs (B&D, C&E, A&G) sab legal hain. ✅
Active recall
Recall Har cell ke liye ek line — matrix yaad se cover karo
- Cell A:
enum {X,Y,Z};meinZki value? → 2 - Cell B:
enum {P=200,Q,R};meinRki value? → 202 - Cell C:
enum {N=-3,M};meinMki value? → -2 - Cell D: kya do enumerators dono 5 ke barabar ho sakte hain? → Haan
- Cell E:
enum{A,B,C,COUNT};meinCOUNTki value? → 3 - Cell F: kya
enum Color c = 99;compile hota hai? → Haan, 99 print karta hai - Cell H:
enum{J,K=4,L,M=J};meinMki value? → 0 (J=0)
Trace-the-chain drills:
enum {A, B=4, C}; mein C ki value
enum {N=-3, M}; mein M ki value
Kya enum X { A=5, B=5 }; legal hai?
enum{RED,GREEN,BLUE,COUNT}; mein COUNT kya hai?
Kya enum Color c = 99; C mein compile hota hai?
"Zero start, plus-one heart, explicit can restart — names unique, values may repeat, sentinels count your seat."
Connections
- Enumerations — parent note; yeh page uska worked-examples annex hai.
- Integer Types in C — kyun
sizeof(int)ne Ex 5 mein array-byte counts diye. - switch statement — Ex 7 ki state machine enum par switch hoti hai.
- Arrays in C — sentinel-sizing trick (Ex 5, Ex 7).
- struct in C — ek enum "tag" ko struct ke saath pair karo tagged unions ke liye.
- typedef —
typedef enum {...} State;Ex 7 meinenumkeyword hata deta hai.