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

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.lryc.cn/news/442443.html

相关文章:

  • oracle 11g写一个判断是否是身份证的函数,函数名称为:FUN_IS_IDENNO
  • 如何使用Spring Cloud Gateway搭建网关系统
  • 油烟机制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
  • 《拿下奇怪的前端报错》序章:报错输出个数值数组Buffer(475) [Uint8Array],我来教它说人话!
  • Docker 里面按照ifconfig
  • DOS(Disk Operating System,磁盘操作系统)常用指令
  • VSCode集成Python环境搭建配置详细步骤
  • OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【扩展组件】上
  • Windows【环境 01】服务器系统重装后的服务恢复(ES\Redis\Jafka\Tomcat)环境变量和服务注册
  • 发现编程的全新境界——明基RD280U显示器使用体验
  • 使用阿里OCR身份证识别
  • 8. 详细描述一条 SQL 语句在 MySQL 中的执行过程。
  • C++--类的实例化
  • Vue vs React vs Angular 的对比和选择
  • Yolov8-pose关键点检测:一种新的自适应算法轻量级通道分割和变换(ALSS)模块,解决红外检测场景存在严重遮挡和重叠目标时的局限性
  • 无人机飞手培训机构六旋翼训练无人机技术详解
  • CX8903:电动车手机充电器降压芯片,搭配协议实现快充
  • leaflet加载GeoServer的WMS地图服务.md
  • Shire 智能体市场:IDE 一键安装多智能体,协同打造集体智慧 Copilot
  • 机器学习笔记(一)初识机器学习
  • linux如何查看当前的目录所在位置
  • 【JavaEE】线程创建和终止,Thread类方法,变量捕获(7000字长文)
  • [Python数据可视化] Plotly:交互式数据可视化的强大工具
  • Excel--DATEDIF函数的用法及参数含义
  • 执行网络攻击模拟的 7 个步骤
  • 技术成神之路:设计模式(十四)享元模式
  • 使用systemctl实现开机自启动jar包
  • 2024.9.20营养小题【2】(动态分配二维数组)
  • 前端web端项目运行的时候没有ip访问地址
  • 微服务架构陷阱与挑战