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;
}
我無法理解工會的目的,並且我通過上面的代碼看到了工會的實施,但感到困惑,請解釋代碼的作用以及工會的工作方式。有人可以解釋工會在這行代碼中如何工作以及如何交換數字?
它本質上是endian轉換短路。如果你檢查c [0]和s的地址,你會發現它們指向內存中的同一個地方。作者這樣做的意思是說:s =((s >> 8)&0x0F)| ((s << 8)&0xF0)。 – Aumnayan