代碼:
BYTE by = 0xBC;
std:vector<char> ch(2);
ch[0] = 0xBC;
if(ch[0] == by)
{
printf("Is same.\n");
}
else
{
printf("Not same.\n");
}
運行結果:
Not same.
將std:vector<char> ch(2);換成std:vector<BYTE> ch(2);
結果為:Is same.
查看了匯編代碼:
發現,使用char型時,直接一個movsx指令將容器中的數據裝入CX;使用BYTE型時,先將CX清零,再把數據裝入CL。
這算是編譯器的Bug呢,還是本來就需要注意的問題呢?
有興趣的兄弟試試,我也想知道結果。