考虑以下两个无用的C++函数.
使用GCC(4.9.2,32或64位)编译时,两个函数都返回与预期相同的值.
使用Visual Studio 2010或Visual Studio 2017(非托管代码)编译,两个函数都返回不同的值.
我尝试过的:
这里发生了什么?这似乎是VS中的一个基本错误.
char test1()
{
char buf[] = "The quick brown fox...", *pbuf = buf;
char value = (*(pbuf++) & 0x0F) | (*(pbuf++) & 0xF0);
return value;
}
char test2()
{
char buf[] = "The quick brown fox...", *pbuf = buf;
char a = *(pbuf++) & 0x0F;
char b = *(pbuf++) & 0xF0;
char value = a | b;
return value;
}
Run Code Online (Sandbox Code Playgroud)
编辑: