C/C++不同整数类型的区别

在C/C++中涉及的整数相关的类型大致有如下几种:

  • char、unsigned char
  • short、unsigned short
  • int、unsigned int
  • long、unsigned long
  • long long、unsigned long long
  • int8_t、uint8_t
  • int32_t、uint32_t
  • int64_t、uint64_t
  • DWORD
  • DWORD32、DWORD64
  • size_t、ssize_t
  • SIZE_T、SSIZE_T

一、原生数据类型

以下数据类型C/C++语言中的原生整数类型,其长度取决于所使用的计算机系统和编译器:

  • short、unsigned short
  • int、unsigned int
  • long、unsigned long
  • long long、unsigned long long

如果需要开发跨平台的、具有良好可移植性的程序,请不要使用这些数据类型。通常情况下,这些数据类型所占字节数如下表所示:

数据类型字节数范围
char1-128 ~ 127
unsigned char10 ~ 255
short2-32,768 ~ 32,767
unsigned short20 ~ 65,535
int4-2,147,483,648 ~ 2,147,483,647
unsigned int00 ~ 4,294,967,295
long4-2,147,483,648 ~ 2,147,483,647
unsigned long40 ~ 4,294,967,295
long long8-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
unsigned long long80 ~ 18,446,744,073,709,551,615

二、int*_t数据类型

int*_t格式的数据类型是使用typedef重新定义的数据类型。通过在不同的编译环境进行重定义,确保其所占用的字节数始终相同(即数据范围也相同)。

数据类型字节数范围
int8_t1-128 ~ 127
uint8_t10 ~ 255
int32_t4-2,147,483,648 ~ 2,147,483,647
uint32_t40 ~ 4,294,967,295
int64_t8-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
uint64_t80 ~ 18,446,744,073,709,551,615

三、size_t和std::size_t

size_t和std::size_t是不同的数据类型,size_t是定义在C语言的头文件,而std::size_t定义在C++标准库的<cstddef>头文件中。

虽然二者是不同的数据类型,但std::size_t在实现上兼容size_t了,二者所占的字节数始终相同。

size_t和std::size_t都是无符号整型,它们在32位编译环境占用4字节,64位编译环境占8字节。

如果需要使用有符号的size_t类型,在Linux上可以使用ssize_t类型,Windows上可以使用SSIZE_T类型。

四、DWORD和DWORD32、DWORD64

DWORD是32位无符号整型(范围0 ~ 4,294,967,295

DWORD32是32位无符号整型(范围0 ~ 4,294,967,295),DWORD64是64位无符号整型(范围0 ~ 18,446,744,073,709,551,615)。

DWORD也是32位无符号整型(范围0 ~ 4,294,967,295),可能微软在设计之初是打算让DWORD在不同的编译环境具有不同的位数,但从目前情况来看,这种希望已然破灭,DWORD将永远是32位的无符号整型。

五、一点点建议

为了保证程序的可移植性,请在开发中只使用固定字节数的数据类型,如int8_t、int32_t、int64_t。

更多的文章参考:https://jiangxueqiao.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker Swarm部署实操

大家好&#xff0c;我是升仔 引言 Docker Swarm 是 Docker 官方的集群管理工具&#xff0c;它将多个 Docker 主机转换为一个虚拟的 Docker 主机。Swarm 提供了容器编排、集群管理、服务发现等功能&#xff0c;非常适合生产环境的需要。 部署步骤 环境准备 准备至少三台安装了 D…

Nginx安装与文件服务器实现

1. 概述 Nginx是一个高性能的反向代理和web服务器软件&#xff0c;特点是系统资源消耗低、高性能、高并发、扩展性好。一个进程可以处理多个请求&#xff0c;并且是非阻塞式响应。 windows安装安装包下载地址&#xff1a;https://nginx.org/en/download.html下载之后解压运行n…

Python爬虫---解析---JSONPath

Xpath可以解析本地文件和服务器响应的文件&#xff0c;JSONPath只能解析本地文件 1. 安装jsonpath&#xff1a;pip install jsonpath 注意&#xff1a;需要安装在python解释器相同的位置,例如&#xff1a;D:\Program Files\Python3.11.4\Scripts 2. 使用步骤 2.1 导入&…

什么是 PHP 内存溢出 ?遇到了要如何解决呢 ?

PHP内存溢出指的是在PHP应用程序中&#xff0c;分配给脚本执行的内存超出了PHP配置文件中设置的限制。当脚本尝试使用比可用内存更多的内存时&#xff0c;就会发生内存溢出错误。 一、内存溢出可能由以下几个原因引起&#xff1a; 循环引用&#xff1a;如果存在循环引用&#…

tensorboard可视化——No dashboards are active for the current data set.

No dashboards are active for the current data set. 出现问题的原因是事件的路径未用绝对路径&#xff0c;tensorboard --logdir./runs --port6007 改为tensorboard --logdirD:\Code\Python\Study\CL\hat-master\hat-master\run s\one --port6007就好了

acwing linux docker教程

终章 听着名字还挺伤感的哈哈哈其实是Linux的终章&#xff0c;感谢大家这段时间的阅读&#xff0c;这段使时间我为了给大家清楚的讲解一下Linux自己也是很认真的学习了一遍&#xff0c;自己提升了也不少。其实最近学校里面是讲了Linux和windows server 2019搭载DNS、web、ftp服…

[渗透测试学习] Manager - HackTheBox

文章目录 信息搜集 nmap扫描一下端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.236扫出来很多端口&#xff0c;其中80端口有http服务&#xff0c;88端口是采用一个身份验证协议kerberos&#xff0c;以及NetBIOS-SSN&#xff08;端口139&#xff09;和Microsoft-DS&#…

探索前端构建可视化应用的思路

一、前言 前端社区里&#xff0c;低代码/无代码是被讨论的火热赛道。简单来说低代码就是通过编写少量代码的方式完成应用的开发及上线&#xff0c;而无代码是低代码的子集&#xff0c;不需要编写代码通过配置的方式即可完成整个应用的开发。目前集团内部的低代码平台已经有很多…

如何使用Docker部署Dashy并无公网ip远程访问管理界面

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起&#xff0c;形成自己的导航…

Linux上iPortal 配置80端口的http

作者&#xff1a;yx 文章目录 前言方法一、配置使用外置ES1、关闭启用 iPortal 内置的 ES2、修改80端口3、启动外置ES4、启动iPortal5、结果验证 方法二、更改 Linux 系统配置1. 安装 Authbind2. 启用端口的读取和执行权限3. 在 Apache Tomcat 上启用 Authbind4. 重启iPortal5.…

怎么搭建实时渲染云传输服务器

实时渲染云传输技术方案&#xff0c;在数字孪生、虚拟仿真领域使用越来越多&#xff0c;可能很多想使用该技术方案项目还不知道具体该怎么搭建云传输服务器&#xff0c;具体怎么使用实时云渲染平台系统。点量云小芹将对这两个问题做集中分享。 一、实时渲染服务器怎么搭建&…

测试老鸟,对软件测试行业的看法,“我“测试人何去何从?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 首先一个软件做出…

Easy Excel 学习

学习官方地址&#xff1a;Easy Excel官方 maven依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.3.0</version> </dependency> 做个标记&#xff0c;后续加测试类

2023.12.22 关于 Redis 数据类型 String 常用命令

目录 引言 String 类型基本概念 SET & GET SET 命令 GET 命令 MSET & MGET MSET 命令 MGET 命令 SETNX & SETEX & PSETEX SETNX 命令 SETEX 命令 PSETEX 命令 计数命令 INCR 命令 INCRBY 命令 DECR 命令 DECRBY 命令 INCRBYFLOAT 命令 总结…

Java 解决远程调用 ssl 证书认证问题

Java 解决远程调用 ssl 证书认证问题 方法 1方法 2方法 3 方法 1 在 jdk 目录导入证书。 首先要下载 服务器 ssl 证书&#xff0c;下载完成之后。把它命名成 Root.cer 后面使用 cmd 命令行 在 jdk 目录导入。 例如 &#xff1a; jdk 的目录为&#xff1a;D:\JetBranins\Intel…

LINUX tar 压缩和解压缩

压缩文件命令 tar tar -cvzf xxx.tar.gz dir/file1 dir/file2 dir/file3 ... dir/filen --exclude *.txt xxx为压缩后的路径/文件夹/文件名字 路径可以不用写 .tar.gz为压缩算法文件后缀 使用 --exclude 选项来排除文件或目录 压缩算法后缀 .tar .tar.gz .tar.bz2 .tar.xz 下…

软考高项通过人数增加70%!考试难度真的降低了?

近日&#xff0c;河北省人事考试网陆续公布了“2023年度上半年和下半年计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试河北省合格人员公示名单”。 从名单来看&#xff0c;2023年度下半年软考通过人数相较于上半年大幅提高。 河北软考合格人数统计 2023年上…

NeurIPS已成为了AI人才招聘的最大盛会,连Hinton都“应聘”过

在一周前美国举行的年度最热门的人工智能大会NeurIPS 2023上&#xff0c;有超过1万名世界顶尖AI研究人员聚集在此。 而除了研究员之外&#xff0c;中国科技公司和华尔街公司是其中最突出的参会者&#xff0c;他们都背负着抢夺AI人才的任务。 大模型人才最受欢迎 随着今年Cha…

深度学习中的Dropout

1 Dropout概述 1.1 什么是Dropout 在2012年&#xff0c;Hinton在其论文《Improving neural networks by preventing co-adaptation of feature detectors》中提出Dropout。当一个复杂的前馈神经网络被训练在小的数据集时&#xff0c;容易造成过拟合。为了防止过拟合&#xff…

06组团队项目-Beta冲刺-3/3

github仓库&#xff1a;https://github.com/orgs/oucdehaze/repositories b站视频链接&#xff1a;06组团队项目-Beta冲刺-3/3_哔哩哔哩_bilibili 冲刺概况汇报 前端 上周冲刺中完成的任务及遇到的问题 对网站页面组件和整体进一步美化&#xff0c;提高各组件之间的协调度&…