程序归根结底,就是对各种各样的数据进行运算。比如玩游戏时技能的释放轨迹,比如支付宝的指纹校验。都是一组一组数据。这是按照使用场景在划分,而按照计算机对数据的处理,C语言将数据分为如下几种基本数据类型。
(一)整型数据
_Bool:布尔类型,取值0或1,在内存中占用1个字节。
char:字符型,内存中占用1个字节。
short int:短整型,内存中占用2个字节。
int:整型,内存中占用4个字节。
long int:长整型,内存中占用4个字节或者8个字节,视编译器和操作系统而定。
long long int:长整型,内存中占用8个字节。
除去_Bool类型外的数据类型都有signed和unsigned两种,为有符号数和无符号数,但是占用的总内存是一样的。
(二)浮点型数据
float:半精度浮点型,内存中占用4个字节。
double:双精度浮点型,内存中占用8个字节。
long double:长双精度浮点型,内存中占用16个字节。
(三)复数
float _Complex:半精度浮点数为实部和虚部的复数,内存中占用8个字节。
double _Complex:双精度浮点数为实部和虚部的复数,内存中占用16个字节。
long double _Complex:长双精度浮点数为实部和虚部的复数,内存中占用32个字节。
上述内存中占用字节数是在Windows7专业版64位下使用Cynwin中的gcc 5.2.0测试得出,具体占用内存字节数是和编译器/操作系统有关系的,可以使用运算符sizeof(type_name)进行计算获得。
上面总结参考了C11中的部分内容,C11中还有一些数据类型(数组,结构体,联合体,函数类型,指针类型,自适应类型),这里不做赘述,认为不是基本数据类型。可以参考C11中《6.2.5 Types》章节或者后续总结。
参考资料:C11标准