У меня есть enum class
:
enum class myEnum : u8{
LEVEL_ERROR = 0,
LEVEL_WARN = 50,
LEVEL_DEBUG = 150,
};
и в какой-то момент я этим воспользовался (не совсем так, а просто так):
myEnum instance = 42;
printf("My enum is now: %u", instance);
РЕДАКТИРОВАТЬ : Конечно, это используется следующим образом: myEnum instance = (myEnum)42;
И напечатанное значение иногда 298
иногда 126657066
, но никогда 42
. Итак, что я заметил, так это то, что все эти «случайные» числа являются моими значениями, но дополнены 3 байтами чего угодно (стека?) - 42 = 0x2A
, 298 = 0x12A
и 126657066 = 0x78CA22A
. Я понимаю, что мой тип повышается до int, но он должен быть дополнен 3 байтами "0" в случае типа переменной без знака. Так почему же там мусор?