目录
一、计算机数据表示
送入计算机的数字、字母、符号等信息必须转换成0、1组合的数据形式才能被计算机识别。
能够进行算术运算得到明确数值概念的信息成为计算机数值数据,其余的信息为非数值数据。
二、数据类型
(一)变量与常量数据
有些数据类型在程序使用之前已经预先设定好了,在整个程序的运行过程中没有变量,这些称为常量。其他数据类型在程序运行期间可能会改变或被赋值,这些称为变量。
(二)基本数据类型
1.位、字节和字
位、字节和字是描述计算机数据单元或存储单元的术语,这里主要指存储单元。
最小的存储单元是位(bit),可以存储0或1.位是计算机内存的基本构建块。
字节(byte)是常用的计算机存储单位。1byte=8bit
字(word)是设计计算机时给定的自然存储单位。计算机的字长越大,其数据转移越快,允许的内存访问也更多。
2.逻辑类型(_Bool类型)
C99标准添加了_Bool类型,用于表示布尔值。
只有两个量true和false。表示逻辑真值和逻辑假值。
因为C语言用值1表示true,值0表示false,所以_Bool类型实际上也是一种整数类型。但原则上它仅占用1位存储空间,因为对0和1而言,1位的存储空间足够了。
3.整数与浮点数的存储方案:
计算机以二进制数字存储整数;
计算机把浮点数分成小数部分和指数部分来表示,而且分开存储这两部分。(计算机在内部使用二进制和2的幂进行存储,而不是10的幂。)
整数和浮点数的实际区别:
- 整数没有小数部分,浮点数有小数部分;
- 浮点数可以表示的范围比整数大
- 对于一些算术运算,浮点数损失的精度更多
- 浮点数通常只是实际值的近似值
- 以前,浮点数的运算比整数运算慢,现在许多CPU都包含浮点处理器,缩小了速度上的差距。
4.整数类型
int类型:
int类型是有符号整型,即int类型的值必须是整数,可以是正整数、负整数或零。
声明int变量
eg:int erns;
int hogs,cows,goats;
(为int大小的变量赋予名称并分配内存空间)
变量如何获取值?
- 赋值
cows=112;
- 通过函数(scanf())获得值
- 初始化变量
初始化变量就是为变量赋一个初始值。
eg:int hogs=21;
声明为变量创建和标记存储空间,并为其指定初始值。
打印int值
可以使用printf()函数打印int类型的值。
%d称为转换说明,它指定了printf()应使用什么格式来显示一个值。要确保转换说明的数量与待打印值得数量相同。
0x或0X前缀表示十六进制值,0前缀表示八进制。
以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x。另外,要显示各进制数的前缀0/0x和0X,必须分别使用%#o、%#x、%#X。
其他整数类型:
short int类型(或者简写为short)占用的存储空间可能比int类型少,常用于较小数值的场合以节省空间。与int类似,short是有符号类型。
long int 或long占用的存储空间可能比int多,适用于较大数值的场合。与int类似,long是有符号类型。
long long int 或 long long(C99标准加入)占用的存储空间可能比long多,适用于更大数值的场合。该类型至少占64位。与int类似,long long 是有符号类型。
unsigned int 或unsigned只用于非负值的场合。这种类型与有符号类型表示的范围不同。
5.浮点类型
包括float、double和long double。
float类型必须至少能表示6位有效数字,且取值范围至少是10-37~1037;
double(双精度)和float的最小取值范围相同,但至少能表示10位有效数字。一般情况下,double占用64位而不是32位。一些系统将多出的32位全部用来表示非指数部分,这不仅增加了有效数字的位数(即提高了精度),而且还减少了舍入误差。另外一些系统把其中的一些位分配给指数部分,以容纳更大的指数,从而增加了可表示数的范围。无论是哪种方法,double类型的值至少有13位有效数字,超过了标准的最低位数的规定。
long double类型以满足比double类型更高的精度要求。不过,C只保证long double类型至少与double类型的精度相同。
声明浮点型变量:
float noah,Jonah;
double trouble;
long double gnp;
没有后缀的浮点型常量是double类型。
打印浮点值:
printf()函数使用%f转换说明打印十进制记数法的float和double类型浮点数,用%e打印指数记数法的浮点数。打印long double类型要使用%Lf、%Le或%La转换说明。
6.char类型
char类型用于存储字符,但是从技术层面上来看,char是整数类型,因为char类型实际存储的是整数而不是字符,是用特定的整数来 表示特定的字符。
声明char类型变量:
char response;
char itable,latan;
字符常量和初始化:
char grade =‘A’;
单引号只适用于字符、数字和标点符号。
打印字符:
printf()函数用%c指明待打印的字符。一个字符变量实际上被储存为1字节的整数值。%c转换说明告诉printf()打印该整数值对应的字符。