c语言中的数据类型

C语言中数据类型可分为基本类型,结构体类型,指针类型和空类型:

1数据类型:

c语言中的数据类型

1基本类型:

1.1字符型(本质上也是一种整型变量):

char : 1字节   -128~127

unsigned char : 1字节  0~255

由于字符是按其代码(整数)形式存储的,因此C99把字符型数据作为整型的一种。

1.1.1字符与字符代码:

字符集(包括ASCII字符集):字母,数字,专门符号,不能显示的字符(如空'\0',回车'\r')

注意 字符‘1’,整数字符1是不同的:'1'实际上表示以1的SACII码值(49)存储的二进制数,而1就是整数1的二进制数存储的。

1.1.2字符变量(用char定义的变量):

如:char buf=‘?’;表示将?的ASCII码值(63)赋给变量buf。

在输出时字符变量的值时,可以选择以十进制整型输出或以字符型输出。

当用printf("%d,%c\n",buf,buf);打印时输出,63和?。

 

1.2整型(不同的编译器字节大小不同:如TuboC2.0编译器中int是2字节,现如今int型基本上都是4字节):

类型 符号 长度(字节) 取值范围
整型 int 2 -32768~32768(即-2^15-2^15-1)
4 -2^31~2^31-1
长整型 long int或long 4 -2^31~2^31-1
双长整型 long long(int) 8 -2^63~2^63-1
无符号双长整型 unsigned long long(int) 8 0~2^64-1
短整型 short int或short 2 -2^15~2^15-1
无符号整型 unsigned int 2 0~2^16-1
4 0~2^32-1
无符号长整型 unsigned long int 或unsigned long 4 0~2^32-1
无符号短整型 unsigned short int或unsigned short 2 0~2^16-1

1.2实型(浮点型)

类型 字节数 有效数据位(小数点后) 数值范围(绝对值)
float(单精度) 4 6 0以及1.2*10^-38~3.4*10^38
double(双精度) 8 15 0以及2.3*10^-308~1.7*10^308
long double(和编译器有关,不过一般是16字节) 8 15 0以及2.3*10^-308~1.7*10^308
16 19 0以及3.4*10^-4932~1.1*10^4932

1.3枚举型

通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举类型说明中的标识符的次序是一致的。枚举类型的形式:(标识符1,……,标识符n)

例如: type daystype=(sunday,monday,tuesday,wednesday,thursday,friday,saturday)

枚举元素只能是标识符,而不能是数值常量或字符常量。例如以下的定义是错误的:

type daystype=('sun','mon','tue','wed','thu','fri','sat')

枚举元素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。例如以下的定义是错误的:

type daytype1=(monday,tuesday);

daytype2=(monday,wednesday);

可以将枚举类型的定义和变量的定义结合在一起。例如:var a:(monday,tuesday,sunday)

枚举类型属于顺序类型。根据定义类型时各枚举元素的排列顺序确定它们的序列,***从0开始

例如:已经定义daystype

ord(sunday)=0,succ(sunday)=monday,pred(friday)=thursday

但是枚举类型中的第一个元素没有前趋,最后一个元素没有后继。Turbo Pascal不允许直接读写枚举值,所以枚举值的输出常用case语句间接的输出。枚举值的输入,则要一一判断读入字符是否是枚举类型的标识符。若是才能赋给枚举变量,否则就会出错。

例如:枚举值的输出

case day of

sunday:write('sunday');

monday:write('monday');

tuesday:write('tuesday');

wednesday:write('wednesday');

thursday:write('thursday');

friday:write('friday');

saturday:write('saturday');

end;

以上是个人学习总结,有错误或不足之处还请指出!