字节在msvc下变换

时间:2015-05-15 18:18:51

标签: visual-c++ gcc integer byte

我有一个缓冲区,其中前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;
}

0 个答案:

没有答案