我当时正在学习C++,并遇到了以下问题。我只是个初学者我很困惑。函数不是应该返回数据类型的大小吗?为什么数据对象的大小可以与其size Why ()不同?我不明白答案的解释。
假设在一台假设的机器中,字符的大小是32位。多少(煤焦)还会有多少?
( a) 4
( b) 1
c)取决于执行情况
d)依赖于机器
答:B
说明:标准不要求一个字符为8位,但要求返回1的大小(字符)。
发布于 2015-11-04 16:57:55
sizeof
运算符生成类型的大小(以字节为单位),其中字节被定义为char
的大小。因此,根据定义,sizeof(char)
始终是1,而不管char
在给定平台上有多少位。
这适用于C和C++。
来自C11标准,6.5.3.4
sizeof
运算符生成其操作数的大小(以字节为单位),该操作数可能是一个表达式或类型的括号大小名称。大小由操作数的类型确定.然后,
sizeof
应用于具有char
、unsigned char
或signed char
类型(或其限定版本)的操作数时,结果为1。来自C++11标准,5.3.3
sizeof
运算符在其操作数的对象表示中生成字节数。操作数要么是一个表达式,它是一个未计算的操作数(第5条),要么是带括号的类型-id.. sizeof(char)
**,** sizeof(signed char)
和 sizeof(unsigned char)
是1.(强调地雷)
发布于 2015-11-04 17:00:46
您只是混淆了、字节、和octets。
字节是一个字符的大小。这将生成始终为真的sizeof(char) == 1
,因为sizeof
返回以字节为单位的大小。
而八进制则由8位组成。
在几乎所有的现代平台上,字节的大小与八位字节的大小是一致的。这就是为什么把它们混为一谈是一个常见的错误,就连书作者和教授也在这样做。
发布于 2015-11-04 16:59:29
sizeof(x)
返回以char
大小单位表示的x
大小。
https://stackoverflow.com/questions/33527566
复制相似问题