6.C++程序中的基本数据类型

数据类型是指在C++中用于声明不同类型变量或函数的一个系统或抽象或者是一个分类,它决定了变量存储占用的内存空间以及解析存储的位模式。其实数据类型可以理解为固定内存大小的别名,是创建变量的模具,具体使用哪种模具(包括自定义)需要根据实际问题的抽象结果来确定。一旦确定数据类型,那么此数据所占用的内存模式,开辟的内存大小都会被固定下来。

在前面我们已经使用了一些数据类型了,比如

#include <iostream>
using namespace std;int radius = 0;  //定义了整型
int area() {int radius = 30;cout << "Radius=" << radius*PI << endl;return 0;
}int main() {const float PI = 3.14; //定义PI值  PI为单精度浮点型cout << "pi=" << PI << endl;radius = 10;cout << "Radius=" << radius  << endl;cout << "Area=PI(r*r)=" << (PI * radius * radius) << endl;area();cout << "Radius=" << radius  << endl;cout << "Area=PI(r*r)=" << (PI * radius * radius) << endl;}

看上面的注释,radius前面的int表示的是整型;PI前端的float表示的是单精度浮点型。

那么C++中的数据类型都包括什么呢?

1.基本数据类型:

整数类型(整型),浮点类型(小数类型,浮点型),字符类型(字符)和void(无类型,主要用于函数的返回)。

2.派生类型和扩展类型:

由基本数据类型衍生出来的类型,比如,函数,结构体,指针,枚举,联合体等。

咱们主要讲基本数据类型,其它的类型,在后面使用到的时候再讲解。

1.整数型(整型)

整型用于存放整整,所占的内存取决于编译器(32位或64位)编译的目标不同,所占内存大小不同,int 在32位系统中为 4字节,也就是32位。在一些16位系统中,int 为2字节,在64位系统中int为8字节,但实际上在64位系统中,int类型的数值达不到8字节。

一般我们在32位机器中,int的取舍范围为:-2^31 ~ 2^31-1。

事实上,整型还有其它的修饰符,如short、 long 等

‌short‌:通常占用2字节(16位),取值范围为-2^15 ~ 2^15-1。

‌int‌:在大多数平台上占用4字节(32位),取值范围为-2^31 ~ 2^31-1。

‌long‌:在32位系统中通常也是4字节,但在64位系统中可能为8字节,取值范围与long long相同,即-2^63 ~ 2^63-1。

‌long long‌:无论系统或编译器如何,都占用8字节,取值范围为-2^63 ~ 2^63-1。

此外,还有无符号整型类型,如‌unsigned short‌、‌unsigned int‌、‌unsigned long‌和‌unsigned long long‌,它们的取值范围分别是在对应有符号类型的基础上,将负数的部分替换为从0到最大值。例如,‌unsigned int‌的取值范围是0到2^32-1。

需要注意的是,整型数据类型的具体实现可能因编译器和操作系统的不同而有所差异。例如,在某些编译器和操作系统中,‌long‌可能被实现为4字节或8字节,具体取决于平台。因此,编程时应该考虑到这些差异,以确保代码的可移植性和正确性。此外,当进行数值计算时,应避免整数溢出的情况,以确保计算的正确性‌。

整数除了用十进制表示外,还可以使用二进制和八进制表示,

#include <iostream>
using namespace std;int radius = 0;  //定义了整型int main() {int binInt=0b111100;int octInt=034;const float PI = 3.14; //定义PI值  PI为单精度浮点型cout << "pi=" << PI << endl;radius = 10;cout << "Radius=" << radius  << endl;cout << "Area=PI(r*r)=" << (PI * radius * radius) << endl;cout << "Radius=" << radius  << endl;cout << "Area=PI(r*r)=" << (PI * radius * radius) << endl;}

上面的binInt变量为二进制表示,octInt变量为八进制表示。

执行结果为:

 可以正常输出。

浮点型表示小数的类型,经常使用的为float或double关键字来定义浮点型变量。

#include <iostream>
using namespace std;int main() {float flot=3.14;double doub=3.14;cout << "flot:"<< flot << endl;cout << "sizeOf:"<< sizeof(flot) << endl;cout << "doub:"<< doub << endl;cout << "sizeOf:"<< sizeof(doub) << endl;}

 上面的代码定义了两个浮点类型,其中float类型为单精度,double为双精度,他们打印出来以及所占内存大小为:

 字符型表示单个字符,通过用char(窄字符)或wchar_t(宽字符)来表示,

#include <iostream>
using namespace std;int main() {char ch1 = 'B';wchar_t ch2 = L'B';string str = "ABCABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDD";cout << "ch1:" << ch1 << endl;cout << "sizeOf:" << sizeof(ch1) << endl;cout << "ch2:" << ch2 << endl;cout << "sizeOf:" << sizeof(ch2) << endl;cout << "str:" << str << endl;cout << "sizeOf:" << sizeof(str) << endl;}

 

 wchar_t占两个字节,char只占用一个字节,string 表示的是字符串,是多个字符组成的,一般来说他不属于基本数据类型,但是字符串是经常用到的,所以在这里也算到基本数据类型中了。

 布尔类型

布尔类型用于存放真/假,在c++中使用bool表示布尔类型,一般使用1表示真,0表示假,虽然使用1或0没有问题,但是如果定义为bool,true或false更明确。

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

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

相关文章

Python安装不再难!全平台保姆级教程带你轻松搞定!

Python介绍 Python是一种功能强大且灵活的编程语言&#xff0c;被广泛应用于各个领域。以下是Python在不同应用领域的一些常见用途&#xff1a; 网络开发 Python提供了丰富的库和框架&#xff0c;使其成为网络开发的理想选择。诸如Django、Flask和Pyramid等框架可以帮助开发人员…

一张图解析FastAdmin中的表格列表(bootstrap-table)的功能(备份)

功能描述 请根据图片上的数字索引查看对应功能说明。 1.菜单名称和描述 默认生成的CRUD是没有菜单名称和描述显示的&#xff0c;如果需要显示则可以修改权限管理->菜单规则&#xff0c;给对应菜单的添加上备注信息后即可显示&#xff0c;支持HTML 2.TAB过滤选项卡 在一键…

Linux之CentOS 7.9-Minimal部署Oracle 11g r2 安装实测验证(桌面模式)

前言: 发个之前的库存… Linux之CentOS 7.9-Minimal部署Oracle 11g r2 安装实测验证(桌面模式) 本次验证的是CentOS_7_Minimal-2009桌面模式来部署Oracle 11g r2,大家可根据自身环境及学习来了解。 环境:下载地址都给你们超链好了 1、Linux系统镜像包: 1.1 CentOS-7-x86_…

Linux 删除文件不释放空间问题处理

背景&#xff1a; 服务器磁盘空间已经达到100%&#xff0c;删除存放日志路径下的文件后&#xff0c;发现空间并未释放&#xff01; 原因&#xff1a;在linux系统中&#xff0c;通过rm删除文件将会从文件系统的文件夹结构上解除链接(unlink)然后删除&#xff0c;然而假设文件是被…

探索Python的Excel世界:openpyxl的魔法之旅

文章目录 探索Python的Excel世界&#xff1a;openpyxl的魔法之旅背景&#xff1a;为什么选择openpyxl&#xff1f;什么是openpyxl&#xff1f;如何安装openpyxl&#xff1f;简单的库函数使用方法场景应用&#xff1a;openpyxl在实际工作中的应用常见bug及解决方案总结 探索Pyth…

如何利用视觉分析实现扬尘检测

随着城市化和工业化进程的加速&#xff0c;扬尘污染已成为全球各大城市面临的环境问题之一。建筑施工、道路交通以及工业活动产生的扬尘不仅影响空气质量&#xff0c;严重时还会引发呼吸道疾病&#xff0c;威胁公众健康。传统的扬尘检测手段多为传感器、采样仪等设备&#xff0…

【Echarts】vue3打开echarts的正确方式

ECharts 是一个功能强大、灵活易用的数据可视化工具&#xff0c;适用于商业报表、数据分析、科研教育等多种场景。那么该如何优雅的使用Echarts呢? 这里以vue3为例。 安装echarts pnpm i echarts封装公用方法 // ts-nocheck import * as echarts from echarts; // 我们这里借…

【C++指南】inline内联函数详解

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 目录 引言 C为什么引入了inline来替代C语言中的宏 inline的基本用法 定义inline函数 inline的优势与…

IO模型---BIO、NIO、IO多路复用、AIO详解

本篇将想给详细解释一下什么是BIO、NIO、IO多路复用以及AIO~ 同步的阻塞(BIO)和非阻塞(NIO)的区别 BIO&#xff1a;线程发来IO请求后&#xff0c;一直阻塞着IO线程&#xff0c;需要缓冲区这边数据准备好之后&#xff0c;才会进行下一步的操作。 举个&#x1f330;&#xff1…

HarmonyOS应用开发者基础认证

目录 一、判断二、单选三、多选 一、判断 1、HarmonyOS提供了基础的应用加固安全能力&#xff0c;包括混淆、加密和代码签名能力。正确 2、可以通过ohpm uninstall 指令下载指定的三方库。错误 3、支持模块化开发是指一个应用通常会包含多种功能&#xff0c;将不同的功能特性…

【读书笔记-《30天自制操作系统》-23】Day24

本篇内容依然比较简单&#xff0c;主要是优化窗口功能以及开发定时器应用程序。首先是优化窗口的切换功能&#xff0c;实现通过键盘和鼠标切换窗口&#xff0c;然后是实现通过鼠标关闭窗口。接着实现不同窗口输入状态的切换&#xff0c;最后是实现定时器的API与应用程序。 1.…

Windows Server2016多用户登录破解

使用场景 很多时候&#xff0c;公司开发和测试运维会同时登录同一台windows服务器进行查询、更新、维护等操作&#xff0c;本文就来介绍一下Windows2016配置多人远程桌面登录实现&#xff0c;感兴趣的可以了解一下。 操作流程 &#xff08;1&#xff09;首先桌面需要安装远程…

旅行社区应该如何规划?

近年来&#xff0c;旅游行业逐渐恢复&#xff0c;包括微度假、精致露营、康养旅游、乡村民宿等旅游模式。用户旅游支出、旅游人次逐渐恢复&#xff0c;旅游收入仍待提升。 那么旅游社区应该如何搭建&#xff0c;内容如何规划呢&#xff1f; 我们了解到&#xff0c;很多旅游网…

kettle 数据库迁移 使用分页原理实现 数据库mysql

使用 kettle 9.0 先修改配置文件: C:\Users\xx\.kettle 新增如下配置,解决mysql 空字符串 自动转 null bug KETTLE_EMPTY_STRING_DIFFERS_FROM_NULLY git地址: GitHub - 2292011451/kettle_tool 第一步: 先把要迁移的表进行读取,循环查询每个表的最大数量以及页数,追加到…

ROS 设置dhcp option 6 多个地址格式

ROS routeOS 手工设置 dhcp 服务 option 6 多个dns 地址格式。字符串方式

机器学习(西瓜书)第 14 章 概率图模型

14.1 隐马尔可夫模型 机器学习最重要的任务&#xff0c;是根据一些已观察到的证据&#xff08;例如训练样本&#xff09;来对感兴趣的未知变量&#xff08;例如类别标记&#xff09;进行估计和推测。概率模型&#xff08;probabilistic model&#xff09;提供了一种描述框架&a…

动态线程池(四)

动态线程池 dtp生命周期管理 生命周期相关类图 DtpExecutor EagerEtpExecutor OrderedDtpExecutor TaskWrapper任务包装器 MdcRunnable TaskWrappers NotifyEnum NoticeManager通知管理器 InvokerChain调用链

【CPP】类与继承

14 类与继承 在前面我们提到过继承的一些概念,现在我们来回顾一下 打个比方:在CS2中我们把玩家定义为一个类 class 玩家: 血量:100阵营(未分配)服饰(未分配)位置(未分配)武器(未分配)是否允许携带C4(未分配)是否拥有C4(未分配) 当对局创建时,会新生成两个类,这两个类继承自&qu…

JS实现树形结构数据中特定节点及其子节点显示属性设置的技巧(可用于树形节点过滤筛选)

大家好&#xff0c;今天我要分享的是如何在树形结构的数据中&#xff0c;根据特定条件设置节点及其所有子节点的显示属性。在实际项目中&#xff0c;这种需求非常常见&#xff0c;特别是在需要动态展示和隐藏节点的情况下。下面我将通过一个具体的示例来讲解实现过程。 需求分析…

有关C# .NET Core 过滤器的使用

想用一个过滤器实现特定接口的审核日志记录&#xff0c;结果报了错&#xff0c;看了看感觉有些基础要补&#xff0c;所以想记录下来 错误&#xff1a; 在属性过滤器中使用了依赖注入&#xff0c;结果在应用在控制层接口时报了传参的错 //过滤器 public class AuditRecordFil…