gpt4 book ai didi

c++ - size of datatype 和 sizeof(data type) 的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:36 25 4
gpt4 key购买 nike

我在学习 C++ 时遇到了以下问题。我只是一个初学者,我很困惑。 sizeof() 函数不应该返回数据类型的大小吗?为什么数据对象的大小可能与其 sizeof() 不同?我不明白答案的解释。

假设在一台假想的机器中,char 的大小是 32 位。 sizeof(char) 会返回什么?

一)4

b) 1

c) 依赖于实现

d) 机器相关

答案:b

说明:标准不要求 char 为 8 位,但确实要求 sizeof(char) 返回 1。

最佳答案

sizeof 运算符以 bytes 为单位生成类型的大小,其中字节定义为 char 的大小。所以根据定义,sizeof(char) 始终为 1,无论 bits char 在给定平台上有多少。

这适用于 C 和 C++。


来自C11标准,6.5.3.4

  1. The sizeof operator yields the size (in bytes) of its operand, which may be an expression or the parenthesized name of a type. The size is determined from the type of the operand....

然后,

  1. When sizeof is applied to an operand that has type char, unsigned char, or signed char, (or a qualified version thereof) the result is 1.

来自C++11标准,5.3.3

  1. The sizeof operator yields the number of bytes in the object representation of its operand. The operand is either an expression, which is an unevaluated operand (Clause 5), or a parenthesized type-id.... ... sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1.

(强调我的)

关于c++ - size of datatype 和 sizeof(data type) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33527566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com