变量占内存的字节数目
数据类型(Data Type)
在冯。诺伊曼体系结构当中,程序代码和数据都是按照二进制来存储的,
对于计算机系统和硬件本身而言,数据类型的概念并不存在
高级语言为什么要区分数据类型?
更加有效的组织数据,规范数据的使用
有助于提高程序的可读性,方便用户的使用
在程序设计语言当中引入数据类型的好处
带来了程序的简明性和数据的可靠性
有助于提高程序执行效率,节省内存的空间
变量的类型决定了什么?
占用的内存空间的大小
数据的存储形式
合法的表数范围
可参与的运算种类
(1)不同类型的数据占用的内存的大小是不同的
int-基本整形,C标准?
没有规定,系统相关
在目前的大多数系统上占用4个字节
short int简写为short
短整型 ,2个字节
long int,简写为long
长整形,4个字节
unsigned无符号整型(正整数和0)
用来修饰int,short和long
float
单精度实型,4个字节
double
双精度实型,8个字节
long double
长双精度实型,IEEE规定10个字节,系统相关
VC++当中占8个字节
char
字符型,1个字节
绝对不能对变量所占的内存字节数目想当然
问题:如何计算变量占内存空间当中的大小?
用sizeof运算符
一元运算符
用sizeof运算符计算变量占内存空间的大小的好处是
增加了程序的可移植性
编译的时候执行的运算符,不会导致额外的运算时间的开销
一般形式:
语法形式:1.sizeof(类型)2.sizeof(变量或者表达式)
运算结果:1.类型占用的内存字节的数目2.变量或者表达式所属的类型占用的内存字节数
sizeof(int),运算符,并不是一个函数
sizeof(a+b)
sizeof(a)
2.不同的类型变量的表数范围和存储形式
不同的数据类型的表数的范围也是不同的
有符号整数和无符号整数的表述范围是不同的
以2字节(16位)短整型为例
有符号整数的最高位是符号位,使其数据位比无符号的整数的数据位少了1位,
有符号整数能标识的最大整数的绝对值仅仅位最大无符号整数的一半
整型数
一个多字节的数据使如何存放到存储单元中的呢?
3)不同类型数据的存储形式是不同的
小端次序:便于计算机从低位字节向高位字节运算
大端次序:与人们从左到右书写的顺序是相同的,便于处理字符串
问题:如何存储实型数的呢?
关键:确定小数点的位置
问题:如何标识实型数的呢?
小数形式
指数形式-科学计数法
定点数(Fixed Point)
小数点的位置是固定的
定点数
定点小数(纯小数)-小数点位于符号位和最高数值位之间的
定点整数-小数点位于数值位的最低位
3.不同类型数据的存储形式是不同的
浮点数是实现小数点位置可以浮动的主要原因
将实数拆分成了阶码(Exponent)和尾数(Mantissa)分别存储
同样是4个字节(32位)
定点数的表数范围受到其二进制位数的限制-值域都是有限的
在计算机当中通常是用定点数来表示整数和纯小数的大小
用浮点数表示既有整数部分拥有小数部分的实数
字符型数据(英文字母,数字,控制字符)
以二进制编码的方式存储,一个字节保存一个字符
字符编码的方式
取决于计算机系统所使用的字符集
ASCII(美国标准信息交换码)字符集
每一个字符都有一个编码值(查ASCII码表)
(4)不同的数据类型可以参与的运算是不同的
整形
加,减,乘,除,求余
实型
加,减,乘,除
字符型
加,减(整数)
对于ASCII码值的运算
小结:
不同类型的变量
占用的内存空间的大小不同
用sizeof运算符计算变量占内存的空间
数据在内存中的存储形式不同的
合法的表数范围是不同的
可以参与的运算的种类是不同的
实际操作查看变量占内存的字节数
实验:
#include #include int main(){ char ch;short a;int b;long c;float d;double e;ch='a';a=1;b=2;c=3;d=1.5;e=1.5;printf("%d\n",sizeof(char));printf("%d\n",sizeof(short));printf("%d\n",sizeof(int));printf("%d\n",sizeof(long));printf("%d\n",sizeof(float)); return 0;}
结果的展示: