数据类型的大小与sizeof(数据类型)之间的差异 我正在学习C++,遇到下面的问题。我只是一个初学者,我感到困惑。函数是否不应该返回数据类型的大小?为什么数据对象的大小可能与其sizeof()不同?我不明白答案的解释
假设在一台假设的机器中,字符的大小是32位。sizeof(char)返回多少 a) 四, b) 一, c) 依赖于实现 d) 机器相关 答:b数据类型的大小与sizeof(数据类型)之间的差异 我正在学习C++,遇到下面的问题。我只是一个初学者,我感到困惑。函数是否不应该返回数据类型的大小?为什么数据对象的大小可能与其sizeof()不同?我不明白答案的解释,c++,c,C++,C,假设在一台假设的机器中,字符的大小是32位。sizeof(char)返回多少 a) 四, b) 一, c) 依赖于实现 d) 机器相关 答:b 说明:该标准不要求字符为8位,但要求sizeof(char)返回1。运算符sizeof以字节为单位生成类型的大小,其中字节定义为char的大小。因此,根据定义,sizeof(char)始终为1,而不管给定平台上的char有多少位 这适用于C和C++。 根据C11标准,6.5.3.4 sizeof运算符生成其操作数的大小(以字节为单位),可以是表达式或类
说明:该标准不要求字符为8位,但要求sizeof(char)返回1。运算符
sizeof
以字节为单位生成类型的大小,其中字节定义为char
的大小。因此,根据定义,sizeof(char)
始终为1,而不管给定平台上的char
有多少位
这适用于C和C++。
根据C11标准,6.5.3.4
sizeof
运算符生成其操作数的大小(以字节为单位),可以是表达式或类型的括号名称。大小由操作数的类型决定。。。。
sizeof
应用于类型为char
、无符号char
或有符号char
(或其限定版本)的操作数时,结果为1sizeof
运算符生成其操作数的对象表示形式中的字节数。操作数可以是一个表达式,它是一个未赋值的操作数(第5条),也可以是一个带括号的type-idsizeof(字符)
,sizeof(有符号字符)
和sizeof(无符号字符)
为1。(强调矿山)根据第5.3.3节[expr.sizeof] sizeof运算符生成其操作数的对象表示形式中的字节数。操作数可以是未赋值操作数(第5条)的表达式,也可以是带括号的type-id。sizeof运算符不得应用于具有函数或不完整类型的表达式,也不得应用于枚举 在声明其所有枚举数之前,其基础类型不是固定的类型,可以是此类类型的括号名称,也可以是指定位字段的glvaluesizeof(字符)、sizeof(有符号字符)和sizeof(无符号字符)为1。[…] 重点矿山
因此,无论字符占用多少位,它的大小始终是1,如果f(x)返回的是以字符大小为单位的x的大小,你会被字节与八位字节之间的差异所迷惑 字节是一个字符的大小。这将产生始终为真的
sizeof(char)==1
,因为sizeof
返回字节大小
而八位字节由8位组成
在几乎所有现代平台上,字节的大小恰好与八位字节的大小相同。这就是为什么把它们混在一起是一个常见错误的原因,即使是书籍作者和教授也在这样做 问题应该是——假设在一台假设机器中,
字大小(寄存器大小)
是32位。sizeof(char)返回多少
答案将是1字节
在计算中,word是一个术语,表示用户使用的自然数据单位
特殊的处理器设计。字是一个固定大小的数据块
由指令集或硬件作为一个单元进行处理
处理器。一个字中的位数(字的大小、字的宽度或长度)
字长)是任何特定处理器的重要特征
设计或计算机架构
在您的情况下,字大小将是32位。也
从历史上看,字节是用于编码单个字节的位数
计算机中文本的一种字符,因此它是最小的
许多计算机体系结构中的可寻址内存单元
1字节是内存的最小可寻址单元,它可以是8位、9位或16位,由硬件规格选择
就sizeof
而言,它首先确定参数的类型,最后计算字节大小。因此,下面两个C++语句将产生相同的结果。
int n;
std::cout<<sizeof(int);
std::cout<<sizeof(n);
intn;
std::cout没有sizeof(char)为4的机器。它总是1字节。该字节可能包含32位,但就C编译器而言,它是一个字节
“8位”的正确名称是八位字节。C标准使用“byte”一词表示字符大小的对象。其他人可以用不同的方式使用“字节”一词,通常当它们表示“八位字节”时,但在C(和C++中,或者Objto-C)中,它表示“对象的字符大小”。一个字符可能多于8位,或者多于一个八位字节,但它总是一个字节。我不明白你的问题。“为什么数据对象的大小可能与其sizeof()不同?”是什么意思?@cad:No,char
定义为1字节。在那个系统中,一个字节是32位。@KennethChen:你们的老师错了。8位的类型是八位字节。字节的宽度取决于机器。只是现在大多数架构都有8位/字节。几十年前,例如9比特是相当普遍的。在某些DSP上,它仍然有24位。@Olaf:学习永远不会变老。大约20年后,我戒掉了这个习惯…;-)@alk:在血浆中:Alt-F2
(弹出命令行),输入例如wp:byte
(输入);它实际上是小写的。将使用给定的搜索短语打开WP。例如,gg:byte
或leo:nette sache
也一样。如果我必须在Windows上工作,我最怀念的事情之一就是。它实际上被称为“Webshortcuts”/