C++数据类型[整型、浮点型、字符型、布尔型]

c++在创建变量或常量时,必须指定数据类型,否则无法为其分配内存空间

整型

整型变量表示的是整数类型的数据
C++中共有4种表示整型的类型,区别在于所占内存空间和可表示的取值范围不同。

数据类型占用空间取值范围
short(短整型)2 字节(-2^15 ~ 2^15-1)
int(整型)4 字节(-2^31 ~ 2^31-1)
long(长整型)32 位编译器占 4 个字节
64 位编译器占 8 个字节(-2^31 ~ 2^31-1)
long long(长长整型)8 字节(-2^63 ~ 2^63-1)

sizeof 作用

sizeof作用

浮点数

浮点型变量表示浮点小数类型的数据。

精度数据类型占用空间有效范围
单精度float4 字节6~7 位有效数字
双精度double8 字节15~16 位有效数字

有效数字是指数字中具有非零的最低位数。例如,数字12345具有5个有效数字,而数字0.000123具有4个有效数字。
float和double之间的主要区别在于精度和范围。

  1. 精度:double类型的精度比float类型更高。这意味着使用double类型可以获得更准确的结果,尤其是在进行浮点运算时。
  2. 范围:double类型的范围比float类型更广。这意味着使用double类型可以表示更大的数值范围。

在选择使用float还是double时,需要考虑精度和范围的需求。如果需要更高的精度和更大的范围,应该选择使用double类型。如果对精度要求不高,但需要节省存储空间或减少计算开销,可以选择使用float类型。

在大多数编程语言中,浮点数默认是双精度的,但你也可以明确地指定一个变量为单精度或双精度。例如,在C++中,你可以使用"f"后缀来声明一个单精度浮点数,如"float myFloat = 3.14f;“,或者使用"lf"后缀来声明一个双精度浮点数,如"double myDouble = 3.14lf;”。在其他语言中,如Java或Python,你通常不需要指定浮点数的精度,因为它们默认使用双精度浮点数。

字符型

C和C++语言中,字符型变量只占用1个字节。
字符型变量是将对应的ASCII编码存放至内存,而不是字符本身。

作用:字符型变量可表示单个字符。
语法:char ch = ‘a’;

注1:使用单引号表示字符,且单引号内有且仅有1个字符,不可以是字符串。
注2:使用 (int) ch 查询字符对应的ASCII编码。'a’对应97,'A’对应65。

转义字符

转义字符是一种特殊的字符序列,用于在字符串中插入无法直接输入的字符或控制字符。它们在编程和文本处理中非常有用,可以用于表示特殊字符、控制字符、非打印字符等。

以下是转义字符的常见作用:

  1. 插入特殊字符:有些字符在字符串中有特殊含义,例如双引号和单引号。使用转义字符可以插入这些特殊字符,而不会触发它们的特殊含义。
  2. 控制文本格式:转义字符可以用于控制文本的格式,例如换行符(\n)、制表符(\t)等。
  3. 插入非打印字符:有些字符在文本中无法直接输入,例如控制字符。使用转义字符可以插入这些非打印字符。

以下是使用转义字符时需要注意的事项:

  1. 转义序列的长度:转义序列通常由反斜杠(\)后跟一个或多个字符组成。确保转义序列的长度正确,否则可能会导致错误或意外的行为。
  2. 转义序列的种类:不同的编程语言和环境可能支持不同的转义序列。确保你了解你所使用的语言或环境支持哪些转义序列。
  3. 转义序列的顺序:在字符串中,转义序列的顺序很重要。确保按照正确的顺序使用转义序列,以避免意外的行为。

以下是常见的转义字符及其含义和ASCII码值(十进制):

转义字符含义ASCII码值(十进制)
\n换行符10
\r回车符13
\t制表符9
\v垂直制表符11
\反斜杠符本身92
"双引号字符34
单引号字符39
\0空字符(NULL)0

注意:表格中的ASCII码值是基于常见的ASCII编码标准,但实际上不同的环境和编程语言可能使用不同的编码标准。因此,具体的ASCII码值可能会因环境和编程语言而异。

字符串型

作用:表示字符串
(1)C风格字符串: char 变量名[] = “字符串值”;
(2)C++风格字符串: string 变量名 = “字符串值”;

nclude <iostream>
#include <string>
using namespace std;

int main() {
	//C风格字符串
	char cStr[] = "hello c str";
	cout << cStr << endl;

	//C++风格字符串
	string cppStr = "hello cpp str";
	cout << cppStr << endl;
	return 0;
}

注1:使用C风格字符串时,需使用双引号将字符串值括起来。
注2:使用C++风格字符串时,需包含头文件#include 。

布尔型

布尔数据类表示真或假
bool 类型占 1 个字节,且只有两个值

  1. true:真、1
  2. false:假、0

C++的 bool 类型中,true 或任意非 0 值表示“真”,false 或 0 表示“假”

int main() {
	bool flag = true;
	cout << flag << endl;	// 1(真)

	/* C++的bool类型中,true 或 任意非0值 均代表“真” */
	flag = 6.66f;
	cout << flag << endl;	// 1(真)

	flag = false;
	cout << flag << endl;	// 0(假)

	/* C++的bool类型中,false 或 0值 代表“假” */
	flag = 0;
	cout << flag << endl;	// 0(假)

	cout << "bool类型占用的内存大小:" << sizeof(bool) << endl;
	cout << "bool类型占用的内存大小:" << sizeof(flag) << endl;

	return 0;
}

小结

C++ 提供了多种数据类型,以满足不同编程需求。以下是一个简化的总结,以表格形式表示 C++ 的数据类型、所占字节大小和取值范围:

数据类型所占字节大小取值范围
整型 (int)4 字节-2,147,483,648 到 2,147,483,647
短整型 (short)2 字节-32,768 到 32,767
长整型 (long)8 字节 (通常在 64 位系统上)-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
长长整型 (long long)16 字节 (在某些平台上可能更大)-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 (通常)
无符号整型 (unsigned int)4 字节0 到 4,294,967,295
无符号短整型 (unsigned short)2 字节0 到 65,535
无符号长整型 (unsigned long)8 字节 (通常在 64 位系统上)0 到 18,446,744,073,709,551,615
无符号长长整型 (unsigned long long)16 字节 (在某些平台上可能更大)0 到 18,446,744,073,709,551,615 (通常)
浮点型 (float)4 字节±3.4E±38 (大约 ±3.4E±38)
双精度浮点型 (double)8 字节 (通常在所有平台上)±1.8E±308 (大约 ±1.8E±308)
长双精度浮点型 (long double)可变 (通常为 12 或更多字节)可变范围取决于实现,通常更大于 double 的范围
字符型 (char)1 字节 (通常为 ASCII 或 UTF-8)ASCII 值范围:0 到 127 (或 UTF-8 的其他值)
有符号字符型 (signed char)同 char,但支持负值范围:-128 到 127同 char,但支持负值范围:-128 到 127
无符号字符型 (unsigned char)同 char,但无符号范围:0 到 255 或更高值同 char,但无符号范围:0 到 255 或更高值
bool (布尔型)可变,通常为 1 或 2 字节(取决于实现)true 或 false (或 true、false 在某些平台/编译器上)
void (空类型)可变,通常为 0 或 1 字节(取决于实现)无定义/特殊值,通常用于指针类型和特殊场景(例如函数返回类型为 void)

请注意,表格中的数据和取值范围可能会因不同的平台、编译器或 C++ 标准而有所变化。这些信息基于常见的实现和标准。在实际编程中,建议查阅特定编译器或平台的手册以获取准确的信息。

  • 12
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

01红C

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

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

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

打赏作者

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

抵扣说明:

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

余额充值