侧边栏壁纸
博主头像
马杰如的博客

一切有为法,如梦幻泡影,如露亦如电,应作如是观。

  • 累计撰写 9 篇文章
  • 累计创建 7 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

C++基础数据类型的所占空间大小和sizeof关键字

马杰如
2025-06-05 / 0 评论 / 3 点赞 / 6 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
#include<iostream>
using namespace std;
int main() {
	//整数数据类型
	cout <<"char:"<< sizeof(char)<<endl;
	cout <<"short:"<< sizeof(short)<<endl;
	cout <<"int:"<< sizeof(int)<<endl;
	cout <<"long:"<< sizeof(long)<<endl;
	cout <<"long long:"<< sizeof(long long)<<endl;
	//浮点数数据类型
	cout <<"float:"<< sizeof(float)<<endl;
	cout <<"double:"<< sizeof(double)<<endl;
	//布尔类型
	cout <<"bool:"<< sizeof(bool)<<endl;
	return 0;
}

只需要使用sizeof关键字,我们就可以很轻松的获取到各个数据类型在内存中所占字节大小了.下面是这段程序打印的结果.

char:1

short:2

int:4

long:4

long long:8

float:4

double:8

bool:1

其中单位是字节,至于每个数据类型能存储多大的数据,涉及到二进制的一些知识,在此不多赘述,感兴趣自行了解.而long类型比较特殊,在不同的系统(linux或windos)和不同的系统环境(x64或x86)所占的大小也是不同的,不过目前只需要关注windos的结果即可.

下面我要详细讲解一下sizeof,很多人刚开始学的时候可能会一直认为它是一个函数,因为使用它的时候,我们常常会在后面加上括号.但是事实上,它是一个关键字,作用就是获取某个对象所占内存空间的大小.

#include<iostream>

using namespace std;
int main() {
	int num = 10;
	cout << "num所占空间大小为:" << sizeof num<<endl;
	//cout << "int所占空间大小为:" << sizeof int;
	return 0;
}

这里我把第二句打印注释了,因为第一句打印num不加括号完全是正常的,但是对于关键字,如int,double等,不加括号就会报错,这就要涉及到sizeof底层的语法定义了.

sizeof unary-expression

sizeof ( type-name )

什么意思呢,对于第一种调用,是指一个表达式,可以是变量num,也可以是一个表达式num+10,而第二种调用方式是加一个括号,里面是数据类型的名字.所以我们想直接获取int的大小,就必须加上括号,否则就会报错.同时我在这里发现了一个比较有趣的现象

#include<iostream>

using namespace std;
int main() {
	int num = 10;
	cout << sizeof (num+10)<<endl;//打印结果为4
	cout << sizeof num + 10<<endl;//打印结果为14
	//cout << "int所占空间大小为:" << sizeof int;
	return 0;
}

对于第一个打印语句结果是4,因为int型的数据类型就是占了4个字节,而第二个结果却是14,这说明了sizeof的运算优先级非常高,这个式子会先运算sizeof(num),再和10进行相加,所以我们在使用的时候就需要注意了,如果是相求表达式的内存大小,就需要加上一个括号才行.

3

评论区