江南大学C语言程序设计本科第三章_第1页
江南大学C语言程序设计本科第三章_第2页
江南大学C语言程序设计本科第三章_第3页
江南大学C语言程序设计本科第三章_第4页
江南大学C语言程序设计本科第三章_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、回顾 算法表示 v 自然语言 v 伪代码 v 流程图 v 计算机语言 问题 如何不同类型的数据 运算 同一段程序的不同初值 第三章第三章 数据类型数据类型,运算符与表达运算符与表达 式式 1. 数据类型数据类型 2. 变量和常量变量和常量 3. 运算符和表达运算符和表达 式式 Focus 数 数 据据 类类 型型 字符型字符型(char)(1B)(1B) 整型整型(int) 枚举类型枚举类型 实型实型(浮点型浮点型) 单精度单精度(float)(4B)(4B) 双精度双精度(double)(8B)(8B)数组型数组型 结构体结构体 共用体共用体 长整型长整型( (long) )(4B)(4B)

2、 基本整型基本整型( (int) )(2B)(2B) 短整型短整型( (short) )(2B)(2B) 第一节第一节 C语言的数据类型语言的数据类型 基本类型基本类型 构造类型构造类型 指针类型指针类型 空类型空类型 第二节第二节 C程序中的变量和常量程序中的变量和常量 一、一、 标识符(名字)和保留字标识符(名字)和保留字 1 1、标识符(名字标识符(名字) ) 规定:规定: 字母或下划线开头的字母字母或下划线开头的字母数字数字下划线组成的下划线组成的 字串字串 在在C C语言中,标识符是语言中,标识符是区分字母的大小写区分字母的大小写的。的。 禁止使用禁止使用C C保留的保留的3232个

3、个关键字关键字做变量名。做变量名。 标识符可以为任意长度,但一般只识别前标识符可以为任意长度,但一般只识别前3232个字符。个字符。 2 2、 保留字(见附录保留字(见附录) 系统已使用的标识符。为避免混淆,系统已使用的标识符。为避免混淆, 保留给系统使用,用户不能使用。保留给系统使用,用户不能使用。 十六进制:十六进制:以以x x或或X X开头开头的数字及的数字及A AF F组组 合的数。合的数。 例:例:0 0X123X123,0X17fa0X17fa 八进制:八进制:以开头以开头的数字组合的数字。的数字组合的数字。 例:例:05, 032705, 0327 十进制:十进制:以非开头的数字

4、组合的数字。以非开头的数字组合的数字。 例:例:115115,-410-410,0 0 二、二、 常量常量 程序运行过程中其值不能被改动的程序运行过程中其值不能被改动的 量。量。 1 1整型常量整型常量 是由一个或多个数字所组成,可有正是由一个或多个数字所组成,可有正 负号。负号。 十进制形式十进制形式: :由正负号,整数部分,小数点,小数由正负号,整数部分,小数点,小数 部分组成。部分组成。 指数形式:指数形式:由符号、整数部分、小数点、小数部由符号、整数部分、小数点、小数部 分、字母分、字母E(E(或或e)e)、指数符号、指数、指数符号、指数 表表 示形示形 式式 构成规则:整数前边和指数

5、前边的正号可省构成规则:整数前边和指数前边的正号可省; ; 整数或小数可被省,但不能同时省整数或小数可被省,但不能同时省; ; e e或或E E前必须有数字,阶码必须为整型数前必须有数字,阶码必须为整型数。 例:例:1.25E-3 1.25*10-3 1.25e-3 2 2 实型常量实型常量(实数或浮点数)只使用十(实数或浮点数)只使用十 进制进制 例如:例如:printf(“ab cbdengh”); 输出结果?输出结果? abab de de ghgh 注注:构成字符常量的字符可:构成字符常量的字符可 以是以是ASCII字符集中除字符集中除( )和和 ( )以外的任意可显示字符以外的任意可

6、显示字符, 字符常量具有值字符常量具有值,其值就是该其值就是该 字符的字符的ASCII码值。码值。 字符常量字符常量 用单引号括起来的一用单引号括起来的一 个字符。个字符。 例:例: a、 A、 ?、 $ 转义字符。转义字符。 反斜杠开头后跟一个字符。反斜杠开头后跟一个字符。 例:例: nvb ddd:1-3位八进制位八进制 xhh1-2位位 十六进制数。十六进制数。 例:例:101x0A 如如“welcome”“How do you do ” 注:注:双引号是字符串常量的定界符。双引号是字符串常量的定界符。 字符串常量在内存中存储时,自动在其尾部追字符串常量在内存中存储时,自动在其尾部追 加

7、一个转义字符加一个转义字符00作为作为字符串的结束标志字符串的结束标志。 例如例如:“Welcome”在内存中占用在内存中占用8 8个字节个字节 welcome0 是由一对是由一对双引号双引号括起来的字符序列。括起来的字符序列。 4 4字符串常量:字符串常量: 问题:问题:a与与“a”是等同的吗?(请答出是等同的吗?(请答出 理由)理由) 5 5符号常量(符号常数)符号常量(符号常数) 用一个标识符代表一个常量。用一个标识符代表一个常量。 第一种定义形式:第一种定义形式: #define 符号常量标识符符号常量标识符 常量表达式常量表达式 例如例如: #define PRICE 50 注意注意

8、:符号常量一旦被定义,在整个作用域中不:符号常量一旦被定义,在整个作用域中不 能被改变,也不能再被赋值。在函数体中使用符能被改变,也不能再被赋值。在函数体中使用符 号常量如同使用其他常量一样可直接参加运算。号常量如同使用其他常量一样可直接参加运算。 第二种定义形式:第二种定义形式: const 类型类型 符号常量标识符符号常量标识符= =常量表达式常量表达式 例如:例如: main() const float pi=3.14; float r=2.0,area; area=pi*r*r; printf(“The area is %fn”,area); PiPi是符号常量是符号常量 r,area

9、 r,area是变量是变量 在程序运行过程中,其值可以改变的量。在程序运行过程中,其值可以改变的量。 三三C程序中的变量程序中的变量 命名规则:命名规则:遵循标识符的规则遵循标识符的规则 变量名(标识符)由字母或下划线开头,其变量名(标识符)由字母或下划线开头,其 后可跟字母后可跟字母, ,数字或下划线组成的字符序列。数字或下划线组成的字符序列。 大小字母被认为是不同的字符。大小字母被认为是不同的字符。 C C语言中对标识符的字符个数无统一规定。语言中对标识符的字符个数无统一规定。 禁止使用禁止使用C C保留的保留的3232个关键字做变量名。个关键字做变量名。 . 下面举出几个正确和不正确的标

10、识符: 正确正确 smart321 _decision key_board FLOAT 不正确不正确 321smart bomb? key.board float_name999 t yx 定义格式:定义格式: ; 例如:例如:int i,j,k; float x,y,z,gdst; 注意:变量必须先定义后使用注意:变量必须先定义后使用 编译程序会根据变量的类型为变量分配相应的编译程序会根据变量的类型为变量分配相应的 存储空间。存储空间。 变量的值主要通过赋值运算改变。变量的值主要通过赋值运算改变。 例如:利用变量例如:利用变量t t交换变量交换变量x x和和y y的值的值 t = x;x =

11、 y;y =t; 1. 整型变量整型变量 基本型(整型)基本型(整型) 用用int声明声明 短整型短整型 用用short 声明声明 带符号的整带符号的整 数数 长整型长整型 用用long 声明声明 无符号整型无符号整型 unsigned int (unsigned) 无符号整型无符号整型 无符号短整型无符号短整型 unsigned short 无符号长整型无符号长整型 unsigned long 各种数据类型所占位数及其范围见书各种数据类型所占位数及其范围见书P31表表3.1 例:例: main( ) int a=-1,b=1; printf(“%d,%u,%d,%un”,a,a,b,b);

12、-1,65535,1,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 (1)10= (0000 0000 0000 0001)2 (-1)10=(1111 1111 1111 1111)2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (65535) 10=(1111 1111 1111 1111)2 当当65535按按 unsigned int 型理解时,仍为型理解时,仍为65535;而当按;而当按 int 型型 理解时,被当作理解时,被当作-1的补码。的补码。 同理,同理,32768视为视

13、为-32768。此时发生了上溢。此时发生了上溢。 二进制存放与溢出二进制存放与溢出 数符和阶符各占一位,阶码的位数决定了表数符和阶符各占一位,阶码的位数决定了表 示数值的范围,尾数的位数决定了有效位的长度示数值的范围,尾数的位数决定了有效位的长度 (精度)(精度)( (按按2 2-1 -12 2-2-2 . 2 . 2- -n n表示表示) )。 阶符阶符 阶阶 码码 数符数符 尾数尾数( (定点小数定点小数) ) 2 2实型(实型(浮点型)浮点型)变量:变量: 在微机上有两种不同精度的浮点类型:在微机上有两种不同精度的浮点类型: 单精度浮点数单精度浮点数 4 4字节字节 7 7位十进制有位十

14、进制有 效数。效数。 双精度浮点数双精度浮点数 8 8字节字节 1616位十进制有位十进制有 效数。效数。 它们都使用四部分位组来确定所表示的数值:它们都使用四部分位组来确定所表示的数值: 3 3字符变量:字符变量: 用来存放字符常量,只能放一个字符。用来存放字符常量,只能放一个字符。 定义形式:定义形式:char char 变量名;变量名; 字符数据的存储:字符变量字符数据的存储:字符变量 = = 字符常量时,是将字符常量时,是将 该该字符的字符的ASCIIASCII码码存放到存储单元。在存放到存储单元。在ASCIIASCII码值码值 范围内字符型数据与整型数通用。范围内字符型数据与整型数通

15、用。 例如:例如:char c; c=0; c=a; 对!对! c=“a”; 错错! ! c=“IBM”; 错错! ! 字符字符 AA 字符常量的存储字符常量的存储 65 0 字串字串 “ “A”A” 字符串的存储字符串的存储 占占2个字节个字节 占占字节字节 0 1 0 0 0 0 0 165 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 例例: main( ) char c1,c2,c3,c4; c1=97; c2=98; c3= a; c4= b; c3= c3-32; c4= c4-32; printf(“%c %c,%d %d,%c %c,%d %d”, c1,c2

16、,c1,c2,c3, c4,c3,c4); 运行结果:运行结果:a b,97 98,A B,65 66 4 4变量赋初值:变量赋初值: 强调:强调:变量赋初值(变量初始化)是在程变量赋初值(变量初始化)是在程 序运行时赋给的,而不是在编译阶段完成。序运行时赋给的,而不是在编译阶段完成。 例例1 1: int : int a=5; a=5; 例例2:2:可以给定义的变量中部分赋值可以给定义的变量中部分赋值 intint a,b,c=50; a,b,c=50; 例例3:3:可以给定义的变量所有赋值可以给定义的变量所有赋值 intint a=10,b=20,c=50; a=10,b=20,c=50;

17、 intint a=b=c=10 ; a=b=c=10 ; 第三节第三节 数据类型的转换数据类型的转换 一、数值型数据间混合运算的类型转换。一、数值型数据间混合运算的类型转换。 C C允许不同类型的量混合运算允许不同类型的量混合运算, ,计算时发生类型转换。计算时发生类型转换。 类型转换有类型转换有自动(隐式)自动(隐式)和和强制(显式)强制(显式)两种。两种。 例例:10+:10+AA+1.53+3.8 +1.53+3.8 是合法的。是合法的。 运算时:运算时: 系统按优先级确定运算步骤,系统按优先级确定运算步骤, 每一步运算时把运算符两侧不同类型的运算量转换成统一每一步运算时把运算符两侧不

18、同类型的运算量转换成统一 的类型的类型 计算计算 例例: 10+a+ I * f - d / e (其中变量(其中变量d,e是是double型)型) double double double 1. 自动转换:自动转换:表达式在运算的过程中自动完表达式在运算的过程中自动完 成成 自动转换时的类型转换规律自动转换时的类型转换规律 2. 强制类型转换:强制类型转换: 形式为:形式为:(类型名)操作数(类型名)操作数 例如:例如:int a=5; (double)a /*该表达式类型为该表达式类型为 double型型*/ 二、赋值表达式的类型转换二、赋值表达式的类型转换 把一个常数,变量,表达式的值赋

19、予某一个变把一个常数,变量,表达式的值赋予某一个变 量时,量时,C编译系统自动实现数据类型的转换。转编译系统自动实现数据类型的转换。转 换规则:先把赋值号右边的类型转换成赋值号左换规则:先把赋值号右边的类型转换成赋值号左 边变量的类型,然后再赋值。边变量的类型,然后再赋值。 例例: int a,b; float x;double y; a=33.5; x=57; y=57; b=a+x; 结果结果 a=33, x=57.000000, y=57.0000000000000, b=90 第四节第四节 运算符运算符 一、一、运算符运算符 单目运算符单目运算符 双目运算符双目运算符 三目运算符三目运

20、算符 二、表达式二、表达式 运算符与运算分量连接组合在一起就构成了表达运算符与运算分量连接组合在一起就构成了表达 式。式。 三、优先级三、优先级 指一个包含多个运算符的表达式中对运算符所规定的指一个包含多个运算符的表达式中对运算符所规定的 运算优先次序。运算优先次序。 不同运算符之间的优先级不同运算符之间的优先级 高高 初等运算初等运算 单目运算单目运算 算术运算算术运算 关系运算关系运算 逻辑运算逻辑运算( (除除 ! ! 外外) ) 条件运算条件运算 赋值运算赋值运算 低低 逗号运算逗号运算 四四C C运算符的分类:运算符的分类: (1 1)算术运算符算术运算符 +,% %, (取负)(取

21、负) (2 2)关系运算符)关系运算符 ( = = = != = = = != ) (3 3)逻辑运算符(!)逻辑运算符(! a=(b=5); a+=aa=5; a=(b=5); a+=a* *a;a;都是合法的都是合法的 当变量和表达式的类型不一致时,会发生类型转换当变量和表达式的类型不一致时,会发生类型转换 。 例:例: int int I; I=3.56;I; I=3.56; printfprintf(“%d”,I);(“%d”,I); 结果为结果为3 3 (3 3)赋值表达式)赋值表达式 8 8 (4 4)赋值运算符的优先级和结合性)赋值运算符的优先级和结合性 同级同级 右结合右结合

22、例:例:b=a+=c=a=4 b=(a+=(c=(a=4) 运算后运算后b b的值为的值为 分隔符分隔符 分开相邻的两个数据分开相邻的两个数据 运算符运算符 把两个运算分量连接起来,使之构成把两个运算分量连接起来,使之构成 一个表达式一个表达式 4 4、逗号运算符、逗号运算符 逗号表达式:逗号表达式: 表达式表达式1 1,表达式,表达式2 2 逗号表达式结果:逗号表达式结果: 表达式表达式2 2的值的值 例如:例如: x=0,y=100 x=0,y=100 逗号表达式结果为逗号表达式结果为100100 x=5 x=5* *4,4x4,4x 逗号表达式结果为逗号表达式结果为8080 扩展式:扩展

23、式:表达式表达式1 1 ,表达式,表达式N N 表达式结果:表达式结果:表达式表达式N N的值的值 1、输入并运行下面的程序、输入并运行下面的程序 main( ) char c1,c2; c1 =a;c2=b; printf(“%c %cn”,c1 ,c2); 运行此程序。运行此程序。 在此基础上增加一个语句:在此基础上增加一个语句: printfprintf(“(“d dd dn”n”,c1c1,c2);c2); 再运行,再运行, 并分析结果。并分析结果。 将第将第2 2行改为:行改为: intint C1 C1,C2C2; 再使之运行,并观察结果。再使之运行,并观察结果。 再将第再将第3 3、4 4行改为:行改为: c1=ac1=a; * *不用单撇号不用单撇号* * c2=bc2=b; 再使之运行,分析其运行结果。再使之运行,分析其运行结果。 再将第再将第3 3、4 4行改为:行改为: c1c1“a”a”; * *用双撇号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论