Solved

[noob][c++] what is enum and how do I use it?

Posted on 2007-11-15
12
345 Views
Last Modified: 2009-12-16
what is enum and how do I use it?
0
Comment
Question by:Troudeloup
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
12 Comments
 
LVL 55

Assisted Solution

by:Jaime Olivares
Jaime Olivares earned 450 total points
ID: 20295524
enum is an integral data type that admit just a limited collection of values, each value has a name, asociated with a the itself.
Have a look to this tutorial:
http://www.cprogramming.com/tutorial/enum.html
0
 
LVL 84

Assisted Solution

by:ozo
ozo earned 50 total points
ID: 20295783
6.7.2.2 Enumeration specifiers
Syntax
1 enum-specifier:
enum identifieropt { enumerator-list }
enum identifieropt { enumerator-list , }
enum identifier
enumerator-list:
enumerator
enumerator-list , enumerator
enumerator:
enumeration-constant
enumeration-constant = constant-expression
Constraints
2 The expression that defines the value of an enumeration constant shall be an integer
constant expression that has a value representable as an int.
Semantics
3 The identifiers in an enumerator list are declared as constants that have type int and
may appear wherever such are permitted.107) An enumerator with = defines its
enumeration constant as the value of the constant expression. If the first enumerator has
no =, the value of its enumeration constant is 0. Each subsequent enumerator with no =
defines its enumeration constant as the value of the constant expression obtained by
adding 1 to the value of the previous enumeration constant. (The use of enumerators with
= may produce enumeration constants with values that duplicate other values in the same
enumeration.) The enumerators of an enumeration are also known as its members.
4 Each enumerated type shall be compatible with char, a signed integer type, or an
unsigned integer type. The choice of type is implementation-defined,108) but shall be
capable of representing the values of all the members of the enumeration. The
enumerated type is incomplete until after the } that terminates the list of enumerator
declarations.
0
 

Author Comment

by:Troudeloup
ID: 20298540
can you show me a small piece of code?  (as small as possible, like, 3 values.)
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:Troudeloup
ID: 20298637
#include <iostream>
using namespace std;
 
enum e_usflcnst{
      CATLIFE_FACTOR = 7
};
 
int main()
{
      int age;
      cout << "Enter your age: ";
      cin >> age;
      age /= CATLIFE_FACTOR;
      cout << "If you were cat, you would be " << age << endl;
}







this makes sense,

but what I don't undersrtand it,  why not just use a variable for the factor?

also, what role does e_usflcnst  play here?
0
 
LVL 55

Assisted Solution

by:Jaime Olivares
Jaime Olivares earned 450 total points
ID: 20299424
little example:

enum rainbowcolors { red, orange, yellow, green,  blue, indigo, violet  }

enum rainbowcolors trafficlights = red;
0
 

Author Comment

by:Troudeloup
ID: 20305571
i don't understand,

I get it that raidbowcolors is a enum type (just like int and double, it's a type of variable ) with elements (colors)


but then how are you using it?
0
 
LVL 55

Assisted Solution

by:Jaime Olivares
Jaime Olivares earned 450 total points
ID: 20305591
is like integers, but you cannot assign a value different that those from the list.

you will find in some typical blocks like this:

switch (trafficlights)
{
      case orange:
            cout << "careful!";
           break;
   case green:
        cout << "pass";
        break;
   case red:
       cout << "STOP";
       break;
    default:
      cout << "system malfunction!";
}


}
0
 

Author Comment

by:Troudeloup
ID: 20305613
is it like a way to use strings without having to use string variables?



so a type rainbow can have only those variants of colors , can I alter rainbow afterwards?
0
 
LVL 55

Assisted Solution

by:Jaime Olivares
Jaime Olivares earned 450 total points
ID: 20305627
>>is it like a way to use strings without having to use string variables?
yes, it is more verbose than using 1 for orange, 2 for green, and 3 for red

>>so a type rainbow can have only those variants of colors , can I alter rainbow afterwards
no, you cannot
0
 

Author Comment

by:Troudeloup
ID: 20305634
also, I have to assign only those elements I already define in the enum type right?

for instance I can't do


rainbow trafficlights = silver



also, I don't need to quote colors?
0
 
LVL 55

Accepted Solution

by:
Jaime Olivares earned 450 total points
ID: 20305652
yes, you can't do it

and

yes, you don't need the quotes
0
 

Author Comment

by:Troudeloup
ID: 20305656
thank you all SO much !
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you haven’t already, I encourage you to read the first article (http://www.experts-exchange.com/articles/18680/An-Introduction-to-R-Programming-and-R-Studio.html) in my series to gain a basic foundation of R and R Studio.  You will also find the …
Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
The viewer will learn how to implement Singleton Design Pattern in Java.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

690 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question