2
#include<iostream>
using namespace std;
union swap_byte { //This code is for union
public:
void swap();
void show_byte();
void set_byte(unsigned short x);
unsigned char c[2];
unsigned short s;
};
void swap_byte::swap() //swaping the declared char c[2]
{
unsigned char t;
t = c[1];
c[1] = c[0];
c[0] = t;
}
void swap_byte::show_byte()
{
cout << s << "\n";
}
void swap_byte::set_byte(unsigned short x) //input for the byte
{
s = x;
}
int main()
{
swap_byte b;
b.set_byte(49034);
b.show_byte();
b.swap();
b.show_byte();
cin.get();
return 0;
}
私は組合の目的を理解することができず、上記のコードで組合の実装を見ましたが、コードが何をしているのか、どのように組合が働いているのかを説明してください。このコード行でどのように労働組合がどのように機能し、数字がスワップされているか説明できますか?
本質的にショートを変換するエンディアンです。 c [0]とsのアドレスを調べると、メモリ内の同じ場所を指していることがわかります。作者はこれを次のように言っています:s =((s >> 8)&0x0F)| ((s << 8)&0xF0)。 – Aumnayan