c++数据类型:基本数据类型和复合数据类型。
目录
基本数据类型:
整型 char(8位)、short(16位) 、int 、 long(32位) 、long long(64位)。
浮点型 float (32位)、double(64位)、long double(有16 字节, 12字节,8字节)
sizeof运算符可以返回类型或者变量的长度,单位为字节。(我不会告诉你的,sizeof的区知识点在这个传送带上)1个字 节一般是由8位二进制数表示。
limits头文件包含了关于整型限制的信息,cfloat或float.h可以找到浮点型限制信息。
例如,符号常量INT_MAX为int的最大取值,CHAR_BIT为字节的位数。聊到符号常量,climits文件中都是用#define这种和#include一样的预处理器编译指令来定义的。但是,c++有更好的创建符号常量的方法const,只有那些设计成可以用于c和c++中的头文件,依旧保留使用#define。
(博主的密集恐惧症烦了,强制分段:)
前面也看到了数据都是有大小限制的,如果超过其大小,则会出现数据溢出,溢出1时相当于从最小的数开始了。 例如,0~65535,本来就是65535了,如果再+1,就会溢出,然后回到0;
什么是整型字面字?答案,显示的表示出多少进制的常量。第一位数是1~9,代表十进制;第一位数是0,代表8进制;第一位数是0x或0X,代表16进制。cout << hex;//十六进制显示;
cout << oct;//8进制显示
c++确定常量的类型:没有指定具体的类型的时候,c++将整型常量存储为int类型。例如:
cout << "Year = " << 1462 << "\n"; //c++会将1462存储为int类型。
l 或 L 后缀表示该整数为long常量,u或U后缀表示该整数为无符号int类型常量。再多的感觉你也记不住,就不写了,自己去查,知道有这么回事儿就okay。
同样,你写一个小数默认存储为double类型,除非你加了后缀。例如l 或L表示long double,f或F表示float。
变量的初始化:
1: int energy = 1;
2:int energy;
energy = 1;
3:int energy = {1};//如果大括号中没有数,将被初始化为0;大括号里面必须是字面值或者常量const
4:int energy{1};
复合数据类型:数组、字符串、指针、结构。
再谈数据类型转换问题
经常看到考试喜欢出这个数据类型转换问题就开始冒冷汗,这次,我就吃定你了。
问题一:赋值时候的转换
1.小赋大是没有任何问题的;
2.大赋小有问题:小的变量装得到还行,装不到的话那就废了,直接写到最大那个数就满了。
3.浮点赋整型:直接把浮点的小数部分截掉留下整数部分,然后按照大赋小的流程走。
问题二:表达式中的转换
自动转换:表示中有bool、char、unsigned char、signed char和short值都将被转换为int进行计算,即便最后的结果要求的不是int,例如最后结果任然是short,那么计算完后再转换为结果的类型int。
此外,比int大的类型,将自动转换为较大的类型计算。
问题三:强制类型转换
(typeName) value //来自c语言
typeName (value) //纯粹的c++
static_cast <typename> (value)