简体   繁体   中英

what is the default value of enum variable?

I have a question about enum variable in c++:

type enmu {
   DAY1 = 1,
   DAY2,
   DAY3,
   DAY4
} DAYS;

void main() {
   DAYS days;
}

then what is the default value of days?

It's uninitialized and undefined behavior to read the value.

Just like saying

int x;

x doesn't have a value until you initialize it.

then what is the default value of days?`

Like for any automatic object, the value of the days object is indeterrminate.

Now if you declared your object with the static specifier:

static DAYS days;

Then like for any static object of an arithmetic type, the initial value would be 0 .

Enumerations behave pretty much like integers, ie they don't have a well-defined default value. You cannot read the variable's value before initializing it without invoking undefined behavior.

BTW, adding to the words, said before: you really do may have default value for a static enum variable. But be carefull -- it will be 0 (as well as all other static variables). Consider following code:

#include <iostream>

enum _t_test {
                test_1 = 1,
                test_2 = 2,
                test_3 = 3,
             };

static enum _t_test t;

int main()
{
    using namespace std;
    cout << "Value of t is: " << t;
    return 0;

}

It will print 0, but your enums are in range from 1..3. So be aware of it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM