一、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