c++语言中数据类型有哪些?

513好学 2023-01-27 15:09 编辑:admin 277阅读

一、c++语言中数据类型有哪些?

C++的数据包括常量与变量,常量与变量都具有类型。由以上这些数据类型还可以构成更复杂的数据结构。例如利用指针和结构体类型可以构成表、树、栈等复杂的数据结构。

C++可以使用的数据类型如下图:

你好!

C++中的数据类型和各自的取值范围分别有:

整形:

int -2^31 ―― 2^31-1 (即负2的31次方,这里用^表示上标,下同)

short -2^15 ―― 2^15-1

long -2^63 ―― 2^63-1

浮点型:

float -3.402823e38..3.402823e38

double -1.e308..1.e308

字符型:

char 1个非转义字符、非控制字符的字符,即Unicode字符

字符串:

string 由Unicode字符组成的一个字符串

布尔型:

bool 非true即false,也可以对应是二进制的1和0,只有两个值

自定义类型:

数组 由自己定义长度的存放同一种类型的元素的数据集合

结构(struct) 可存放各种类型的变量,一般用来描述某一特定事物

的各个属性

枚举(enum) 存放一组有关联的,方便管理值数目的自定义数据类型

类类型(class) 面向对象的设计思维。有点像面向过程中程序设计中结构类型(上面写了),不过除了属性(即各种变量)外,还可以把对指定的对象(即上面所说的这个特定事物)可执行的操作(或者说方法,用功能函数描述)与属性放在一起封装。

另外,还有无符号短整型、无符号长整型等,我就是忘了。

希望对你有用,谢谢!

太多了!

如:int long float double char struct(结构型 位域型) unions enums

另外还都能加修饰符,所以相当多!

二、C语言中的enum类型可不可以用SCANF等输入语句输入其值?

1、可以的,在C里面,enum类型其实就是int型,但是在C++里不可以。

在C里面可以这样:

enum color{RED, GREEN, BLUE} ;

enum color a;

scanf(%d, &a);

如果输入的是0,对应的是RED,1对应的是GREEN,2对应的BLUE

2、enum是计算机编程语言中的一种数据类型。枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。

可以的,在C里面,enum类型其实就是int型,但是在C++里不可以。

在C里面可以这样:

enum color{RED, GREEN, BLUE} ;

enum color a;

scanf(%d, &a);

如果输入的是0,对应的是RED,1对应的是GREEN,2对应的BLUE

你用

printf(%d%d%d\n, RED, GREEN, BLUE);会输出012

enum(枚举)类型是不能被复制的,这只是一个枚举类型,其定义的成员的值和含义在定义的时候就已经被固定。

你应该使用结构体(struct) 或者是 联合体(union)。

不可以只能在enum里面赋值定义,也可以的就是要转个弯,比如你用SCANF输入i的值,再在enum里面给变量赋值就可以了,你不觉得这样麻烦了吗?

不能。 只能事先定义好的。

三、c++枚举类型的取值范围

枚举符也可以用整型的constant-expression(常量表达式)进行初始化.

如果某个枚举符的值均为非负,该枚举的表示范围就是[0:2^k-1],2^k是能使所有枚举符位于此范围内的最小的2的幂;如果存在负的枚举符值,则该枚举的取值范围就是[-2^k:2^k-1].这样就定义了一个最小的位段,其中能保存所有的枚举符值的常规2补码表示.

----摘自Bjarne Stroustrup的<<C++程序设计语言>>(特别版)

因此

对于e1,k取1

对于e2,k取4

对于e3,k取20

enum Num{one=1,two=2,four=4,eight=8};

取值范围是 one,two,four,eight

默认 enum Num{one,two,four,eight};

是 0,1,2,3

如果你给了 1,2,4,8,它们分别是 1,2,4,8

如果你有的给,有的没给,没给的等于前面一个的值加1

例如:

enum Num{one=1,two=2,four=4,eight};

enum Num n=eight;

printf(%d\n,n); // n=eight 就是 5

printf(%d\n,eight); eight 就是 5

为什么是0~15呢?-- 与编译器有关,VC++ 无此限制。

enum Num{two=6,one,four,eight,a,b,c,d,e,f,g,h,i,j,k,l,m,p};

printf(%d\n,p); // p 等于 23

我的理解,取值范围 是不是指这几个枚举的值能组成的所有可能的数值

这样:one用o代替,two用t代替,four用f代替,eight用e代替

0:全部没有

1:o

2:t

3:o | t

4: f

5: f | o

6: f | t

7: f | o | t

8: e

以此类推,直到

15:e | f | t | o

首先这里面没有比零小的数所以下限为0,其次枚举量最大值为8 找到一个比它大最近的2的幂 即2的4次方 结果为16 再减1就是15