Enumeration is very important, especially in the early application development, the server-side data format needs to be changed, the enumeration and macros can be the program concise, and small changes.
Online has a personal writing concise, suitable for beginners
Transferred from: http://blog.csdn.net/ysy441088327/article/details/8012677
Preface: Egg-Ache enumeration, do not underestimate! Get to the point: the first thing to know is that the enumeration value is a shape (int) and that it does not participate in memory consumption and frees enumeration definition variables to be used directly without initialization. The enumeration is defined as follows:
typedef ENUM {
The following is an enumeration member TestA = 0,
TESTB,
TESTC,
TestD
}TEST;//Enumeration Name
can also be defined as follows (recommended: the structure is clearer):
typedef Ns_enum (Nsinteger, Test1) {
The following is an enumeration member
TEST1A = 0,
TEST1B = 1,
test1c = 2,
TEST1D = 3
};
The definition of an enumeration also supports the way in which bit operations are defined, as follows: The equals sign must be equal to 1
typedef Ns_enum (Nsinteger, Test) {
TestA = 1,//1 1 1
TESTB = 1 << 1,//2 2 10 converted to 10 binary 2
TESTC = 1 << 2,//4 3 100 converted to 10 binary 4
TestD = 1 << 3,//8 4 1000 converted to 10 Binary 8
Teste = 1 << 4//16 5 10000 converted to 10 binary 16
};
When do you want to use this method? That's when an enumeration variable might represent multiple enumeration values. In fact, when assigning multiple enumeration values to an enumeration variable, the principle simply adds up the individual enumeration values. When you add up, you get a new value, and in order to ensure the uniqueness of this value, this time it is the important function of the bit operation. Bitwise operations ensure uniqueness of the combination of enumeration values. Because the bitwise operation is computed by converting the binary to decimal, that is, the computed decimal value is accessed in the enumeration value. To make an analogy: After the enumeration is set by the bitwise operation above, the printed enumeration values are: 1 2 4 8 16 These 5 numbers, no matter how you combine them, will not produce two of the same numbers.
Multiple enumeration values are assigned as follows:
Test tes = (testa| TESTB);
To determine if an enumeration variable contains a fixed enumeration value, you need to ensure the enumeration values and the uniqueness of each combination before use:
NSLog (@ "%d%d%d%d%d", testa,testb,testc,testd,teste);
Test tes = (testa| TESTB); NSLog (@ "%d", TES);
NSLog (@ "%d", (TES & TestA));
if (tes & TestA) {NSLog (@ "has");}
else {NSLog (@ "not");} NSLog (@ "%d", (TES & TESTB));
if (tes & TestA) {NSLog (@ "has");}
else {NSLog (@ "not");}
NSLog (@ "%d", (TES & TESTC));
if (tes & TESTC) {NSLog (@ "has");}
else {NSLog (@ "not");}
If not included, returns 0, 0 means false No then goes to else you can also accumulate a value for the enumeration variable at any time, but you have to control not to add an enumerated value that has already been added, the value of the enumeration variable will not change, but this will mislead the person reading the Code
There is accumulation, naturally have to lose, if the decrement of the enumeration value does not exist, then this time the decrement of the enumeration value will be automatically added up.
Tes^= Teste;