Bird
Raised Fist0
C Sharp (C#)programming~20 mins

Underlying numeric values in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Enum Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this enum underlying value code?

Consider the following C# code that defines an enum and prints its underlying numeric value. What will be printed?

C Sharp (C#)
enum Color { Red = 1, Green = 2, Blue = 4 }

class Program {
    static void Main() {
        Color c = Color.Blue;
        Console.WriteLine((int)c);
    }
}
A3
B0
C2
D4
Attempts:
2 left
💡 Hint

Look at the value assigned to Blue in the enum.

❓ Predict Output
intermediate
2:00remaining
What is the output when casting enum with default underlying values?

Given this enum and code, what number is printed?

C Sharp (C#)
enum Status { Pending, Approved, Rejected }

class Program {
    static void Main() {
        Status s = Status.Approved;
        Console.WriteLine((int)s);
    }
}
A2
B0
C1
D3
Attempts:
2 left
💡 Hint

Enums start numbering from 0 by default unless specified.

❓ Predict Output
advanced
2:00remaining
What is the output of this enum with mixed explicit and implicit values?

Analyze this code and determine the output printed.

C Sharp (C#)
enum Level { Low = 3, Medium, High = 10, Critical }

class Program {
    static void Main() {
        Console.WriteLine((int)Level.Medium);
        Console.WriteLine((int)Level.Critical);
    }
}
A4 and 11
B3 and 10
C4 and 10
D3 and 11
Attempts:
2 left
💡 Hint

Implicit values increment from the previous value.

🧠 Conceptual
advanced
1:30remaining
Which underlying type is used by default for enums in C#?

In C#, if you do not specify an underlying type for an enum, which numeric type does it use by default?

Ashort
Bint
Cbyte
Dlong
Attempts:
2 left
💡 Hint

Think about the most common integer type in C#.

❓ Predict Output
expert
2:30remaining
What is the output of this code using Flags attribute and bitwise operations?

Consider this enum with the [Flags] attribute and the code below. What will be printed?

C Sharp (C#)
[Flags]
enum Permissions {
    None = 0,
    Read = 1,
    Write = 2,
    Execute = 4
}

class Program {
    static void Main() {
        Permissions p = Permissions.Read | Permissions.Write;
        Console.WriteLine((int)p);
    }
}
A3
B1
C2
D4
Attempts:
2 left
💡 Hint

Bitwise OR combines the numeric values.

Practice

(1/5)
1. What is the underlying numeric value of an enum member in C# if not explicitly set?
easy
A. It starts at 0 and increments by 1 for each member
B. It is always 1 for all members
C. It is a random number assigned by the compiler
D. It must be manually assigned for each member

Solution

  1. Step 1: Understand default enum numbering

    By default, C# assigns the first enum member the value 0.
  2. Step 2: Check subsequent members

    Each following member increments by 1 automatically unless explicitly set.
  3. Final Answer:

    It starts at 0 and increments by 1 for each member -> Option A
  4. Quick Check:

    Default enum values start at 0 and increment [OK]
Hint: Remember enums start at zero unless you say otherwise [OK]
Common Mistakes:
  • Thinking enums start at 1 by default
  • Assuming enum values are random
  • Believing manual assignment is always required
2. Which of the following is the correct way to get the numeric value of an enum member Day.Monday in C#?
easy
A. int value = Convert.ToInt32(Day.Monday.ToString());
B. int value = Day.Monday.ToInt();
C. int value = Day.Monday.Value;
D. int value = (int)Day.Monday;

Solution

  1. Step 1: Recall casting enum to int

    In C#, you get the numeric value by casting the enum member to int using (int).
  2. Step 2: Check other options

    Enums have no ToInt() method or Value property; Convert.ToInt32(Day.Monday.ToString()) parses the name ("Monday") and throws FormatException.
  3. Final Answer:

    int value = (int)Day.Monday; -> Option D
  4. Quick Check:

    Cast enum to int with (int) [OK]
Hint: Cast enum to int with (int) to get its number [OK]
Common Mistakes:
  • Using non-existent methods like ToInt()
  • Trying to access a Value property
  • Converting enum.ToString() to int (parses name)
3. Given the enum:
enum Color { Red = 3, Green, Blue }

What is the output of this code?
Console.WriteLine((int)Color.Green);
medium
A. 4
B. 3
C. 1
D. 0

Solution

  1. Step 1: Identify explicit enum value

    Color.Red is set to 3 explicitly.
  2. Step 2: Understand implicit increment

    Color.Green is next, so it gets 4 (3 + 1).
  3. Final Answer:

    4 -> Option A
  4. Quick Check:

    Enum increments from explicit value [OK]
Hint: Next enum value increments by 1 from previous explicit value [OK]
Common Mistakes:
  • Assuming Green is 1 by default
  • Thinking Green equals Red's value
  • Forgetting implicit increment after explicit value
4. What is wrong with this code snippet?
enum Status { Active = 1, Inactive = 1, Pending = 2 }
medium
A. Enum members cannot have duplicate values
B. Nothing is wrong; duplicate values are allowed
C. Enum members must be strings, not numbers
D. Enum members must be assigned sequentially starting at 0

Solution

  1. Step 1: Check enum value rules

    C# allows enum members to share the same underlying numeric value.
  2. Step 2: Verify other options

    Enum members can be numbers, do not need sequential values, and duplicates are allowed.
  3. Final Answer:

    Nothing is wrong; duplicate values are allowed -> Option B
  4. Quick Check:

    Duplicate enum values are valid in C# [OK]
Hint: Duplicate enum values are allowed in C# [OK]
Common Mistakes:
  • Thinking duplicate enum values cause errors
  • Believing enums must start at 0 and be sequential
  • Confusing enum members with strings
5. You have this enum:
enum Level { Low = 1, Medium = 5, High = 10 }

Which code correctly checks if an integer variable score matches any enum value?
hard
A. bool isMatch = score >= (int)Level.Low && score <= (int)Level.High;
B. bool isMatch = (Level)score != null;
C. bool isMatch = Enum.IsDefined(typeof(Level), score);
D. bool isMatch = score == Level.Low || score == Level.Medium || score == Level.High;

Solution

  1. Step 1: Understand Enum.IsDefined usage

    Enum.IsDefined checks if a given integer matches any enum member's underlying value.
  2. Step 2: Analyze other options

    A checks range (includes invalid like 2); B casts int to enum (always succeeds) != null (always true); C direct int == enum comparisons do not compile without casting enum to int.
  3. Final Answer:

    bool isMatch = Enum.IsDefined(typeof(Level), score); -> Option C
  4. Quick Check:

    Use Enum.IsDefined to check valid enum values [OK]
Hint: Use Enum.IsDefined to check if int matches enum value [OK]
Common Mistakes:
  • Casting int to enum without validation
  • Checking range instead of exact enum values
  • Comparing int directly to enum members without casting
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