Convert your variable by union
目前我好像沒有看過有人這樣用
這是有一次我寫程式的時候突然想到的
union的用途是讓多個變數或是物件共用同一塊記憶體
然後所占用的空間以最大的為主
我們可以利用這個特性來做一些事情
就是進行單位的換算
#include "stdafx.h"
const int INTEGER_LEN = 4;
class ClassA
{
public:
union
{
int iInteger;
unsigned char ucByte[INTEGER_LEN];
char cChar[INTEGER_LEN];
};
};
int _tmain(int argc, _TCHAR* argv[])
{
ClassA mClassA_;
// 隨便給個值吧
mClassA_.iInteger = 99563;
for(int i=0; i<INTEGER_LEN; i++)
::printf("Byte%d = %d\n", i, mClassA_.ucByte[i]);
::printf("\n");
for(int i=0; i<INTEGER_LEN; i++)
::printf("char%d = %d\n", i, mClassA_.cChar[i]);
::printf("\n");
// 也可以倒過來用
::memcpy(mClassA_.cChar, "ABCD", sizeof(mClassA_.cChar));
for(int i=0; i<INTEGER_LEN; i++)
::printf("Byte%d = %d\n", i, mClassA_.ucByte[i]);
::printf("\n");
::printf("integer = %d\n", mClassA_.iInteger);
::printf("\n");
// 不要理我, 我只是讓程式暫停的迴圈=..=a
char cPause;
do
{
cPause = getchar();
if(cPause == EOF)
break;
} while(cPause != '\n');
return 0;
}
執行的結果