首页投稿(暂停使用,暂停投稿)程序员

C语言回忆录1--数据类型

2016-06-22  本文已影响117人  2625K

1、数据类型

a.概念:什么是数据类型?

简单点儿来说,数据类型就是计算机对现实中数据的一种抽象和表示,比如现实中的数字,字母,文字,图形等等,由于每种数据所含的内容不同,所需要的内存空间也不同,为了能够用适当的内存大小去表示数据,因此才有了整型,浮点型等数据类型,这些类型本质上只是所分配的内存空间大小不同。为了能够表示现实中一些复杂的关系,又出现了构造类型等来表示,更复杂的一些可以参考数据结构这方面的资料。

b.分类:数据类型的分类


c.基本数据类型

类型 字节 范围
(signed) char 1 -128~127
unsigned char 1 0~255
short 2 -32768~32767
unsigned short 2 0~65535
(signed) int 4 -2147483648~2147483647
unsigned int 4 0~4294967295
long int 8 -9223372036854775808~923372036854775807
unsigned long int 8 0~18446744073709551615
long long int 8 同 long int
unsigned long long int 8 同 long int
float 有效数字(6,7) 4 -3.410^-38~3.410^38
double 有效数字(15,16) 8 -1.710^-308~1.7*10^308
long double 有效数字(18,19) 16 -1.210^-4932~1.210^4932

注:由于不同平台的数据类型占用大小不一样,具体占用字节可以使用sizeof(T)得出

对于这些不同的类型,在使用的时候要注意所需要表示的数据大小,来选择合适的数据类型,避免内存的浪费。
浮点型也被称为实型,就是小数的表示类型,由于计算机中内存有限,并且整型的运算速度比较快,因此将数据分为整型和实型来表示。
举个栗子,对于班级学号的表示,一般只需要unsigned char 类型就可以表示了,只需要一个字节,如果使用int,则需要4个字节,造成了内存的浪费。下面是一些实例:


eg:
int intValue=4;
char charValue='a';
long int longValue=2323223;
long long longlongValue=22222121212;
所定义的变量要注意使用范围,不要溢出

//这是个测试系统基本类型占用字节的代码
#include <stdio.h>
void main()
{
printf("char is %d\n",sizeof(char));
printf("short is %d\n",sizeof(short));
printf("int is %d\n",sizeof(int));
printf("long int is %d\n",sizeof(long int));
printf("long long int is %d\n",sizeof(long long int ));
printf("float is %d\n",sizeof(float));
printf("double is %d\n",sizeof(double));
printf("long double is %d\n",sizeof(long double));
printf("Hello,Data Type!\n");
}    

d.构造类型

构造类型是由基本数据类型组合所得到的,主要由数组,结构体,联合体,枚举类型等组成,其中比较常用的是数组以及结构体类型

d.1数组

数组就是若干个相同类型的的数据的集合,其作用是简化了我们定义的繁琐程度,假如一个班里有50位学生,为了表示他们的成绩,我们需要定义50个变量来表示他们,需要写一大串程序,如果使用数组就比较方便了,数组的本质上是在内存空间里开辟连续的若干个相同的某种基本数据类型大小的内存空间,程序的本质最终都会反映在内存的改变,不仅要知道程序的表象,更要深入其本质去理解内存的变化。

d.2结构体

结构体是用来表示复杂关系的一种可以自定义的数据类型,和面向对象中的类相似,一般情况下只将数据放在结构体中,而类class则将函数(方法)一起放在类中。

d.3枚举类型

枚举类型采用关键字enum来定义,主要是定义一些字符串来代表一些数字代码,枚举类型的成员变量实质与int类型没有什么区别,使用枚举类型的作用主要是增加程序的可读性。

枚举类型中成员的值默认是从0开始以1递增的,也可以指定某一个成员的值,此成员之后的值将会以这个成员的值开始以1递增

d.4联合体类型和位域类型

联合体类型和位域类型使用的不多,这里就不赘述了。

上一篇下一篇

猜你喜欢

热点阅读