通过未定义的无符号整数读取无符号字符数组是否不安全?

Is reading an unsigned char array through an unsigned integer undefined and thus not safe?

我阅读了 this 问题,对我必须用我的代码做什么感到非常困惑。如果我的阅读是正确的,那么根据当前标准,我下面的代码是未定义的。以下是我需要的一切,我真的找不到更好的方法来做到这一点。将左移与 OR 一起使用绝对不是我想要的。就这样放着就好了吗?

编辑:是的,我在设置 rbg 而不是 n.

的值后阅读 n
union Pixel {
    unsigned char rgb[4];
    uint32_t n;

    Pixel():
    n(0) {}
};

这是 C++ 的一部分,它比遵循标准更容易检查您的编译器在做什么。据我所知,大多数编译器仍然按照您的期望进行操作(MSVC、GCC、CLANG)。你在想什么深奥的东西吗?

在下面link 中提到 Sun C++ 编译器不工作:

http://blog.regehr.org/archives/959