【C++ 入坑指南】(05)数据类型

这篇具有很好参考价值的文章主要介绍了【C++ 入坑指南】(05)数据类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【C++ 入坑指南】(05)数据类型

C++ 规定在创建一个变量或常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。

一、整型

作用:整型变量表示的是整数类型的数据。

C++ 中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同

注意:不同系统会有所差异,一字节为 8 位。

数据类型 占用空间 取值范围
short 2个字节 -32768 到 32767
int 4个字节 -2147483648 到 2147483647
long Windows 为4个字节,Linux 为4个字节(32位),8字节(64位) -2147483648 到 2147483647
long long 8个字节 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

sizeof 关键字

作用:利用 sizeof 关键字可以统计数据类型所占内存大小。

语法:sizeof(数据类型 / 变量)

示例

#include <iostream>
#include <limits>

using namespace std;

int main()
{
	// short 
	cout << "short: \t\t" << "所占字节数:" << sizeof(short);

	cout << " short 的最大值: " << (numeric_limits<short>::max)() << " ,short 的最小值:" << (numeric_limits<short>::min)() << endl;

	// int
	cout << "int: \t\t" << "所占字节数:" << sizeof(int);

	cout << " int 的最大值: " << (numeric_limits<int>::max)() << " ,int 的最小值:" << (numeric_limits<int>::min)() << endl;

	// long
	cout << "long: \t\t" << "所占字节数:" << sizeof(long);

	cout << " long 的最大值: " << (numeric_limits<long>::max)() << " ,long 的最小值:" << (numeric_limits<long>::min)() << endl;

	// long long
	cout << "long long: \t\t" << "所占字节数:" << sizeof(long long);

	cout << " long long 的最大值: " << (numeric_limits<long long>::max)() << " ,long long 的最小值:" << (numeric_limits<long long>::min)() << endl;

	return 0;
}

二、实型(浮点型)

作用:用来表示小数

浮点型变量分为两种:

  1. 单精度 float;
  2. 双精度 double。

两者的区别在于表示的有效数字范围不同

数据类型 占用空间 有效数字范围
float 4字节 7位有效数字
double 8字节 15-16位有效数字

示例

#include <iostream>

using namespace std;

int main()
{
	// float
	float a = 3.14f;
	cout << "float: \t\t" << "所占字节数:" << sizeof(a) << endl;

	// double
	double d1 = 3.14;
	cout << "double: \t\t" << "所占字节数:" << sizeof(double) << endl;

	// 科学计数法
	float f1 = 4e2;  // 4 * 10 ^ 2 ,结果为400;
	cout << "f1 = " << f1 << endl;

	float f2 = 4e-2;  // 4 * 0.1 ^ 2 ,结果为0.04;
	cout << "f2 = " << f2 << endl;
	

	return 0;
}

三、字符型

作用:字符型变量用来显示单个字符,所占 1 个字节。

语法char ch = 'A';

注意

  1. 在显示字符型变量时,用单引号将字符括起来,不要用双引号;
  2. 单引号内只能有一个字符,不可以是字符串。
  3. 字符型变量对应的ASCII编码: a - 97,A - 65

四、字符串型

C++ 提供了以下两种类型的字符串表示形式:

  • C 风格字符串
  • C++ 引入的 string 类类型

4.1 C 风格字符串

语法char 变量名[ ] = "字符串值";

示例

int main()
{
	char str1[] = "Hello Kevin";

	cout << str1 << endl;
	

	return 0;
}

注意:

  1. 变量名后面需要加[ ] ;
  2. 字符串要用双引号括起来。

4.2 C++ 引入的 string 类类型

语法string 变量名 = "字符串值";

示例

#include <iostream>
#include <string>

using namespace std;

int main()
{
	string str = "Hello Kevin";

	cout << str << endl;
	
	return 0;
}

注意:需要加入头文件 #include <string>

五、布尔类型(bool)

作用:布尔数据类型代表真或假的值,常用于条件判断,占1个字节。

bool 类型只有两个值:

  • true ---- 真(本质是1)
  • false ---- 假(本质是0)

六、类型转换

C++ 中有四种类型转换:静态转换、动态转换、常量转换和重新解释转换。

6.1 静态转换(Static Cast)

作用:将一种数据类型的值强制转换为另一种数据类型的值。例如:将 int 类型转换为 char 类型。
示例

int main()
{
	//int 转 char
	int a = 95;
	char c = static_cast<char>(a);
	cout << c << endl;

	return 0;
}

6.2 动态转换(Dynamic Cast)

作用:只用于类继承结构中基类和派生类之间指针或引用的转换,可以进行向上、向下,或者横向的转换。

示例

int main()
{
	struct B { virtual void test() {} };
	struct D1 : virtual B { };
	struct D2 : virtual B { };
	struct MD : D1, D2 { };

	D1* pd1 = new MD();
	cout << pd1 << endl;

	// 向上转型
	B* pb = dynamic_cast<B*>(pd1);
	cout << pb << endl;

	// 向下转型
	MD* pmd = dynamic_cast<MD*>(pd1);
	cout << pmd << endl;

	// 横向转型
	D2* pd2 = dynamic_cast<D2*>(pd1);
	cout << pd2 << endl;

	return 0;
}

6.3 常量转换(Const Cast)

作用:不能去除变量的常量性,只能用来去除指向常数对象的指针或引用的常量性,且去除常量性的对象必须为指针或引用。

示例

int main()
{
	const int val = 6;

	cout << "&val=" << &val << ", val=" << val << endl;

	const int* cp = &val;
	int* p = const_cast<int*>(cp);
	*p = 2;

	cout << "&val=" << &val << ", val=" << val << endl;
	cout << "p=" << p << ", *p=" << *p << endl;

	return 0;
}

6.4 重新解释转换(Reinterpret Cast)

作用:将一个数据类型的值重新解释为另一个数据类型的值,通常用于在不同的数据类型之间进行转换。

示例:将地址转换成整数文章来源地址https://www.toymoban.com/news/detail-448700.html

int main()
{
	struct B { int val; };

	B b{ 101 };

	cout << "&b=" << &b << endl;
	long addr = reinterpret_cast<long>(&b);
	cout << "addr=" << addr << endl;

	return 0;
}

到了这里,关于【C++ 入坑指南】(05)数据类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据仓库】BI看板DataEase入坑指南

            开头夸夸国产开源BI软件DataEase,支持常见各种报表,还支持图表联动和上下级钻取,超赞有木有!!!         再来为什么说入坑,源码启动各种不服啊。本地用的maven3.5一直导入不了Java项目backend。后来看了官网bilibili源码启动视频,搞了1个多小时。注意和

    2024年02月16日
    浏览(50)
  • 05-1_Qt 5.9 C++开发指南_Model/View结构基础(基本原理;数据模型;试图组件;代理)

    Model/View(模型/视图) 结构是 Qt 中用界面组件显示与编辑数据的一种结构,视图 (View)是显示和编辑数据的界面组件,模型 (Model) 是视图与原始数据之间的接口。 Model/View 结构的典型应用是在数据库应用程序中,例如数据库中的一个数据表可以在一个 OTableView 组件中显示和编辑。

    2024年02月17日
    浏览(46)
  • CANopen | 对象字典OD 05 - 创建对象字典变量,映射到RPDO

    该章节的源代码地址:github 以上摘自《CANopen_easy_begin》的第7章。 CANopen从站有一个变量rx_Value,映射到PDO1上。接着,CANopen主站通过CANopen协议修改CANopen从站的变量rx_Value。 使用Objdictedit软件打开文件夹/obj_dir/Slave1.od对象字典。 在0x2000~0x5FFF的地址创建变量rx_Value,类型是uint1

    2024年02月09日
    浏览(57)
  • 向量数据库入坑指南:初识 Faiss,如何将数据转换为向量(一)

    我们日常使用的各种 APP 中的许多功能,都离不开相似度检索技术。比如一个接一个的新闻和视频推荐、各种常见的对话机器人、保护我们日常账号安全的风控系统、能够用哼唱来找到歌曲的听歌识曲,甚至就连外卖配送的最佳路线选择也都有着它的身影。 相信很多同学是第

    2024年02月05日
    浏览(42)
  • 【Go语言】常用变量类型的创建

    1. 切片slice 在Go语言中,创建切片有两种常见的方式:使用 var 声明空切片和使用 make 函数。 使用 var 声明空切片: 这种方式会声明一个空的切片,初始时没有分配底层数组。你可以使用 append 函数向空切片中添加元素,切片会根据需要自动扩容。 使用 make 函数创建切片: 这

    2024年01月24日
    浏览(39)
  • Python变量:创建、类型、命名规则和作用域详解

    变量是用于存储数据值的容器。 创建变量 Python没有用于声明变量的命令。 变量在您第一次为其分配值时被创建。 示例 变量不需要声明为特定类型,并且甚至在设置后可以更改类型。 示例 如果要指定变量的数据类型,可以使用类型转换。 示例 获取类型 您可以使用type()函数

    2024年02月08日
    浏览(37)
  • Go语言变量使用指南:声明、类型转换与字符串操作

    深入了解Go语言中变量的声明方式、字符和布尔类型的细节、字符串的不可变性以及基本数据类型之间的转换规则。

    2024年02月10日
    浏览(86)
  • C++ 变量类型

    变量其实只不过是程序可操作的存储区的名称。 在 C++ 中,有多种变量类型可用于存储不同种类的数据。 C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。 变量的名称可以由字母、数字和下划线

    2024年02月15日
    浏览(30)
  • 【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)

    🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 🌈C++笔记专栏: C++笔记 🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅 上篇回顾:上篇我们通过数组名为切入口引出数组与指针间的关系,本篇将介绍不同类型的指针变量在不同场景中的使用 对于字符和字符串,C语言

    2024年04月25日
    浏览(32)
  • 浮点类型详解及 IEEE754 规定

       🔗 《C语言趣味教程》👈 猛戳订阅!!! 0x00 引入:什么是浮点数? 在讲解浮点类型前,我们不妨先先来了解一下什么是浮点数, 浮点 (float point),又称  实型数 。 顾名思义就是 \\\"一个漂浮的点\\\",其英文 float 也是这个含义(浮动, 漂浮之意)。

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包