我有一个在C++11中的类:
class MyTable
{
public:
enum class EntryType
{
USED, FREE
};
MyTable(EntryType value)
{
for (uint32_t i = 0; i < 10; ++i)
{
memset(_table[i].data(), (int)value, sizeof(_table[0][0]) * 50);
}
}
array<array<EntryType, 50>, 10> _table;
}
尝试使用EntryType::FREE构造MyTable对象时,二维数组中每个项目的值都为0x01010101(每8位1b),而不是预期的0x1。我猜测这与我的"value"被强制转换为"int"有关,但我不知道该怎么做才能解决它。
memset
函数的作用,它逐字节地进行初始化。 - Kinan Al Sarminimemset()
将1
设置为int
类型,它将是0x01010101
,这是定义行为。 - renzosizeof(int)
并不一定是16位,正如该十六进制模式所暗示的那样。 - underscore_d