• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 359
  • Last Modified:

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

what is enum and how do I use it?
0
Troudeloup
Asked:
Troudeloup
  • 6
  • 5
6 Solutions
 
Jaime OlivaresCommented:
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
 
ozoCommented:
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
 
TroudeloupAuthor Commented:
can you show me a small piece of code?  (as small as possible, like, 3 values.)
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
TroudeloupAuthor Commented:
#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
 
Jaime OlivaresCommented:
little example:

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

enum rainbowcolors trafficlights = red;
0
 
TroudeloupAuthor Commented:
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
 
Jaime OlivaresCommented:
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
 
TroudeloupAuthor Commented:
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
 
Jaime OlivaresCommented:
>>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
 
TroudeloupAuthor Commented:
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
 
Jaime OlivaresCommented:
yes, you can't do it

and

yes, you don't need the quotes
0
 
TroudeloupAuthor Commented:
thank you all SO much !
0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

  • 6
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now