我有一个缓冲区,其中前4个字节表示无符号的32位整数。 缓冲区看起来像这样{32,0,0,0,...}
以下代码在gcc下运行没有任何问题:
uint32_t size = buffer[0] | (buffer[1] << 8) | (buffer[2] << 16) | (buffer[3] << 24);
大小如预期的那样是32,但如果我用msvc编译项目的大小是538976288而不是32。
有什么问题?
编辑:
测试的完整源代码:
#include <stdint.h>
#include <stdio.h>
int main()
{
int pos = 0;
uint32_t buffer [] = {32, 0, 0, 0};
uint32_t size = buffer[pos++] | (buffer[pos++] << 8) | (buffer[pos++] << 16) | (buffer[pos++] << 24) ;
printf("size=%d\n", size);
return 0;
}