C语言——【sizeof 操作符】

发布于:2025-03-09 ⋅ 阅读:(87) ⋅ 点赞:(0)

在这里插入图片描述

🚀个人主页:fasdfdaslsfadasdadf
📖收入专栏:C语言



🚀 1. sizeof 操作符的使用

sizeof 是一个关键字,也是操作符,是专门用来计算数据类型或者变量,或者表达式,单位是字节。

当我们需要计算数据类型的字节大小如下:
只需要使用sizeof(),必须加括号

#include<stdio.h>
#include<stdbool.h>
int main()
{
	printf("%zd\n", sizeof(bool));  
	printf("%zd\n", sizeof(char)); 
	printf("%zd\n", sizeof(short));
	printf("%zd\n", sizeof(int));
	printf("%zd\n", sizeof(long));
	printf("%zd\n", sizeof(long long));
	printf("%zd\n", sizeof(float));
	printf("%zd\n", sizeof(double));
	printf("%zd\n", sizeof(long double));

	return 0; 
}

运行结果:
在这里插入图片描述


如果是计算一个变量的字节大小,计算的结果是取决于变量的数据类型

使用sizeof 可以加上括号,或者不加

int main()
{
	int a = 10; 
	short b = 20;
	printf("%zd\n", sizeof a); 
	printf("%zd\n", sizeof(b)); 

	return 0;
}

结果:
在这里插入图片描述


计算表达式也是可以的,和计算变量一样,结果取决于数据类型,sizeof 可以加上括号也可以不加

int main()
{
	int a = 3 + 2; 
	printf("%zd\n", sizeof a);
	printf("%zd\n", sizeof (a));
	return 0;
}

结果:
在这里插入图片描述


🚀 2. sizeof 中表达式不计算

int main()
{
	int a = 10; 
	short b = 5; 
	printf("%zd\n", sizeof(b = a + 1)); 

	return 0; 
}

结果:
在这里插入图片描述
这是因为在代码进行编译时,就根据表达式确定了数据的类型了,而表达式的执行要在程序运行期间才能执行,编译期间已经将sizeof 处理了,所以在运行期间不会执行表达式。


大家可以看到当我使用sizeof时,占位符使用的是 %zd,这是因为 sizeof 计算结果返回的是 size_t 类型的,为什么是 size_t ? 因为在C语言中 sizeof 返回的类型并没有进行明确的规定,只是说明了是无符号整数,那么就有可能是 unsigned int 或者 unsigned long 或者是 unsigned long long ,那么它们对应的占位符就是 %u %lu %llu,所以C语言为了明确,就创造了 size_t,它的 占位符就是 %zd, 当我们使用sizeof 时,占位符写上%zd 就行,当然如果一定要 %u 或者%d 也行,只不过会有警告,所以建议大家使用 %zd。

在这里插入图片描述
在这里插入图片描述


如有错误,还请指出 !


网站公告

今日签到

点亮在社区的每一天
去签到