lau*_*svr 5 c++ binary casting bitset
使用表示位的无符号字符数组。我遇到了以下问题。在MSVC 2013上投放std::bitset<8>为char,然后返回。似乎是一件有效的事情。
但是在C ++ 11 ISO标准中。我找不到有效的参考。根据我的能力,一个std::bitset仅仅是一个bool数组。随着更多的内存经济实施和围绕它的一些功能。
简而言之,我的问题是:下面的代码有效吗?
unsigned char* myChar = new unsigned char(0x0F);
((std::bitset<8>*)myChar)->set(2);
((std::bitset<8>*)myChar)->reset(6);
std::cout << "expression result:" << (uint8_t)*myChar;
Run Code Online (Sandbox Code Playgroud)
这是未定义的行为。该标准仅规定
类模板
bitset<N>描述了一个对象,该对象可以存储由固定位数组成的序列,N。
它没有说明这个类的内部布局。没有人保证是sizeof(bitset<8>)这样1。在我的实现中,它恰好是8. 因此,您对此类内部所做的任何假设都只是一个假设。如果您想将 an 转换unsigned char为 a bitset<8>,已经有一个简单的方法可以做到这一点:
unsigned char myChar = 0x0F;
std::bitset<8> bs(myChar);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1846 次 |
| 最近记录: |