【勘误&请教】C++基础语法38

#174 · open · 1 comments

View on GitHub ↗

YukiLauuu

``` include <iostream> using namespace std; //union联合体的重叠式存储,endian联合体占用内存的空间为每个成员字节长度的最大值 union endian { int a; char ch; }; int main() { endian value; value.a = 0x1234; //a和ch共用4字节的内存空间 if (value.ch == 0x12) cout << "big endian"<<endl; else if (value.ch == 0x34) cout << "little endian"<<endl; } ``` 在示例代码中,value.a的值被设置为0x1234,该值仅占用了16bit,因此大端的内存布局是: ``` p[0] = 0x00 p[1] = 0x00 p[2] = 0x12 p[3] = 0x34 ``` 从而判断为大端的条件应该是value.ch==0x00。 将示例的value.a修改为0x12345678是否更为合适?修改后如下所示: ``` #include <iostream> using namespace std; //union联合体的重叠式存储,endian联合体占用内存的空间为每个成员字节长度的最大值 union endian { int a; char ch; }; int main() { endian value; value.a = 0x12345678; //a和ch共用4字节的内存空间 if (value.ch == 0x12) cout << "big endian"<<endl; else if (value.ch == 0x78) cout << "little endian"<<endl; } ```

Comments

1031507008

这是来自QQ邮箱的假期自动回复邮件。   您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。