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