[C++基础学习]----01-C++数据类型详解

news2024/12/23 22:28:50

前言

        C++是一种静态类型的编程语言,它提供了丰富的数据类型来存储和操作数据。这些数据类型为C++程序员提供了丰富的选择,可以根据具体需求来选择最合适的类型来存储和操作数据。下面详细解释一些常见的C++数据类型,包括其原理和使用方法:

正文

01-数据类型简介

        整数类型(int、short、long、long long):

        a、这些类型用于表示整数,其范围和精度根据具体的类型而定。

        b、原理:整数类型通常使用固定的位数来表示整数,可以是有符号或无符号的。

        c、使用方法:int通常是默认的整数类型,但你可以根据需求选择更适合的类型。

        浮点数类型(float、double、long double):

        a、用于表示带有小数部分的数值,精度和范围随类型而异。

        b、原理:浮点数采用IEEE 754标准表示,分为单精度(float)、双精度(double)和扩展精度(long double)。

        c、使用方法:double通常是默认的浮点数类型,提供较高的精度,但会占用更多的内存。

        数组(Array):

        a、用于存储具有相同数据类型的元素的集合。

        b、原理:数组在内存中是一块连续的存储区域,元素通过索引进行访问。

        c、使用方法:声明数组时指定元素类型和大小,可以使用下标访问元素。

        结构体(struct):

        a、允许将不同类型的数据组合在一起,形成一个自定义的数据类型。

        b、原理:结构体将多个数据字段打包成一个单独的对象。

        c、使用方法:定义结构体并声明其成员变量,可以通过成员运算符.访问成员变量。

        类(class):

        a、类似于结构体,但可以包含成员函数,从而实现面向对象编程。

        b、原理:类将数据和操作数据的函数打包在一起,提供了封装、继承和多态等特性。

        c、使用方法:定义类及其成员函数,可以通过对象来调用成员函数。

        指针(Pointer):

        a、存储内存地址的变量,用于间接访问内存中的数据。

        b、原理:指针变量存储了一个内存地址,可以通过解引用操作符*来访问该地址处的值。

        c、使用方法:声明指针时需要指定指向的数据类型,可以使用new来动态分配内存,使用delete释放内存。

        引用(Reference):

        a、变量的别名,允许对同一内存位置的不同名称进行访问。

        b、原理:引用实际上是一个已存在变量的别名,不占用额外的内存空间。

        c、使用方法:在定义时使用&符号声明引用,之后可以直接使用引用来操作原始变量。

02-整型

        #include <iostream>表示:头文件,给予使用部分功能的权限 用于存储iostream类库的 源文件 ,在这个程序中用于提供输出这项功能。C++/C++11中头文件iostream定义了标准输入/输出流对象。包含了iostream也自动包含了ios、streambuf、istream、ostream和iosfwd。
        using namespace std; 表示:namespace是指标识符的各种可见范围。命名空间用关键字namespace 来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。

#include <iostream>
using namespace std;


void main() {
// 用void替换int,这样能少打一个return 

	//1、短整型 数据范围(-32768~32767)
	short num1 = 10;
	//2、整型
	int num2 = 10;
	//3、长整型
	long num3 = 10;
	//4、长长整型
	long long num4 = 10;
	
	cout << "num1 = " << num1 << endl;
	cout << "num2 = " << num2 << endl;
	cout << "num3 = " << num3 << endl;
	cout << "num4 = " << num4 << endl;
	system("pause");


}
03-实型

        实型(也叫浮点型)用于表示小数,因为程序中并不一定都是整数,还有小数。具体代码和解释如下:

#include<iostream>
using namespace std;

int main()
{
	
	//1、单精度   float  有效数字范围为7位      有效数字统计时,也会统计小数点前面的数字
	//2、双精度   double 有效数字范围为15~16位 
	//默认情况下,输出一个小数,会显示出6位有效数字

	float f1 = 3.1415926f;//初始值后加字母f是因为不加字母时系统默认为双精度
	cout << "f1 = " << f1 << endl;

	double d1 = 3.1415926;

	cout << "d1 = " << d1 << endl;

	//统计float和double占用的内存空间
	cout << "float 占用的内存空间为:" << sizeof(f1) << endl;

	cout << "double 占用的内存空间为:" << sizeof(d1) << endl;

	//也可以用科学计数法表示小数,不常用,主要用于明白别人写的代码是什么意思
	float f2 = 3e2; //当e之后跟的是正整数时,它表示 3 * 10 ^ 2
	cout << " f2 = " << f2 << endl;

	float f3 = 3e-2;//当e之后跟的是负整数时,它表示 3 * 0.1 ^ 2
	cout << "f3 = " << f3 << endl;
	system("pause");
	return 0;

}
04-字符型

        字符型变量用于显示单个字符 :       

        1、在显示变量时,用单引号将字符括起来,不能用双引号

        2、单引号只能有一个字符,不能是字符串

        3、C和C++中字符型变量只占用1个字节

        4、字符型变量并不是把字符本身存储到内存中,而是将对应的ASCII编码放入存储单元

#include <iostream>
using namespace std;

int main() {

	
	// 掌握以下四点
	// 1、字符型变量创建方式
	char ch = 'b';
	cout << ch << endl;

	//2、字符型变量所占内存大小
	cout << "char字符型变量所占内存:" << sizeof(char) << endl;

	//3、字符型变量常见错误
	//char ch2 = "b"; // 创建字符型变量必须用单引号
	//char ch2 = 'abcde';//单引号中只能由一个字符

	//4、字符型变量对应ASCII编码
	// "(int)ch"命令可以将ASCII码强制转为10进制数,A-Z对应65-90,a-z对应97-122
	cout << (int)ch << endl;

	system("pause");
	return 0;
}
05-字符串型
#include <iostream>
using namespace std;
#include <string>
int main()
{
	//1、C风格的字符串
	//注意:char 字符串名(即str)后要加[],等号后面要用双引号包含起来字符串。
	char str[] = "hello world";//str代表字符串的变量
	cout << str << endl;//这里指将字符串变量输出,注意str不可加双引号

	//2、C++风格字符串
	string str2 = "hello";
	cout << str2 << endl;//但是现在不能输出,还需要加一个头文件#include<string>

	system("pause");

	return 0;

}
06-sizeof关键字

        sizeof 是 C/C++ 中的一个运算符,用于获取数据类型或变量在内存中占用的字节数。它的作用和原理如下:

        获取数据类型大小: 你可以使用 sizeof 来获取任意数据类型的大小,包括基本数据类型、结构体、类等。

        获取变量大小: 除了数据类型外,你还可以用 sizeof 来获取变量在内存中所占的空间大小。

        编译时计算: sizeof 是在编译时计算的,而不是在运行时。编译器在编译时就知道每种数据类型或变量所占用的内存空间大小。

        以字节为单位: sizeof 返回的是以字节为单位的大小,一个字节通常由8位组成。

        不同平台可能不同: 数据类型的大小在不同的编译器和不同的平台上可能会有所不同,但通常遵循一定的规则和标准。

        对于数组的处理: 对于数组,sizeof 返回整个数组所占用的空间大小,而不是数组的指针大小。

        对于指针的处理: 对于指针,sizeof 返回指针本身所占用的空间大小,而不是指针指向的对象所占用的空间大小。

        不对表达式求值: 在使用 sizeof 时,不会对表达式进行求值,只是计算表达式所表示的类型或变量的大小。

#include<iostream>
using namespace std;

int main()
{
	//整型:short(2指占的内存大小)  int(4)  long(4)   long long(8)
	//可以利用sizeof求出数据类型占用内存的大小
	//语法:(就是书写方式)sizeof (数据类型 / 变量)

	//例如:
	short num1 = 10;
	cout << "short占用的内存空间为:" << sizeof(num1) << endl;
	//注:sizeof后写数据类型(short)或者变量(num1)都可以输出占用的内存空间
	int num2 = 10;
	cout << "int占用的内存空间为:" << sizeof(int) << endl;

	long num3 = 10;
	cout << "long占用的内存空间为:" << sizeof(num3) << endl;

	long long num4 = 10;
	cout << "long long占用的内存空间为:" << sizeof(long long) << endl;


	system("pause");

	return 0;

}
 07-转义字符

        使用方法和原理解释如下:

#include <iostream>
using namespace std;

int main() {
	// 转义字符用于一些不能显示出来的ASCII字符
	/* 主要用到以下三个字符
	   1、\n 用于换行
	   2、\t 用于水平制表
	   3、\\ 代表一个反斜线字符"\"
	*/
	// 1、\n 用于换行
	cout << "hello world\n";

	//2、\t 用于水平制表 作用就是可以整齐输出数据
	cout << "aaa\thelloworld" << endl;
	cout << "aaaaa\thelloworld" << endl;
	cout << "aaaaaaa\thelloworld" << endl;

	// 3、\\ 代表一个反斜线字符"\"
	cout << "\\" << endl; // 必须是双引号

	system("pause");
	return 0;
}
08-转义字符

        使用方法和原理解释以及运行结果如下:

#include<iostream>
using namespace std;
#include <string>
int main() {

	// 数据输入
	// 1、整型
// 	int a = 0;
// 	cout << "请给整型变量a赋值:" << endl;
// 	cin >> a;
// 	cout << "整型变量a = " << a << endl;
	// 2、浮点型
// 	float f = 3.14f;
// 	cout << "请给浮点型f变量赋值:" << endl;
// 	cin >> f;
// 	cout << "浮点型变量f = " << f << endl;
// 	// 3、字符型
// 	char ch = 'a';  //字符用单引号表示
// 	cout << "请给字符型ch变量赋值:" << endl;
// 	cin >> ch;
// 	cout << "字符型变量ch = " << ch << endl;
	// 3、字符串型
// 	string str = "abc";  // 字符串用双引号表示
// 	cout << "请给字符型str变量赋值:" << endl;
// 	cin >> str;
// 	cout << "字符型变量str = " << str << endl;
	// 3、布尔类型
	bool flag = true;
	cout << "请给布尔类型flag变量赋值:" << endl;
	cin >> flag;
	cout << "布尔类型变量flag = " << flag << endl;


	system("pause");
	return 0;
}

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

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

相关文章

ADOP带您科普什么是光纤网卡,它跟普通网卡有什么区别?

光纤网卡&#xff0c;也称为网络适配器或网络接口卡&#xff08;NIC&#xff09;&#xff0c;是一种用于将计算机和服务器等设备连接到数据网络的硬件设备。它通常装有一个或多个端口&#xff0c;可以通过这些端口连接不同类型的网络线缆&#xff0c;如RJ45接口的网络跳线或SFP…

云贝餐饮连锁V2-2.9.9源码

云贝餐饮连锁V2独立版、版本更新至2.9.9&#xff0c;小程序、公众号版本&#xff0c;全插件&#xff0c;公众号小程序端&#xff0c;独立版&#xff1b; 带商家端&#xff0c;修复收银台、排队点餐、堂食点餐&#xff1b;最新版更新 搭建环境教程: 系统环境&#xff1a;CentO…

Wi-Fi HaLow:重塑物联网的未来

Wi-Fi HaLow&#xff1a;引领物联网连接的革命 数字时代的蓬勃发展正在引发一场深刻的变革&#xff0c;物联网已经融入到我们的日常生活和工作中&#xff0c;成为不可或缺的一部分。随着新一代Wi-Fi技术一Wi-Fi HaLow的崭露头角&#xff0c;有望在2024年及未来&#xff0c;重新…

stm32f4单片机强制类型转换为float程序跑飞问题

如题&#xff0c;在一个数据解析函数中使用了*(float *)&data[offset]&#xff0c;其中data为uint8类型指针&#xff0c;指向的value地址为 可以看到地址0x20013A31非对齐&#xff0c;最终在执行VLDR指令时导致跑飞 VLDR需要使用对齐访问 跑飞后查看SCB寄存器发现确实是非…

磁盘未格式化,数据恢复大揭秘

一、磁盘未格式化现象概述 在日常使用电脑的过程中&#xff0c;我们有时会遇到磁盘未格式化的提示&#xff0c;这意味着我们的磁盘突然间变得不可识别&#xff0c;所有的数据和文件都似乎消失了。这种情况常常发生在外接硬盘、U盘等存储设备上&#xff0c;给我们的工作和生活带…

LC 142. 环形链表 II

142. 环形链表 II 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评…

C++ ─── 隐式类型转换、static成员、友元、内部类

目录 1. explicit关键字 2. static成员 2.1 概念 2.2 特性 3. 友元 3.1 友元函数 3.2 友元类 4. 内部类 5. 再次理解类和对象 1. explicit关键字 构造函数不仅可以构造与初始化对象&#xff0c;对于接收单个参数的构造函数&#xff0c;还具有类型转换的作用。接收单个…

基因组组装:NextDenovo2 使用大全

简介 NextDenovo 是一种针对长序列读取&#xff08;包括CLR和ONT技术&#xff09;的新型基因组组装工具。它采取了一种“先校正错误再进行组装”的方法&#xff0c;这与canu工具类似&#xff0c;但对于PacBio HiFi读取数据则无需进行校正。相较于其他工具&#xff0c;NextDenov…

使用 Vitepress 构建博客并部署到 github 平台

前言 最近写了好多篇 Chrome 浏览器插件相关的文章&#xff0c;有十几二十篇&#xff0c;就想着构建个博客&#xff0c;用来放置相应的文章。 正好前段时间看到 VitePress 1.0.0 发布了&#xff0c;而且是用 markdown 写文章&#xff0c;正好写插件文章的时候文章都是 md 格式…

达梦数据查询语句不带模式名称,报错无效的表或视图名[某某表]

[执行语句1]: select * from sys_config 执行失败(语句1) -2106: 第2 行附近出现错误: 无效的表或视图名[SYS_CONFIG]1条语句执行失败 解决方案&#xff1a; 保证模式名和用户名一致&#xff0c;而且你当前登录的用户要和模式名一致 把用户换成一样的&#xff0c;查询就可以不 …

如何利用 GPT 自我提高写作能力

GPT革命&#xff1a;如何用AI技术重新定义写作 介绍 在我们的数字时代&#xff0c;了解自我提高写作的必要性至关重要。 随着 GPT 的兴起&#xff0c;我们正在见证书写的变革时代。 这篇扩展文章深入探讨了 GPT 如何显着提高写作技能。 拥抱未来&#xff1a; 人工智能时代的写…

HarmonyOS 应用开发——入门

首先当然是华为的官方文档了&#xff0c;要认真学习: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/start-overview-0000001478061421-V2 不想花时间看&#xff0c;可以看我下面总结的干货&#xff0c;哈哈 第一个问题&#xff1a;stage架构和fa架构的区…

Linux下的常用基本指令

基本指令 前言ls 指令语法功能常用选项举例注意要点关于拼接关于 -a关于文件ls与/的联用ls与根目录ls与任意文件夹ls与常用选项与路径 ls -d与ls -ldls与ll pwd命令语法功能常用选项注意要点window与Linux文件路径的区别家目录 cd 指令语法功能举例注意要点cd路径.. .相对路径与…

【中级软件设计师】上午题12-软件工程(1):软件工程模型、敏捷方法、软件需求、系统设计

上午题12-软件工程&#xff08;1&#xff09; 1 软件过程1.1 CMM 能力成熟度模型1.1 CMMI (建议直接看思维导图&#xff09; 2 软件过程模型2.1 瀑布模型2.2 增量模型2.3 演化模型2.3.1 原型模型2.3.2 螺旋模型 2.5 喷泉模型 3 统一过程&#xff08;UP&#xff09;模型4 敏捷方…

Kafka报错ERROR Exiting Kafka due to fatal exception during startup

报错&#xff1a; ERROR Exiting Kafka due to fatal exception during startup. (kafka.Kafka$) kafka.common.InconsistentClusterIdException: The Cluster ID FSzSO50oTLCRhRnRylihcg doesnt match stored clusterId Some(0oSLohwtQZWbIi73YUMs8g) in meta.properties. Th…

zabbix监控Tongweb7企业版(by lqw+sy)

此贴参考zabbix通过jmx监控Tongweb7企业版&#xff08;by lqw&#xff09;&#xff0c;是在此帖子的基础和同事整理的文档基础上重新部署验证的优化版&#xff0c;使用的是centos7。 优点&#xff1a; 1.不需要通过jmx配置进行监控。&#xff08;jmx配置需要修改tongweb的配置…

鸿蒙开发实战

问题&#xff1a; 1&#xff0c;鸿蒙DevEco Studio 机测试Failure[INSTALL_FAILED_APP_SOURCE_NOT_TRUSTED] 勾选☑️ 勾选自动签名&#xff0c;然后自动跳转登录华为网站&#xff0c;登录即可。 //持续更新&#xff01;

长图高效切割新体验:支持按随机宽度灵活裁切,释放无限创意与效率

图像的传播已经成为我们日常生活的一部分。而长图&#xff0c;作为一种特殊的图像形式&#xff0c;其独特的展示方式能够吸引更多的目光。但是&#xff0c;如何将长图高效切割&#xff0c;以展现其独特的魅力呢&#xff1f;现在&#xff0c;我们为您带来了一款支持按随机宽度切…

Leetcode-17.04. 消失的数字

面试题 17.04. 消失的数字 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/missing-number-lcci/ 目录 面试题 17.04. 消失的数字 - 力扣&#xff08;LeetCode&#xff09; 题目 解题(注释) 第一种方法 第二种方法 第三种方法 题目 数组nums包含…

快速集成xxljbo

目录 1.下载工程 2.docker集成admin 1.拉取镜像 2.启动xxl-job 3.访问 3.配置测试 1.添加依赖 2.配置yml文件 3.添加配置类