sizeof和一个字节大于8位?
-
由于
sizeof
是一个运算符,为什么我们可以使用sizeof(something);
喜欢函数调用? -
什么时候字节不是8位?
此上下文中的字节与unsigned char相同,可能大于8位
是否有可能该字节小于8位?
由于sizeof是一个操作者,为什么我们可以使用sizof(某事); 喜欢函数调用?
好吧, +
也是一个“操作员”(sic!),你仍然可以写(1 + 1)
和(1) + (1)
和((1) + 1)
……这只是正常的括号/分组。
当字节不是8位?
当您使用不是8位的平台时。
是否有可能该字节小于8位?
不是一个旨在成为符合C的实现的架构。 但它可能会发生。 例如,一些早期的穿卡机使用6位字节。
与大多数运算符一样, sizeof
可以应用于表达式,其中可以包括括号。 就解析器而言,它几乎与x * (b + c)
,其中*
适用于(b + c)
。 虽然你没有经常看到它,但像x + (b)
这样的东西也是完全可能的。
该标准规定CHAR_MIN
必须不高于-127且CHAR_MAX
必须至少为127.这需要至少8位来表示,所以不,char不能小于8位。
-
由于sizeof是一个操作者,为什么我们可以使用sizof(某事); 喜欢函数调用?
其他人回答了这个问题,但无论如何我都会回答。
~
是一个运算符,为什么我们可以用~(a)
代替~a
? 虽然根本不同,但它们在语法方面仍然相似。 例外情况是你可以执行sizeof(int)
,但这是因为sizeof
做了什么,它扩展为编译时常量。 -
当字节不是8位?
此上下文中的字节与unsigned char相同,可能大于8位
有些平台有9位字节。 C标准要求每个字符至少8位。 目前,许多系统使用8位字节,即“八位字节”。
在像Java这样的语言中,
char
不是8位,因此C的实现可以以相同的方式轻松定义它。 如果没有位掩码和位移或位域,您将无法使用标准C语法访问少量数据,因为其他数据类型(如short int
是根据char
定义的:存储在任何其他对象类型的非位字段对象中的值由n × CHAR_BIT位组成,其中n是该类型对象的大小(以字节为单位)。
因此,如果
sizeof(short int)
为2,则它将具有2 × CHAR_BIT
位。 如果CHAR_BIT
为16,则short int
为32位整数类型。
字节的计算机科学定义有所不同。 这是8位。 而C definiton是字节是char类型的位数。 由于它几乎总是相同的,因此将它们视为平等是很常见的。
- 是。
- 怀疑你有一台字节不是8位的机器。 无论如何,sizeof()都是一种类型。 “byte”不是一种类型。 类型类似于“char”“short”“int”。 在C中,最小的类型是一个字节的char。 也许我应该说“可能是一个字节”。