Bird
Raised Fist0
Cprogramming~10 mins

Enum declaration - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Enum declaration
Start
↓
Declare enum with name
↓
List enum members
↓
Assign values (optional)
↓
Use enum variables
↓
End
This flow shows how an enum is declared with members, optionally assigned values, and then used.
Execution Sample
C
enum Color {
  RED,
  GREEN,
  BLUE
};

enum Color c = GREEN;
Declares an enum Color with three members and assigns GREEN to variable c.
Execution Table
StepActionEnum MemberValue AssignedVariableVariable Value
1Declare enum ColorRED0 (default)
2Assign next memberGREEN1 (default increment)
3Assign next memberBLUE2 (default increment)
4Declare variable c of type Colorc
5Assign GREEN to cc1
6End
💡 All enum members assigned default values starting at 0; variable c assigned GREEN (1).
Variable Tracker
VariableStartAfter AssignmentFinal
cuninitialized11
Key Moments - 2 Insights
Why does RED get value 0 automatically?
In the execution_table rows 1-3, enum members get default values starting at 0 and increment by 1 unless explicitly assigned.
What value does variable c hold after assignment?
Row 5 shows c is assigned the value of GREEN which is 1, as tracked in variable_tracker.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what value is assigned to BLUE?
A0
B2
C1
D3
💡 Hint
Check row 3 in execution_table where BLUE is assigned value 2.
At which step is variable c assigned a value?
AStep 5
BStep 4
CStep 3
DStep 2
💡 Hint
Look at execution_table row 5 where c is assigned GREEN.
If RED was assigned value 5 explicitly, what would GREEN's value be?
A5
B0
C6
D1
💡 Hint
Enum values increment by 1 from the previous assigned value, see rows 1-3 for default behavior.
Concept Snapshot
Enum declaration in C:
enum Name { MEMBER1, MEMBER2, ... };
Members get default values starting at 0, increment by 1.
You can assign values explicitly.
Use enum variables to hold these values.
Example: enum Color { RED, GREEN, BLUE };
Full Transcript
This visual execution shows how an enum is declared in C. First, the enum Color is declared with members RED, GREEN, and BLUE. Each member gets a default integer value starting at 0 and increasing by 1. RED is 0, GREEN is 1, and BLUE is 2. Then, a variable c of type Color is declared and assigned the value GREEN, which is 1. The variable tracker shows c changes from uninitialized to 1 after assignment. Key moments clarify why RED starts at 0 and what value c holds. The quiz tests understanding of member values and assignment steps. The snapshot summarizes enum declaration syntax and behavior.

Practice

(1/5)
1. What is the main purpose of using enum in C programming?
easy
A. To declare a function prototype
B. To give names to a set of integer constants for better code readability
C. To create a new data type for floating-point numbers
D. To allocate memory dynamically

Solution

  1. Step 1: Understand enum usage

    An enum is used to assign names to integer constants, making code easier to read and maintain.
  2. Step 2: Compare other options

    Other options describe unrelated concepts: function prototypes, floating-point types, and memory allocation.
  3. Final Answer:

    To give names to a set of integer constants for better code readability -> Option B
  4. Quick Check:

    Enum = Named integer constants [OK]
Hint: Enums name numbers to make code clearer [OK]
Common Mistakes:
  • Confusing enums with structs or unions
  • Thinking enums allocate memory dynamically
  • Assuming enums are for floating-point types
2. Which of the following is the correct syntax to declare an enum named Color with values RED, GREEN, and BLUE?
easy
A. enum Color { RED, GREEN, BLUE };
B. enum Color = { RED, GREEN, BLUE };
C. enum Color ( RED, GREEN, BLUE );
D. enum Color: RED, GREEN, BLUE;

Solution

  1. Step 1: Recall enum declaration syntax

    The correct syntax uses curly braces to list values after the enum name without assignment or colons.
  2. Step 2: Check each option

    enum Color { RED, GREEN, BLUE }; uses correct syntax: enum Color { RED, GREEN, BLUE };. Others use invalid symbols like '=', '(', or ':'.
  3. Final Answer:

    enum Color { RED, GREEN, BLUE }; -> Option A
  4. Quick Check:

    Enum syntax = enum Name { values } [OK]
Hint: Use curly braces and no equals sign in enum declaration [OK]
Common Mistakes:
  • Using '=' instead of braces
  • Using parentheses instead of braces
  • Using colons after enum name
3. What will be the output of the following C code?
enum Day { SUN, MON, TUE = 5, WED, THU };
#include 
int main() {
    printf("%d %d %d %d %d", SUN, MON, TUE, WED, THU);
    return 0;
}
medium
A. 0 1 5 5 5
B. 0 1 2 3 4
C. 1 2 5 6 7
D. 0 1 5 6 7

Solution

  1. Step 1: Understand enum value assignment

    By default, enum values start at 0 and increment by 1. Here, SUN=0, MON=1. TUE is explicitly set to 5.
  2. Step 2: Calculate following values

    After TUE=5, WED becomes 6, and THU becomes 7 automatically.
  3. Final Answer:

    0 1 5 6 7 -> Option D
  4. Quick Check:

    Explicit enum value sets next values incrementally [OK]
Hint: Explicit enum value resets counting from that number [OK]
Common Mistakes:
  • Assuming all values increment from zero ignoring explicit assignment
  • Thinking WED and THU have same value as TUE
  • Starting enum values from 1 by default
4. Identify the error in the following enum declaration:
enum Status {
    OK = 1,
    ERROR,
    WARNING = "2"
};
medium
A. ERROR must be assigned a value explicitly
B. Missing semicolon after enum declaration
C. Enum values must be integers, not strings
D. Enum names cannot be uppercase

Solution

  1. Step 1: Check enum value types

    Enum values must be integer constants. Assigning a string like "2" is invalid.
  2. Step 2: Verify other parts

    Semicolon is present, uppercase names are allowed, and ERROR can be auto-assigned after OK=1.
  3. Final Answer:

    Enum values must be integers, not strings -> Option C
  4. Quick Check:

    Enum values = integers only [OK]
Hint: Enum values must be integers, not strings [OK]
Common Mistakes:
  • Using string literals as enum values
  • Forgetting semicolon after enum
  • Thinking enum names must be lowercase
5. Given the enum declaration:
enum Flags { FLAG_A = 1 << 0, FLAG_B = 1 << 1, FLAG_C = 1 << 2 };

int flags = FLAG_A | FLAG_C;
Which expression correctly checks if FLAG_B is set in flags?
hard
A. (flags & FLAG_B) != 0
B. (flags | FLAG_B) == 0
C. (flags & FLAG_B) == FLAG_B + 1
D. (flags ^ FLAG_B) == 0

Solution

  1. Step 1: Understand bitwise flag checking

    To check if a flag is set, use bitwise AND and compare to zero.
  2. Step 2: Analyze each option

    (flags & FLAG_B) != 0 correctly checks if FLAG_B bit is set by (flags & FLAG_B) != 0. Others use incorrect bitwise operations or comparisons.
  3. Final Answer:

    (flags & FLAG_B) != 0 -> Option A
  4. Quick Check:

    Bitwise AND with flag and compare to zero [OK]
Hint: Use bitwise AND and compare to zero to check flags [OK]
Common Mistakes:
  • Using bitwise OR instead of AND for checking
  • Comparing to wrong values
  • Using XOR to check flags
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard