C标准在许多不同的地方使用字节字。通常,这与我对这个词的理解非常相似-8位长的数据块。
但是:
sizeof运算符产生其操作数的大小(以字节为单位)
并且:
将sizeof应用于具有char类型的操作数(无符号)时 char或签名的char(或其限定版本),结果为1
稍后:
应用于具有数组类型的操作数时,结果为 数组中的字节总数。
因此,如果我们认为char
的计算机具有8位以上的字符,则该程序的可观察到的行为将与8位的char计算机不同。
char foo[5];
for(size_t index = 0; index < sizeof(foo) / sizeof(char); index++)
{
/* some code */
}
因此,在C标准理解中,字节的含义可能有所不同。谁能解释:字节8位还是字节不同
还有一个问题。
是sizeof(char) == sizeof(array[0])
吗?考虑字节大小差异
答案 0 :(得分:3)
3。术语,定义和符号
3.6 字节可寻址的数据存储单元,其大小足以 持有执行基本字符集的任何成员 环境
注意1可以表示每个单独字节的地址 一个对象的唯一性。
注2字节由连续的位序列组成,即 其中由实现定义。最低有效位是 称为低位;最重要的位称为 高阶位。
这是根据C标准的字节。它的最小大小就是保存执行环境的基本字符集所需的位数,即,如今IIRC最少为8。字节的确切大小(以位为单位)在CHAR_BIT
宏中进行编码。