C语言中的数据类型能分为四种:基本数据类型、构造数据类型、指针数据类型和空类型。
1、基本数据类型
基本数据类型可以分为三种:整型、字符型、浮点型
整形:短整型、基本整型、长整型、长长整型。
一般情况下在不同的编译器中相同的数据类型占用的字节数也不同。一下介绍在CodeBlock编译器中的统计。
类型名称 字节数
short[int] 2
int 4
long[int] 4
long long[int] 8
在C++中提供了可以计算字节数的方法sizeof(),如下例子:
//sizeof(i)求字节数运算符 short sh = 2; printf("short的字节数为:%d\n",sizeof(sh)); int i = 1; printf("int的字节数为:%d\n",sizeof(i)); long l = 1; printf("long的字节数为:%d\n",sizeof(l)); long long ll = 24; printf("long long的字节数为:%d\n",sizeof(ll)); float fl = 2.1111; printf("float的字节数为:%d\n",sizeof(fl)); double dou = 2.333; printf("double的字节数为:%d\n",sizeof(dou)); long double ld = 2.333; printf("long double的字节数为:%d\n",sizeof(ld)); char ch = "A"; printf("char的字节数为:%d\n",sizeof(ch));
运算结果如下:
此外整型数据在内存中存储的方式是以二进制的形式存储的。实际上数值是以补码的形式表示的。正数的补码和原码一致,如果该数是负数,它的补码计算方式为:该数的绝对值的二进制、各位取反再加一得到补码。
比如:
short s = 10;
变量s在内存中存放的方式:
0000 0000 0000 1010
而
short s = -10;
变量s在内存中存放的方式:
1111 1111 1111 0110
从上面可以看出第一个比特位为0表示正数,1表示负数。
字符型
字符型在C语言中只占用一个字节,而且在内存中是以对应的ASCII码形式存放的,因此和整型的存储形式是一样的。