(一) 编程常用数据类型

∥☆過路亽.° 提交于 2020-02-17 10:29:58

1.整数

这是一种整数型数据变量,在各种语言中都有广泛的应用,存储方式为二进制补码。一般长度为四个字节。根据具体数据的取值范围,还可分为长整型long(4byte),整型int(4byte),短整型short(2byte)等。根据有无符号有signed int, unsigned int。

整形的计算方法有数学运算与逻辑运算,其中值得一提的是一些语言中(如C语言),当你定义了某变量数据类型为整型后,若赋值的是非整数类型,计算机会自动转为整数类型存储,但在不用定义变量的python中则不会有这种问题。

作为二进制补码形式存储的整型可进行左移,右移,与,或,非,与或,或非等运算操作。
左移里一个比较特殊的情况是当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,然后按余数进行移位。当最左边为符号位时,左移显然会形成数据的溢出。
相同情况下,右移不会改变符号位。
实际应用中,可用左移右移作快速的乘除运算。

2.浮点数

也是一种非常常用的数据类型。根据长度不同可分为float(4byte),double(8byte),long double(8byte),为浮点形式存储。
涉及的计算为有小数的数学运算与逻辑运算。

3.字符

char 占用一个字节空间,存储方式为二进制补码,也可分为signed char 和 unsigned char。本质上char类型数据也可参与数学运算,因为本质上char也是数字,这也是char与其他数据类型转化的基础。因此char数据也可进行逻辑运算。在一般计算机编程中加上单引号‘以区分于变量名。
由char构成的一维数组即是一个字符串string。在C++中string有24个字节的长度。

4.逻辑值

bool是一种逻辑数据,也称布尔型。只有True和False两种赋值,常见于逻辑运算结果与循环,分支结构程序的条件部分。
显然,逻辑值可以参与逻辑运算,但无法与其他数据类型进行转换。

关于数据类型转换

不同数据类型进行运算时,必须先将它们转换为相同数据类型。
转换可分为隐式转换和强制转换

隐式转换:
如:int与double类型相加时,计算机自动把int转化为double类型,小数点后补零,再进行运算。
因为double精度高于int

强制转换:
所谓强制类型转换指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型。
如:
int x;
int y;
double(x+y);
这句代码中x和y都是整型,相加所得应是整型,但用了强制转换运算符double(),计算结果强制转成了double。

关于数据溢出

数据溢出主要指在也能算过程中数据量超出数据类型能表示的范围,会出现数据错误,可导致程序死循环,程序安全问题,bug等。

如unsigned整型溢出,“溢出后的数会以2^(8*sizeof(type))作模运算”,也就是说,如果一个unsigned char(1字符,8bits)溢出了,会把溢出的值与256求模。
如:
unsigned char x = 0xff; printf("%d\n", ++x);
输出为0

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!