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码形式存放的,因此和整型的存储形式是一样的。
在C语言中也有转义字符,这些转义字符的特性是当从键盘上输入这个字符时,显示器上就会显示这个字符,比如a、b、c、$、+和空格符都是可显示字符。
在C语言中也有‘\’的用法比如‘\n’是换行等等... ...
下面是C语言中转义字符的一个收集表:
浮点型:单精度浮点型,双精度浮点型,和长双精度浮点型
浮点型的表示形式:十进制小数形式和指数形式。
十进制:123.123
指数形式:123e23
注意:指数形式表示e(E)前后必须有数字,并且e(E)后面必须是整数。
浮点型各类型占用的字节数大小:
在上面也有用sizeof测试字节数大小的例子,这里就不再叙述了。
浮点型在内存中存放的形式
与整型数据的存放形式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分分别存储,即符号位+小数部分+指数部分。
例如:float f = 123.456的存储;
运算符
C语言中运算符有多种,算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符、强制类型转化运算符、分量运算符、下边运算符等。我们这里介绍下逗号指针求字节运算符。
逗号运算符
在C语言中提供一种特殊的运算符--逗号运算符,它能将两个表达式连接起来比如:
3+5,6+9
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为
表达式1,表达式2
求解过程是先求解表达式1,再依次求解表达式2,3。整个逗号表达式的值是最后一个表达式的输出
比如:b=(a= 3*5,a*4);
最后的结果是60
main(){ int a; int b = (a=3*5,a*4); printf("%d",b); }
逗号不止是能作为运算符号也能作为分隔符号出现的,比如:
printf("%d %d",a,b)
指针运算符
*符号跟&符号
求字节运算符
作用:用来计算变量或者常量或者是一种数据类型占用的内存字节数。
基本形式:sizeof(变量名|常数|数据类型),完成之后返回一个整数值
表达式的形式跟Java基本一致