【C++ | 基本类型】bool、char、wcha_t、charl6_ t、char32_t、short、int、long、long long、float、double、long double

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
⏰发布时间⏰:2024-04-27 14:38:58

本文未经允许,不得转发!!!


在这里插入图片描述

在这里插入图片描述

🎄一、概述

内置的 C++类型分两组: 基本类型和复合类型。 本文将介绍基本类型, 即整数(包括字符和布尔类型在内)和浮点数。
C++的基本类型有如下12个:bool、char、wchar_t 、charl6_ t、char32_t、shortintlong、long long、floatdouble、long double,其中加粗的是C语言的基本类型,可以看到C++在C语言的基础上拓展了好几个类型,下面看看这些类型的简单介绍。
在这里插入图片描述


在这里插入图片描述

🎄二、bool

ANS1/ISOC++标准添加了一种名叫 bool 的新类型( 对 C++来说是新的)。 它的名称来源于英国数学家George Boole, 是他开发了逻辑律的数学表示法。

布尔变量的值可以是 true 或 false。

字面值 true 和 false 都可以通过提升转换为 int 类型, true 被转换为 1, 而 false 被转换为 0。

另外, 任何数字值或指针值都可以被隐式转换( 即不用显式强制转换) 为 bool 值。 任何非零值都被转换为 true, 而零被转换为 false:

🌰举例子:

// 01_bool.cpp
// g++ 01_bool.cpp 
#include <iostream>

using namespace std;

int main()
{
	// 字面值 true 和 false 都可以通过提升转换为 int 类型, true 被转换为 1, 而 false 被转换为 0
	bool bOne = true;
	bool bZero = false;
	cout << "bOne=" << bOne << " bZero=" << bZero << endl;
	
	// 任何非零值都被转换为 true, 而零被转换为 false:
	bool bStart = -100;
	bool bStop = 0;
	cout << "bStart=" << bStart << " bStop=" << bStop << endl;
	
	return 0;
}

编译运行结果如下:
在这里插入图片描述


在这里插入图片描述

🎄三、char、wchar_t、charl6_ t、char32_t

char:char 类型是专为存储字符( 如字母和数字) 而设计的。 现在, 存储数字对于计算机来说算不了什么, 但存储字母则是另一回事。编程语言通过使用字母的数值编码解决了这个问题。 因此, char 类型是另一种整型。虽然 char 最常被用来处理字符, 但也可以将它用做比 short 更小的整型。使用单引号括起来的字符,可以表示字符的字面值常量,如’A’、‘D’。

wchar_t:很多系统支持的字符都不超过 128 个,使用char型就够了,而有些系统需要存储更多的值,C++相对于C语言增加了另一种类型 wchar_t (宽字符类型)用来表示扩展字符集。这种类型的长度和符号特征与系统的具体实现有关,因此在一个系统中, 它可能是 unsigned short, 而在另一个系统中,则可能是 int。注意,前缀 L 来指示宽字符常量和宽字符串

charl6_t、char32_t:随着编程人员日益熟悉 Unicode,类型 wchar_ t 显然不再能够满足需求。类型 wchar_t 的长度和符号特征可能随着系统实现不一样而变化,因此,C++11 新增了类型char16_t 和 char32_t, 其中前者是无符号的, 长 16 位, 而后者也是无符号的, 但长 32 位。注意,前缀 u 表示char16_t 字符常量和字符串常量;前缀 U 表示 char32_t 常量和字符串常量

🌰举例子:

// 01_char_wchar.cpp
// g++ 01_char_wchar.cpp -std=c++0x
#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
	char a = 'A';
	// 字符你的Unicode码分别是:\u5b57\u7b26\u4f60
	wchar_t wc = L'字';	// 前缀L表示宽字符常量
	char16_t c16= u'符';// 前缀u表示char16_t字符常量
	char32_t c32= U'你';// 前缀U表示char32_t字符常量
	
	cout << "a=" << a << " wc=" << wc << " c16=" << c16 << " c32=" << c32 <<endl;
	
	printf("wc=%x, c16=%x c32=%x\n",wc, c16, c32);
	printf("sizeof(wc)=%lu, sizeof(c16)=%lu, sizeof(c32)=%lu\n",sizeof(wc), sizeof(c16), sizeof(c32));
	
	return 0;
}

编译时需要加-std=c++0x,让编译器支持部分 C++11 特性。运行结果如下:
在这里插入图片描述


在这里插入图片描述

🎄四、short、int、long、long long

计算机内存由一些叫做位 (bit) 的单元组成。C++的 short、int、long 和 long long 类型通过使用不同数目的位来存储值,最多能够表示 4 种不同的整数宽度。不同系统中,这四种类型的实现可能不同,进而导致长度不同。C++提供了一种灵活的标准,它确保了最小长度( 从 C 语言借鉴而来),如下所示:
• short 至少 16 位;
• int 至少与 short —样长;
• long 至少 32 位, 且至少与 int —样长;
• long long 至少 64 位, 且至少与 long —样长。
头文件 climits(在老式实现中为 limits.h)中包含了关于整型限制的信息。

整数后面的 1 或 L 后缀表示该整数为 long 常量;
u 或 U 后缀表示 unsigned int 常量;
表示类型 long long 的后缀 ll 和 LL
表示类型unsigned long long 的后缀 ull、Ull、uLL 和 ULL

这四个类型,基本和C语言差不多,没太多差异,简单了解一下即可。

🌰举例子:

// 01_short_int_long.cpp
// g++ 01_short_int_long.cpp
#include <iostream>
#include <climits>

using namespace std;

int main()
{
	int n_int = INT_MAX;
	short n_short = SHRT_MAX;
	long n_long = LONG_MAX;
	long long n_llong = LLONG_MAX;
	
	cout << "int is " << sizeof(int) << " bytes." << endl;
	cout << "short is " << sizeof n_short << " bytes." << endl;
	cout << "long is " << sizeof n_long << " bytes." << endl;
	cout << "long long is " << sizeof n_llong << " bytes." << endl;
	cout << endl;
	
	cout << "Maximum values:" << endl;
	cout << "int:" << n_int << endl;
	cout << "short:" << n_short << endl;
	cout << "long:" << n_long << endl;
	cout << "llong:" << n_llong << endl;
	
	cout << "Minimum int value = " << INT_MIN << endl;
	cout << "Bits per byte: " << CHAR_BIT  << endl;
	return 0;
}

在这里插入图片描述


在这里插入图片描述

🎄五、float、double、long double

浮点数能够表示带小数部分的数字。

浮点数的存储:计算机将这样的值分成两部分存储。 一部分表示值,另一部分用于对值进行放大或缩小。 下面打个比方。 对于数字34.1245 和 34124.5, 它们除了小数点的位置不同外,其他都是相同的。可以把第一个数表示为 0.341245( 基准值)和 100 (缩放因子),而将第二个数表示为 0.341245 (基准值相同) 和 10000 (缩放因子更大)。缩放因子的作用是移动小数点的位置, 术语浮点因此而得名。C++内部表示浮点数的方法与此相同, 只不过它基于的是二进制数, 因此缩放因子是 2 的幂, 不是 10 的幂。

浮点常量:默认情况下,代码里带小数点的数都是double类型的。如果希望常量为 float 类型, 请使用 f 或 F 后缀。对于 long double 类型, 可使用l 或 L 后缀。


在这里插入图片描述

🎄六、总结

本文介绍了C++语言的基本类型,主要是了解与C语言不同的地方,如:bool、wchat_t、char16_t、char32_t,其他的基本和C语言一致。

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wkd_007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值