关键字之sizeof

news/2024/9/18 21:04:36/ 标签: 算法, c语言

接下来我讲的是之前我提到过的C语言关键字

sizeof同时它也是C语言提供的操作符(运算符)

它的使用形式有两种

1 sizeof(类型)

2 sizeof 表达式

sizeof返回某种数据类型或某个值占用的字节数量,它的参数可以是数据类型的关键字,也可以是变量名或某个具体的值。

sizeof不仅仅可以计算内置的类型的大小,计算数组、自定义类型的大小都是可以的。

1 #include <stdio.h>

2 int main()

3 {

4 int a=20;

5 printf("%zd\n",sizeof(int));//4

6 printf("%zd\n",sizeof(a));//4

7 printf("%zd\n",sizeof a);//4

8 printf("%zd\n",sizeof(3.14));//8

9 printf("%zd\n",sizeof(3.14f));//4

10 return 0;

11 }

说明:

1.整型类型的变量是4个字节,直接使用整型类型也是4个字节。

2.sizeof的括号中给的不是类型的话,括号可以省略。

3.3.14被编译器识别为double类型,所以大小是8个字节。

4.3.14f因为在3.14后面加了f,会被编译器识别为float类型,是4个字节。

sizeof的返回类型

sizeof运算符的返回值,C语言只规定是无符号整数,并没有规定具体的类型,而是留给系统自己去决定,sizeof到底返回什么类型。不同的系统返回的值的类型可能是unsigned int,也可能是unsigned  long,甚至可能是unsigned long long,对应printf()占位符分别是%u %lu %llu。这样不利于程序的可移植性。

C语言提供了一个解决方案,创造了一个类别名为size_t,用来统一表示sizeof的返回值类型。该别名定义在stddef.h头文件中(引入stdio.h时会自动引用)里面,对应当前系统的sizeof的返回值类型,可能是unsigned int ,也可能是unsigned long long

注:vs2022中,size_t是定义在vcruntime.h中的,不同的编译器实现略有差异。

C语言还提供一个常量SIZE_MAX,表示size_t可以表示的最大整数。

所以,size_t能够表示的整数范围为[0,SIZE_MAX]

printf()有专门的占位符%zd或%zu,用来处理size_t类型的值

1 #include <stdio.h>

2 int main()

3 {

5 printf("%zd\n",sizeof(int));

6 return 0;

7 }

上面代码中,不管sizeof返回值的类型是什么,%zd占位符(或者%zu)都可以正确的输出。

如果当前系统不支持%zd%zu,可使用%u(unsigned int)%lu(unsigned  long)代替。



http://www.ppmy.cn/news/1518329.html

相关文章

怎样通过bs4找出程序中 标签<div class=“List2“>中所有的<li>的内容?

怎样通过bs4找出程序中 标签<div class"List2">中所有的<li>的内容&#xff1f; 可以使用 BeautifulSoup 的 find_all 方法来找到标签为 <div class"List2"> 中的所有 <li> 标签&#xff0c;并获取其内容。 以下是一个示例代码&…

【面试经验】美团基础研发部产品经理面试经验

3.12 投递 4.1 一面 4.11 二面 4.17 oc但拒 一面内容&#xff1a; 1、一个指数增长的脑经急转弯 2、对向量和向量值如何理解 ——类比函数&#xff0c;目的是映射和转化 3、transformer有没有看&#xff08;问到了注意力机制&#xff09; ——transformer的本质是一个编码…

http连接处理

分析http类及请求接收 基础 epoll epoll_create函数 #include <sys/epoll.h> int epoll_create(int size) 创建一个指示epoll内核事件表的文件描述符&#xff0c;该描述符将用作其他epoll系统调用的第一个参数&#xff0c;size不起作用。 epoll_ctl函数 #include …

基于Python的热门旅游景点数据分析系统【python-爬虫-大数据定制】

&#x1f496;&#x1f525;作者主页&#xff1a;毕设木哥 精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; 实战项目 文章目录 实战项目 一、基于Python的热门旅游景点数…

sheng的学习笔记-AI-半监督聚类

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 半监督学习&#xff1a;sheng的学习笔记-AI-半监督学习-CSDN博客 聚类&#xff1a;sheng的学习笔记-AI-聚类(Clustering)-CSDN博客 均值算法&#xff1a;sheng的学习笔记-AI-K均值算法_k均值算法怎么算迭代两次后的最大…

论文阅读:VideoMamba: State Space Model for Efficient Video Understanding

论文地址&#xff1a;arxiv 摘要 为了解决视频理解中的局部冗余与全局依赖性的双重挑战。作者将 Mamba 模型应用于视频领域。所提出的 VideoMamba 克服了现有的 3D 卷积神经网络与视频 Transformer 的局限性。 经过广泛的评估提示了 VideoMamba 的能力&#xff1a; 在视觉领…

Zookeeper 日志输出到指定文件夹,并按照日期轮循输出

更改日志输出路径 如果不做修改&#xff0c;zookeeper的日志信息默认都打印到了zookeeper.out文件中&#xff0c;这样输出路径和大小没法控制&#xff0c;因为日志文件没有轮转。所以需要修改日志输出方式。具体操作如下&#xff1a; 1.修改${zkhome}/bin/zkEnv.sh ZOO_LOG_…

我的推荐:腾讯云罗云《从零构建向量数据库》

在2024年8月&#xff0c;好几本和数据库相关的图书相继出版&#xff0c;我以为&#xff0c;这恰恰是数据库领域蓬勃向上的一种表现。 数据库需要更多的人关注&#xff0c;哪怕是谈论&#xff0c;所以我的《数据库简史》是一种尝试&#xff0c;希望以一种科普的风格&#xff0c;…

信息安全数学基础(4)最大公因数

前言 在信息安全数学基础中&#xff0c;最大公因数&#xff08;Greatest Common Divisor, GCD&#xff09;是一个核心概念&#xff0c;它在密码学、数论等多个领域都有广泛应用。以下是对最大公因数的详细阐述&#xff1a; 一、定义 设a和b是两个非零整数&#xff0c;若整数d同…

框架 +【Mybatis】概述 以及 基础环境搭建

目录 什么是框架&#xff1f; java后端框架包括 Mybatis概述 1、背景介绍 2、mybatis介绍 Mybatis环境搭建 1.创建一个maven项目 2.导入mysql数据库驱动包 导入mybatis依赖的jar包 3.创建一个全局的mybatis配置文件 4.创建数据库,创建表,准备数据 5.创建一个访问接口…

PHP一体化解决方案高效整合与优化学校管理系统小程序源码

一体化解决方案&#xff0c;让学校管理系统焕发新生✨ &#x1f3eb; 开篇&#xff1a;传统管理的瓶颈与挑战 在快节奏的教育时代&#xff0c;传统的学校管理系统是否让你感到力不从心&#xff1f;&#x1f914; 信息孤岛、流程繁琐、效率低下...这些问题是否正困扰着你的工作…

vue 使用el-table 设置了show-overflow-tooltip属性,路由跳转后,气泡不消失的解决办法

文章目录 一、问题场景二、解决方法1.问题bug2.最终解决 总结 一、问题场景 在vue项目里使用el-table做一个列表页面&#xff0c;表格设置了show-overflow-tooltip属性&#xff0c;文字过长时鼠标滑过会展示气泡显示全部文字内容&#xff0c;因为设置路由缓存&#xff0c;如果…

哈苏相机SD卡数据恢复指南:从格式化到重生

在摄影的世界里&#xff0c;‌哈苏相机以其卓越的画质和精湛的工艺赢得了无数摄影师的青睐。‌然而&#xff0c;‌面对不慎的误操作&#xff0c;‌如SD卡格式化&#xff0c;‌珍贵的照片和视频数据可能瞬间消失&#xff0c;‌这无疑是对摄影师的重大打击。‌本文将深入探讨如何…

PostgreSQL遍历所有的表并为其创建基于某个字段的索引

完整代码 以下以"collect_time"字段为例&#xff0c;其他字段请自行全局替换 DO $$ DECLAREtable_name TEXT;index_name TEXT; BEGIN-- 遍历 public 模式下的所有表FOR table_name IN (SELECT table_nameFROM information_schema.tablesWHERE table_schema publicOR…

网上商城|基于SprinBoot+vue的分布式架构网上商城系统(源码+数据库+文档)

分布式架构网上商城系统 目录 基于SprinBootvue的分布式架构网上商城系统 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍…

大语言模型之Qwen2技术报告阅读笔记

QWEN2 TECHNICAL REPORT——2024 核心内容 介绍了Qwen2 大模型系列&#xff1a;基于transformer架构的LLMs 通过以下四个部分来展开介绍&#xff1a; Tokenizer & Model 四个dense models&#xff0c;参数计数为 0.5 亿、15 亿、70 亿和 720 亿一个Mixture-of-Experts (…

svn迁移到git

通过git bash将svn迁移到git上&#xff0c;并保留svn的提交历史。 一、准备 1、在电脑上安装git 2、确认svn账号具备该svn地址的操作权限 3、准备将要操作的svn项目地址、以及该项目下所有提交人的账号信息&#xff08;在idea工具看提交历史&#xff09;&#xff0c;将信息存放…

classA cla= ...; if(cla == nullptr) 这种写法是否安全

在C中&#xff0c;classA cla …; 这行代码创建了一个名为 cla 的 classA 类型的对象&#xff08;假设 classA 是一个已经定义好的类&#xff09;。这个对象 cla 是在栈上分配的&#xff0c;而不是在堆上。因此&#xff0c;&cla&#xff08;即 cla 的地址&#xff09;永远…

Nginx负载均衡中的缓存过期配置:策略与实现

在Nginx负载均衡的高级应用中&#xff0c;合理配置缓存过期策略对于提升网站性能和保证内容的新鲜度至关重要。缓存过期意味着存储在代理缓存中的响应在一定时间后将被视为过时&#xff0c;并在下一次请求时从原始服务器重新获取。本文将详细介绍如何在Nginx中配置缓存过期&…

从PCB开始研究FPGA设计问题

从PCB开始研究FPGA设计问题 文章目录 从PCB开始研究FPGA设计问题前言一、高速电路板1.1 电源供电1.1.1 供电要求1.1.2 退耦 总结 前言 这里只针对FPGA告诉电路板设计问题进行讨论 一、高速电路板 一个成功的高速电路板&#xff0c;需要再复杂的板路中&#xff0c;应该避免与…