0
点赞
收藏
分享

微信扫一扫

C++ 数据类型总结


C++ 数据类型总结

一、常用整型

类型

长度

取值范围

char

1Byte

(​​-2^8​​​,​​2^8-1​​)

short (signed and unsigned)

2Byte

(​​-2^16​​​,​​2^16-1​​)

int (signed and unsigned)

4Byte

(​​-2^32​​​,​​2^32-1​​)

long (signed and unsigned)

4Byte

(​​-2^32​​​,​​2^32-1​​)

long long (signed and unsigned)

8Byte

(​​-2^64​​​,​​2^64-1​​)

char类型说明:char类型我们通常理解为字符型,其实其在内存中存放的是整型,只是当我们使用它的时候,编译器会将其翻译成ASCII字符集中对应的字符。

  1. wchar_t(宽字符类型):程序需要处理的字符集可能无法用一个8位的字节表示,对于这种情况,C++的处理方式有两种。首先如果大型字符集是实现的基本字符集,则编译器厂商可以将char定义为一个16位的字节或更长的字节。另一种类型wchar_t可以表示扩展字符集。由于cin和cout将输入和输出看作是char流,因此不适于用来处理wchar_t类型。iostream头文件的最新版本提供了作用相似的工具:wcin和wcout,用于处理wchar_t流。另外,可以通过加上前缀L来指示宽字符常量和宽字符串。
  2. char16_t:(unsigned)长16位,用u前缀表示char16_t常量,如u’C’和u"good";
  3. char32_t:(unsigned)长32位,用U前缀表示char32_t常量,如如U’C’和U"good";

可通过如下程序来查看各类型对应的长度

//通过sizeof()函数来计算类型的长度。
//注意参数是类型时,必须使用括号;如果是变量名时,括号是可选的。
#include <iostream>

int main()
{
using namespace std;

cout << "char is: "<<sizeof(char) << endl;
cout << "short is: " << sizeof(short) << endl;
cout << "int is: " << sizeof(int) << endl;
cout << "long is: " << sizeof(long) << endl;
cout << "long long is: " << sizeof(long long) << endl;

}

运行结果如下:

C++ 数据类型总结_取值范围

二、浮点型

类型

长度

float

4Byte

double

8Byte

long double

8Byte

可通过如下程序来查看各类型对应的长度

#include <iostream>

int main()
{
using namespace std;

cout << "float is: "<<sizeof(float) << endl;
cout << "double is: " << sizeof(double) << endl;
cout << "long double is: " << sizeof(long double) << endl;
}

运行结果如下:

C++ 数据类型总结_数组_02

三、布尔型

布尔型为​​bool​​,只有两种取值,true 或 false,非0为true,0为false;

四、复合数据类型

4.1、数组(Array)

数组(Array)是一种数据格式,能够存储多个同类型的值

数组声明:​​int month[12]​​,创建一个int型的数组,该数组可以存12个int型的值

数组初始化

  1. int card[4] = {3,6,8,10};
  2. int hand[4] = {4}; 为hand[0]赋值为4,其余默认为0;
  3. int coub[] = {1,2,3,4,5}; 数组coub没有指定大小,其大小为赋值列表的个数

注意

  1. 数组的下标从0开始;
  2. 数组名是指针,是第一个元素的地址,即Array[0],因此数组访问时*(Arr + i) = Arr[i];
4.2、字符串

1、C-风格字符串(存储在一个char数组中)

定义:char dog[8] = {‘b’,‘e’,‘a’,‘u’,‘x’,’ ',‘I’,‘I’}; 不是字符串

char dog[8] = {‘f’,‘a’,‘t’,‘e’,‘s’,‘s’,‘a’,’\0’}; 是字符串

2、string类型字符串

string类,使用时要导入头文件​​#include<string>​

字符串拼接:string = string1 + string2

4.3、结构体(Struct)

结构可以将多种不同类型糅合到一起形成一种新的数据类型

struct student{
long ID;
string name;
}

结构体使用:C++中可以省略struct,但是C中不可以省略

student s; s.name; 使用成员运算符访问内部成员

student *s; s->name; 如果定义的指针,必须使用指针成员运算符

初始化:可以逐个输入进行初始化,也可以使用值列表,例如student s = {1001,“张三”};

4.4、共用体(union)

共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。

定义如下:

union one4all{
int int_val;
long long_val;
double double_val;
}

one4all pail;
pail.int_val = 15; //此时存储一个int值
pail.double_val = 1.38; //此时存储一个double值

4.5、枚举(enum)

​enum spectrum {red,orange,yellow,green,blue,violet,indigo,ultraviolet};​

这条语句完成了两项工作:

  1. 让spectrum 成为了新类型的名称,spectrum 被称为枚举;
  2. 将red,orange,yellow等作为符号常量,它们对应的整数值0~7。这些常量叫做枚举量,只能将枚举量赋值给枚举类型的变量。

注意

  1. 设置枚举量的值:enum bits {one = 1,two = 2,four = 4,eight = 8};
    指定的值必须是整数,也可以只显式地定义其中一些枚举量的值:
    enum bigstep {first,second = 100,third};
    first在默认情况下为0,后面没被初始化的枚举量的值将比起前面的枚举量大1,所以third的值为101
  2. 枚举的取值范围:取值范围的定义,首先,要找出上限,先找出最大值,再找到大于这个最大值、最小的2次幂,将它减1,便得到取值范围的上限;例如最大的枚举值为101,按照定义它的上限为127。其次,要找出下限,需要找出最小值,如果最小值不小于0,则取值范围的下限为0;否则,采用寻找上限方式相同的方式,但加上负号;例如最小值为-6,而比它小的、最大的2的幂是-8,因此下限为-7。


举报

相关推荐

0 条评论