首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据类型大小与大小之间的差异(数据类型)

数据类型大小与大小之间的差异(数据类型)
EN

Stack Overflow用户
提问于 2015-11-04 16:55:00
回答 5查看 2.8K关注 0票数 4

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

假设在一台假设的机器中,字符的大小是32位。多少(煤焦)还会有多少?

( a) 4

( b) 1

c)取决于执行情况

d)依赖于机器

答:B

说明:标准不要求一个字符为8位,但要求返回1的大小(字符)。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-11-04 16:57:55

sizeof运算符生成类型的大小(以字节为单位),其中字节被定义为char的大小。因此,根据定义,sizeof(char)始终是1,而不管char在给定平台上有多少位。

这适用于C和C++。

来自C11标准,6.5.3.4

  1. sizeof运算符生成其操作数的大小(以字节为单位),该操作数可能是一个表达式或类型的括号大小名称。大小由操作数的类型确定.

然后,

  1. sizeof应用于具有charunsigned charsigned char类型(或其限定版本)的操作数时,结果为1。

来自C++11标准,5.3.3

  1. sizeof运算符在其操作数的对象表示中生成字节数。操作数要么是一个表达式,它是一个未计算的操作数(第5条),要么是带括号的类型-id.. sizeof(char)**,** sizeof(signed char) sizeof(unsigned char) 是1.

(强调地雷)

票数 12
EN

Stack Overflow用户

发布于 2015-11-04 17:00:46

您只是混淆了、字节、octets

字节是一个字符的大小。这将生成始终为真的sizeof(char) == 1,因为sizeof返回以字节为单位的大小。

八进制则由8位组成。

在几乎所有的现代平台上,字节的大小与八位字节的大小是一致的。这就是为什么把它们混为一谈是一个常见的错误,就连书作者和教授也在这样做。

票数 3
EN

Stack Overflow用户

发布于 2015-11-04 16:59:29

sizeof(x)返回以char大小单位表示的x大小。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33527566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档