C 与处理器或数据类型相关的Endianess

C 与处理器或数据类型相关的Endianess,c,endianness,C,Endianness,我正在使用little endian处理器PIC 32,并且正在查看BOOL类型的变量。一个变量初始化为TRUE,另一个变量初始化为false static BOOL A = TRUE; BOOL static B = FALSE; 在内存中当我在内存中查找变量A时,它显示 看起来处理器只是为true和false分配了一个32位的数字,而不是8位,这意味着它依赖于处理器。 对于类型为BOOL的6个元素的数组,所有元素都设置为TRUE。怎么读呢?它会显示为上图所示的6个元素吗 BOOL不是标准

我正在使用little endian处理器PIC 32,并且正在查看BOOL类型的变量。一个变量初始化为TRUE,另一个变量初始化为false

static BOOL A = TRUE;
BOOL static B = FALSE;
在内存中当我在内存中查找变量A时,它显示

看起来处理器只是为true和false分配了一个32位的数字,而不是8位,这意味着它依赖于处理器。
对于类型为BOOL的6个元素的数组,所有元素都设置为TRUE。怎么读呢?它会显示为上图所示的6个元素吗

BOOL
不是标准类型。取决于在您的环境中如何定义它,可能是通过头文件中的
typedef
定义的,它可以是任何整数类型,包括
unsigned char
,在您的系统中使用1字节或
int
,在其他体系结构中使用4字节和其他大小。

为什么不试试它?您怎么知道它分配了32位?这看起来像是一个8位bool,后面跟着另外三个零,比如
B
为false。Is是C标准,依赖于实现的C不定义类型
bool
。它定义了
\u Bool
,并且
stdbool.h
定义了
Bool
。你的
BOOL
typedef是什么样子的?虽然你现在可以写
int long unsigned const long static u=23,您不应该这样做。有趣的是,GCC 7.1.0在使用
-Werror-Wold样式声明运行时不允许它:
错误:“static”不在声明的开头[-Werror=old-style声明]
。(并且
-Wextra
包括
-Wold样式声明
(至少在GCC 7.1.0中是这样),因此您不必单独添加它。)