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

C++中使用 sizeof 确定变量的长度

C++中使用 sizeof 确定变量的长度

变量长度指的是程序员声明变量时,编译器将预留多少内存,用于存储赋给该变量的数据。变量的长度随类型而异, C++ 提供了一个方便的运算符——sizeof,可用于确定变量的长度(单位为字节)或类型。

sizeof 的用法非常简单。要确定 int 变量的长度,可调用 sizeof 并给它传递参数 int:

cout << "Size of an int: " << sizeof (int);

以下示例程序演示了如何获悉各种标准 C++ 变量类型的长度:

#include <iostream>int main()
{using namespace std;cout << "Computing the size of some C++ inbuilt variable types" << endl;cout << "Size of bool: " << sizeof(bool) << endl;cout << "Size of char: " << sizeof(char) << endl;cout << "Size of unsigned short int: " << sizeof(unsigned short) << endl;cout << "Size of short int: " << sizeof(short) << endl;cout << "Size of unsigned long int: " << sizeof(unsigned long) << endl;cout << "Size of long: " << sizeof(long) << endl;cout << "Size of int: " << sizeof(int) << endl;cout << "Size of unsigned long long: "<< sizeof(unsigned long long) << endl;cout << "Size of long long: " << sizeof(long long) << endl;cout << "Size of unsigned int: " << sizeof(unsigned int) << endl;cout << "Size of float: " << sizeof(float) << endl;cout << "Size of double: " << sizeof(double) << endl;cout << "The output changes with compiler, hardware and OS" << endl;return 0;
}

输出:

Computing the size of some C++ inbuilt variable types
Size of bool: 1
Size of char: 1
Size of unsigned short int: 2
Size of short int: 2
Size of unsigned long int: 4
Size of long: 4
Size of int: 4
Size of unsigned long long: 8
Size of long long: 8
Size of unsigned int: 4
Size of float: 4
Size of double: 8
The output changes with compiler, hardware and OS

分析:

示例程序的输出指出了各种类型的长度(单位为字节),这是针对我使用的平台(编译器、操作系统和硬件)而言的。具体地说,这是在 64 位系统中以 32 位模式(使用 32 位编译器进行编译)运行该程序得到的结果。如果使用 64 位编译器进行编译,结果可能不同。我之所以使用 32 位编译器,是因为这样该应用程序在 32 位和 64 位系统上都能运行。输出表明,无符号类型和相应的有符号类型的长度相同,唯一的差别在于,后者的 MSB 包含符号信息。

注意:

输出中的长度单位为字节。类型的长度是一个重要参数,对用于存储数字的类型来说尤其如此。 short int 可存储的数值范围比 long long 小,因此您不能使用 short int 变量来存储国家人口数。

提示:

C++11 引入了固定宽度的整型, 让您能够以位为单位指定整数的宽度。 这些类型为 int8_t 和 unit8_t,分别用于存储 8 位的有符号和无符号整数。您还可能使用 16 位、 32 位和 64 位的整型,它们为 int16_t、 uint16_t、 int32_t、 uint32_t、 int64_t 和 uint64_t。要使用这些类型,必须包含头文件<cstdint>。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器课程:C++服务器

http://www.lryc.cn/news/110111.html

相关文章:

  • 我们的衣物收纳商品政策
  • 代码随想录算法训练营第25天| 第七章 回溯算法part02: leetcode 216、leetcode 17
  • WebAPI文档与自动化测试
  • netty架构
  • 拉普拉斯平滑算法
  • Java课题笔记~ IoC 控制反转
  • 【Spring】Spring中的设计模式
  • 【ChatGLM_02】LangChain知识库+Lora微调chatglm2-6b模型+提示词Prompt的使用原则
  • 构建未来移动应用:探索安卓、iOS和HarmonyOS的技术之旅
  • 【新版系统架构补充】-嵌入式软件
  • 【云原生】K8S超详细概述
  • (五)Node.js -模块的加载机制
  • 【docker】Windows11系统下安装并配置阿里云镜像加速
  • SpringBoot搭建WebSocket初始化
  • 节能延寿:ARM Cortex-M微控制器下的低功耗定时器应用
  • GPT突破限制回复图片
  • 微信小程序nodejs+vue+uniapp高校食堂线上预约点餐系统
  • Python 程序设计入门(006)—— 列表的操作(1):列表元素的增、删、改操作
  • 使用Python实现高效数据下采样:详解最大三角形三桶(LTTB)算法
  • 无涯教程-Perl - for 语句函数
  • 企业网盘解析:高效的企业文件共享工具
  • 前端实习day20
  • # 关于Linux下的parted分区工具显示起始点为1049kB的问题解释
  • 前端页面--视觉差效果
  • 使用idea如何生成webservice客户端
  • QT属性系统
  • CentOS 7虚拟机 虚拟机安装安装增强VBox_GAs_6.1.22失败:modprobe vboxguest failed
  • 【基础类】—DOM事件系统性学习
  • 【控制项目风险经验之谈】
  • SpringBoot复习:(10)SpringApplication中的initializer成员变量是怎么初始化的?