当前位置: 首页 > article >正文

C语言——【sizeof 操作符】


在这里插入图片描述

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


🌍文章目入

  • 🚀 1. sizeof 操作符的使用
  • 🚀 2. sizeof 中表达式不计算


🚀 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。

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


如有错误,还请指出 !


http://www.kler.cn/a/577177.html

相关文章:

  • maven导入spring框架
  • 14 HarmonyOS NEXT UVList组件开发指南(一)
  • HTTPS加密原理详解
  • 如何验证邮件列表的有效性?
  • AI 时代的新宠儿:向量数据库
  • 如何用Kimi生成PPT?秒出PPT更高效!
  • 【C++初阶】类与对象(下)
  • 2025年总结zabbix手动部署过程!
  • 深入理解Linux网络随笔(四):内核是如何与用户进程协作的(下篇:多路I/O复用模型epoll)
  • 大数据与物联网(IoT)的完美融合:驱动智能新时代
  • vulnhub靶场之【digitalworld.local系列】的snakeoil靶机
  • 【每日学点HarmonyOS Next知识】多继承、swiper容器、事件传递、滚动安全区域、提前加载网络图片
  • MySQL中的脏读与幻读:概念、影响与解决方案
  • 【Linux】--- 线程概念、线程控制
  • Day4 C语言与画面显示练习
  • 华为hcie证书有什么作用?
  • JVM G1垃圾回收器详细解析
  • Spring Boot项目 提示java: 程序包com.alibaba.druid.pool不存在
  • 【定制开发】碰一碰发视频系统定制开发,支持OEM
  • 【halcon】如何理解 halcon 中的domain 之 “区域被裁剪掉了!”