代码:
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呢,还是本来就需要注意的问题呢?
有兴趣的兄弟试试,我也想知道结果。