sizeof 的结果取决于什么
Posted 车子 chezi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sizeof 的结果取决于什么相关的知识,希望对你有一定的参考价值。
本文讨论的是 C 语言中的一个运算符:sizeof
注意,是运算符,不是函数。
sizeof 的结果是在编译时就可以确定的,于是有人认为,sizeof 的结果取决于编译器。这样说也对,但是我认为,C 和 C++ 旨在成为高效的语言。为了实现最大效率,C 或 C++ 实现必须考虑源自底层硬件的某些因素。出于这个原因,确保每种基本类型都基于硬件直接支持的某种表示是很有意义的。因此,sizeof 的结果取决于硬件。
可以这么说,sizeof 的结果取决于处理器(更具体地说,ISA,指令集架构,例如 x86 和 x86-64)和包括编程模型在内的编译器。
如果你不确定在你的机器上各种类型占多少个字节,最好写个代码测试一下。
#include <stdio.h>
#define TEST_SIZEOF_TYPE(x) \\
do\\
printf(#x ": %lu\\n",sizeof(x));\\
while(0)
int main(void)
TEST_SIZEOF_TYPE(int);
TEST_SIZEOF_TYPE(char);
TEST_SIZEOF_TYPE(short);
TEST_SIZEOF_TYPE(long);
TEST_SIZEOF_TYPE(long long);
TEST_SIZEOF_TYPE(float);
TEST_SIZEOF_TYPE(double);
TEST_SIZEOF_TYPE(long double);
TEST_SIZEOF_TYPE(char*);
我的运行结果是:
int: 4
char: 1
short: 2
long: 8
long long: 8
float: 4
double: 8
long double: 16
char*: 8
参考资料:
c++ - int 的大小是否取决于编译器和/或处理器? - 堆栈溢出
以上是关于sizeof 的结果取决于什么的主要内容,如果未能解决你的问题,请参考以下文章