021-数据类型、常量与变量.ppt
数据类型、常量与变量,主要内容,C语言的数据类型 C语言常量的类型及其表示方法 C语言变量的定义与初始化,一、基本数据类型,(一)数据类型的概念,数据类型:指程序设计语言所允许的变量和常量的种类。 每个常量、变量或表达式的值都属于某一种确定的数据类型。 数据类型是高级语言的重要特点和优点之一。,(二)数据类型的分类,C语言共提供有三种不同的数据类型,即基本类型、构造类型(复合类型)、指针类型。 基本数据类型包括: 整型 实型 浮点型(单精度型) 双精度型 字符型 空类型 注意:不同数据类型在计算机中的存储方式(即存储结构及所占用的存储空间)是不同的,这与宿主计算机的硬件特性有关。,(三)数据类型的修饰符,类型修饰符加在基本数据类型之前,用于更改基本数据类型的含义,以适应更为精确情况的需要。,类型修饰符共有四种,即: signed:表示数值有符号。只用于char型、int型。通常,signed可省略。如:char=signed char、int=signed int。 unsigned:表示数值无符号。只用于char型、int型。 short:表示较短的数据长度。适用于int型。 long:表示较长的数据长度。适用于int型、double型(某些编译系统)。在Turbo C中,long double型数据占用10字节存储空间,有效数字为20位。,说明: 使用类型修饰符后,int可省略。如:unsigned=unsigned int、signed long= signed long int。 在Turbo C中,char<short int=int<long int=float<double<long double。,二、常量及其类型,常量:指在程序运行过程中,其值保持不变的量。,(一)整型常量(整数),整型常量(整数)在计算机中准确表示。 C语言可识别十进制、八进制、十六进制的整数。,十进制整数:由正负号(+、-)后跟数字串组成,正号可省略,且不能以数字“0”开头。如:12、-12l、0。 八进制整数:以数字“0”开头,后跟07组成的数字串。如:012、-012。 十六进制整数:以数字“0”和字母“x”(或“X”)开头,后跟09及AF(或af)组成的数字字母串。如:0 x12、0X12、-0 xA3。,整数的后缀: u或U:表示无符号整数。如:65000u、012u、0 xA3u。 l或L:表示长整数。如:-70000l。 ul或UL:表示无符号长整数。如:70000ul。,(二)浮点型常量(浮点数或实数),浮点型常量(实数)在计算机中近似表示。 在C语言中,实数只能以十进制表示,并按double型存储和处理。,书写格式: 定点格式:由正负号、数字、小数点组成。必须有小数点。整数部分和小数部分可缺少其一,但不能同时没有。如:123.45、2.0、.0。 指数格式:aEn或aen。其中:a表示尾数,为一个十进制数(可无小数点);e或E表示底数10;n表示指数(幂次),为一个13位的整数(可带正负号)。如:1.25e-3=1.2510-3、-0.35E5=-0.35105 。,(三)字符常量,指仅包含单个字符的常量。 表示方法: 普通字符(可显示):用单引号将其括住。如:a、!、3、+、?。 控制和特殊字符(不可显示):用转义序列表示 。如: 0、n、。,转义序列的表示方法,反斜杠+一个字符 反斜杠+13位八进制数(可不用数字0开头,为字符的ASCII代码值) 反斜杠+12位十六进制数(必须以字母x开头,为字符的ASCII代码值) 如:换行符(n、012、xa)、大写字母A(101、x41)。,常用字符及其ASCII码值,注意: 在C语言中,字符常量也可视为整数,并参加数值运算。如:A、a的十进制值是65、97,A+5的值为70,a-A的值为32。 在用printf()输出字符常量时,可用“%c”或“%d”按字符或整数形式输出。反之,对于0255之间的整数,也可用“%c”输出其对应的字符。 例Li02001.C 例Li02002.C,(四)字符串常量,指用双引号括起来的0个或多个字符的序列。 表示方法: 以双引号为定界符。如: abc、123、0。 字符串常量中可包含有转义字符。如: I say,OK!(表示:I say,OK!),存储方式 按字符顺序(从左到右)连续存放,每个字符(包括空格)占用一个字节,存放其ASCII代码值,最后由系统自动追加一个零字符NULL(即0)作为结束标记。 如果一个字符串常量包含有N个字符,那么其所占用的存储空间为N+1个字节。,例如:字符串常量 I am a student 共有14个字符(包括3个空格),在存储时要占用15个字节,其中各字符及其所对应的ASCII码值(十六进制)如下所示:,(五)符号常量,符号常量指的是用标识符表示的常量。(外形像变量,但本质是常量,其值是不能通过赋值或输入改变的),通常使用#define来定义符号常量(也称为宏定义)。 格式: #define 标识符 字符串 其中:#define为编译系统的预处理命令;标识符为符号常量名(宏名),通常用大写字母表示;字符串为指定的一串字符,无类型与值的含义。 说明:一个#define只能定义一个符号常量,且独占一行,不用分号结尾。 如: #define PI 3.14159,例L0201.C,三、变量及其类型,变量:指在程序运行过程中其值可以改变的量。变量用符号表示,代表存储器中的一个位置。,(一)变量的定义,在C语言中,变量必须先定义,后使用。,变量的属性,数据类型:决定变量所存储的数据的含义。 存储类型:决定变量的存储位置及其寿命(生命期)。 定义位置:决定变量的作用域,即起作用的范围。,变量的定义格式,变量的定义包括三个方面: 名称:变量名属于一种标识符,其命名规则与标识符相同。 数据类型:字符型、整型、浮点型、双精度型等。不同类型的变量只能存储相应类型的数据。 存储类型(可选)。,一般格式: 存储类型 数据类型 变量列表; 其中,变量列表中可包含多个变量名(用逗号分隔)。 如: char c; int i,j,k; long ii,jj,kk; unsigned uii;,变量的作用域,全局变量(外部变量) 局部变量(内部变量) 形式参数(形参、虚参、哑元),全局变量(外部变量),在函数体外定义,可为整个程序的任何程序块所使用。在程序执行期间,其值均被保留。 如: #include int i,j,k; main() ,局部变量(内部变量),在函数体内定义,只在相应的程序段或程序块(复合语句)内有效。 如: void func1(void) int x; x=100; void func2(void) int x; x=200; ,形式参数(形参、虚参、哑元),在函数的形式参数表中定义,用于在函数之间传递数据,只在本函数段内有效。,变量的初始化,指在定义变量的同时赋予其相同类型的初值。如: int a=1,b=2,c=3; char c1=a,c2=b,c3=c;,