我的印象是访问union除最后一个成员之外的成员是UB,但我似乎无法找到一个可靠的参考(除了声称它是UB但没有标准支持的答案).
那么,这是不确定的行为?
我正在考虑一个非常具体的(现在无用的)处理器,称为土星.
该CPU的一个奇怪特性是它的元素单位是半字节(4位),而不是字节(8位).它不只是化妆品,任何指针值都以半字节表示.
有一次尝试为土星创建一个C编译器:hp48xgcc
看一下它的文档,我注意到它的基本类型遵循通常的GCC约定,使用char 8位.此时,我想知道:CHAR_BIT是否有意提供元素单元的大小?GCC自己的文档似乎暗示了这一点:
You can compute the number of bits in any data type like this:
sizeof (type) * CHAR_BIT
Run Code Online (Sandbox Code Playgroud)
在这种情况下,考虑到Saturn架构,最好让CHAR_BIT = 4
或者我是否误解了CHAR_BIT的含义?