天天看点

数据的表现形式

/* 数据的表现形式 */

// 常量变量

在计算机高级语言中,数据有两种表现形式:常量和变量

常量

1.整型常量

2.实型常量

a.十进制小数形式,由数字和小数点组成。

b.指数形式

3.字符常量

a.普通字符,用单撇号括起来的一个字符

b.转义字符 \

4.字符串常量,双撇号中的全部字符。单撇号内只能包含一个字符。

5.符号常量,用 # define 指令,指定一个符号名称代表一个常量。如

# define PI 3.1416

使用符号常量好处:

a.含义清楚

b.在需要改变程序中多处用到的同一个变量时,能做到“一改全改”。

# define PRICE 40

变量

变量代表一个有名字的、具有特定属性的一个存储单元。

它用来存放数据,也就是存放变量的值。

变量必须 先定义,后使用。

常变量与常量的异同:

常变量具有变量的基本属性:有类型,占存储单元,只是不允许改变其值。

# define Pi 3.1415926   //定义符号变量

const float pi=3.1415926;  //定义常变量

标识符

在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的

有效字符序列统称为 标识符(identifier)

C语言规定标识符只能由字母、数字和下划线3种字符组成,且第1个字符必须是字母或下划线。

// 数据类型

所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)

以及数据的存储形式。

// 整型数据

1.整型数据的分类

a.基本整型(int型)

Turbo C 2.0 为每个整型数据分配2个字节(16个二进位)

Visual C++ 为每个整型数据分配了4个字节(32位)

在存储单元中的存储方式是:用整数的补码形式存放。一个正数的补码是此数的二进制形式。

求负数的补码方法:先将此数的绝对值携程二进制形式,然后对其后面所有各二进位按位取反,

再加1。

b.短整型(short int)

Visual C++ 6.0 编译系统分配给int数据4个字节,短整型2个字节。

存储方式与int型相同。

短整型变量的值范围:-32768~32767

c.长整型(long int)

d.双长整型(long long int)

2.整型变量的符号属性

在类型符号前面加上修饰符 unsigned 表示指定该变量是“无符号整数”类型。

如果加上修饰符signed,则是“有符号类型”。

如果既未指定为signed也未指定为unsigned的,默认为“有符号类型”。

unsigned short price = 50;   //定义price为无符号短整型变量

printf("%u\n",price);    //指定用无符号十进制数的格式输出

unsigned short price = -1;   //不能把一个负整数存储在无符号变量中

prinrf("%d\n",price);

系统对 -1 先转成补码形式,就是全部 二进位都是1,然后把它保存在变量price中。

由于price是无符号短整型变量,其左面第一位不代表符号,按“%d”格式输出,就是65535。

// 字符型数据

1.字符与字符代码

各种字符集(包括ASICII字符集)的基本集都包括了127个字符。其中包括:

字母:大写英文字母A~Z,小写英文字母a~z。

数字:0~9。

专门符号29个:

! " # & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ { | } ~

空格符:空格、水平制表符(tab)、垂直制表符、换行、换页(form feed)。

不能显示的字符:空(null)字符(以'\0'表示)、警告(以'\a'表示)、退格(以'\b'表示)、

回车(以'\r'表示)等。

大写字母'A'的ASICII代码是十进制数65,二进制形式为 1000001

小写字母'a'的ASICII代码是十进制数97,二进制形式为 1100001

数字字符'1'的ASICII代码是十进制数49,二进制形式为 0110001

空格字符' '的ASICII代码是十进制数32,二进制形式为 0100000

专用字符'%'的ASICII代码是十进制数37,二进制形式为 0100101

转义字符'\n'的ASICII代码是十进制数10,二进制形式为 0001010

127 个字符都可以用 7 个二进位表示(ASICII代码为127时,二进制形式为 1111111,7位全1)。

在C中,指定用1个字节(8位)存储一个字符,此时,字节中的第1位置为 0 。

2.字符变量

字符变量是用类型符 char 定义字符变量。

char c='?';

定义c为字符变量并使初值为字符'?'。'?'的ASICII代码是 63,系统把整数 63 赋给变量c

printf("%d %c\n",c,c);

signed char (有符号字符型),字节数 1,取值范围 -128~127

unsigned char (无符号字符型),字节数 1,取值范围 0~255

如果将一个负整数赋给 signed char(有符号字符型)变量是合法的,但它不代表一个字符,

而是作为一个字节整型变量存储负整数。如:

signed char c=-6;

/* 如果在定义变量时 既不加signed,又不加unsigned,C标准并未规定 是按signed char处理

还是按unsigned char处理,由各编译系统自己决定。*/

char c =255;  //把一个128~255之间的正数赋给c

printf("%d\n",c); //按十进制形式赋给c的值

/* 在Visual C++ 系统上进行编译时,系统给出"警告"(warning):"把一个整常数赋给char变量"。

表示255已超过char变量的数值允许范围,在运行时输出-1。说明Visual C++是把 char 默认为

signed char类型的。如果把第1行改为"unsigned char c=255;",则不出现"警告",且输出255。*/

// 浮点型数据

浮点型数据是用来表示具有小数点的实数的。

在C语言中,实数是以指数形式存放在存储单元中的。

一个实数表示为指数,可以有不止一种形式。

由于小数点位置可以浮动,所以实数的指数形式称为浮点数。

小数部分中小数点以前的数字为0、小数点后第一位数字不为0的表现形式称为 规范化的指数形式。

浮点数类型包括 float(单精度浮点型)、 double(双精度浮点型)、 long double(长双精度浮点型)

1.float 型(单精度浮点型)

编译系统为每一个float型变量分配 4 个字节,数值以规范化的二进制数指数形式存放在存储单元中。

2.double 型(双精度浮点型)

用 8 个字节存储一个 double 型数据,可以得到 15 位有效数字

在C语言中进行浮点数的算术运算时,将 float 型数据都自动转换为 double 型,然后进行运算。

3.long double 型(长双精度)型

Turbo C 对 long double 型分配 6 个字节

Visual C++ 6.0 则对 long double 型和 double 型一样处理,分配 8 个字节

/*  怎样确定常量的类型  */

//  整型常量

不带小数点的数值是整型常量。

如在Turbo C中,系统为整型数据分配 2 个字节。其表值范围为 -32768~32767 ,在此范围外的整型常量,

系统会把它作为长整型(long int)处理,分配 4 个字节。

在Visual C++中,-2147483648~2147483647 之间的不带小数点的数都作为 int 型,分配4个字节,在此

范围外的证书,而又在 long long 型数的范围内的整数,作为 long long 型处理。

在一个整数的末尾加大写字母 L 或者小写字母 l ,表示它是长整型(long int)

但在Visual C++ 中由于对 int 和 long int 型数据都分配 4 个字节,因此没有必要用 long int 型。

//  浮点型常量

凡以小数形式或者指数形式出现的实数,是浮点型常量,在内存中都以指数形式存储。

C编译系统把浮点型常量都按双精度处理,分配 8 个字节。

继续阅读