第三章数据类型运算符表达式_第1页
第三章数据类型运算符表达式_第2页
第三章数据类型运算符表达式_第3页
第三章数据类型运算符表达式_第4页
第三章数据类型运算符表达式_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章数据类型运算符表达第三章数据类型运算符表达 式式 第三章数据类型运算符表达式第三章数据类型运算符表达式 3 第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式 n3.1 C C的数据类型的数据类型 n3.2 常量与变量常量与变量 n3.3 3.3 整型数据整型数据 n3.4 3.4 实型数据实型数据 n3.5 3.5 字符型数据字符型数据 n3.7 3.7 各类型数据的混合运算各类型数据的混合运算 n3.8 3.8 运算和表达式运算和表达式 4 3.1 3.1 C C的数据类型的数据类型 短整型短整型(short) 整型整型(int) 长整型长整型(long) 整型整型 实型

2、实型 数值类型数值类型 字符类型字符类型(char) 枚举类型枚举类型(enum) 数组类型数组类型 结构体类型结构体类型(struct) 共用体类型共用体类型(union) 文件类型文件类型(FILE) 基本类型基本类型 构造类型构造类型 指针类型指针类型 空类型空类型(void) 数据数据 类型类型 单精度型单精度型(float) 双精度型双精度型(double) 5 3.23.2 常量与变量常量与变量 一、一、 常量常量 : : 在程序执行期间值不发生变化的量在程序执行期间值不发生变化的量 1.1. 直接常量直接常量: : 1515 , 2 .4 , , 2 .4 , f , “asd”

3、f , “asd” 2.2. 符号常量符号常量 : : 在程序中用标识符代表的常数在程序中用标识符代表的常数 定义符号常量的格式定义符号常量的格式: : # # define define 标识符标识符 常数常数 如如 # # define max 100define max 100 3.3. 使用符号常量的优点使用符号常量的优点 (1)(1) 含义清楚含义清楚 (2)(2) 修改方便修改方便 二、变量二、变量: : 在程序执行期间值可以变化的量在程序执行期间值可以变化的量 1. 变量的声明变量的声明 (1) 格式格式: : 数据类型数据类型 变量名列表变量名列表 ; 如如: int x ,

4、y ; char ch ; x=3; 3 3 x x 变量名变量名 变量值变量值 存储空间存储空间 说明说明: : 进行变量声明后进行变量声明后, ,计算机系统会为声明的变量分配计算机系统会为声明的变量分配 存储空间存储空间, ,用以存放数据用以存放数据. . 变量的存储空间可能由一个或多个字节组成变量的存储空间可能由一个或多个字节组成, , 2. 变量的赋值变量的赋值 格式格式: 变量变量 = 表达式表达式 如如: x = 6 ; y = x+2 ; a = sqrt(b) ; y = x = x+2 ; 说明说明: 1. 赋值号是赋值号是 = , 而等于号是而等于号是 = = 表示表示 2

5、. 赋值运算符为右结合性赋值运算符为右结合性, 先计算赋值号右边的表达式的值先计算赋值号右边的表达式的值, 再将值赋给左边的变量再将值赋给左边的变量 最后最后一个一个式子等价于式子等价于 y = ( x = x+2) ; 3. 表达式包括表达式包括 常量常量, , 变量变量, , 函数函数, , 以以 及其他合法的及其他合法的C语言表达式语言表达式 (2) 变量的初始化变量的初始化: : 在声明变量的同时对变量赋初值在声明变量的同时对变量赋初值 如如: int x=4 , y=21 ; char ch=A ; 注意注意: : 如果几个变量的初值相同如果几个变量的初值相同, , 初始化的写法如下

6、初始化的写法如下 int a=6,b=6,c=6;int a=6,b=6,c=6; 三三、 标识符标识符: : 是给程序中的实体所起的名字是给程序中的实体所起的名字 1. 标识符的命名规则标识符的命名规则 以字母或下划线开头以字母或下划线开头, , 由字母由字母, , 数字和下划线组成的数字和下划线组成的 字符序列字符序列 标识符不能与标识符不能与C语言的关键字重名语言的关键字重名 建议用户定义标识符时尽量不用下划线开头建议用户定义标识符时尽量不用下划线开头 注意标识符的有效长度注意标识符的有效长度 标识符中区分大标识符中区分大, , 小写字母小写字母 2. 定义标识符应遵循的原则定义标识符应

7、遵循的原则 尽量做到见名知义尽量做到见名知义 一般习惯上变量名一般习惯上变量名, , 函数名用小写函数名用小写 , , 而符号常量用而符号常量用 大写大写 9 3.33.3 整型数据整型数据 一、整型常量的表示方法一、整型常量的表示方法 1.1. 十进制整数十进制整数 56 , -23 , 0 2.2. 八进制整数八进制整数 以以 0 开头开头 034 , 012 3.3. 十六进制整数十六进制整数 以以0 x开头开头 0 x28 , 0 x1fa9 10 二、整型变量二、整型变量 1. 整型数据在内存的存放形式整型数据在内存的存放形式 数据在内存中以数据在内存中以二二 进制进制形式存放形式存

8、放, 一个整型变量在内存中占一个整型变量在内存中占2个字节个字节 int x=10 ;int x=10 ;0000 00000000 00000000 10100000 1010 0 0 1 1 2 2 3 3 4 4 12 12 13 13 14 14 15 15 00000000000100010010001000110011010001001100110011011101 1110111011111111 附附: : 十进制与二进制对照表十进制与二进制对照表 内存中存放的实际是数据的补码内存中存放的实际是数据的补码, , 正数的补码为其二进制形式正数的补码为其二进制形式; ; 负数的补码

9、则是将该负数绝对值的负数的补码则是将该负数绝对值的 二进制形式按位取反再加二进制形式按位取反再加1 1 int x=-10;int x=-10; 0000 00000000 0000 0000 10100000 1010 1111 11111111 1111 1111 01011111 0101 1111 11111111 1111 1111 01101111 0110 2.2. 整型变量的分类整型变量的分类 ( (P11)P11) 有符号基本整型有符号基本整型 signed intsigned int 无符号基本整型无符号基本整型 unsigned int unsigned int 有符号短

10、整型有符号短整型 signed short int signed short int 无符号短整型无符号短整型 unsigned short int unsigned short int 有符号长整型有符号长整型 signed long int signed long int 无符号长整型无符号长整型 unsigned long int unsigned long int 注注: : 括号括号 括起来的为可选项括起来的为可选项 12 3.43.4 实型数据实型数据 一、实型常量的表示方法一、实型常量的表示方法 1.1. 小数形式小数形式 : 2.4 , -9.6 , 3. , .75 2.2.

11、 指数形式指数形式 : 3.14e0 , 31.4e 1 2.2. 实型变量的分类实型变量的分类 单精度单精度 floatfloat 双精度双精度 doubledouble 长双精度长双精度 long doublelong double 二、实型变量二、实型变量 1.1.实型数据在内存中的存放形式实型数据在内存中的存放形式 一个实型数据在内存中占一个实型数据在内存中占4个字节个字节,实型数据按指数实型数据按指数 形式存储形式存储. 14 3.5 3.5 字符型数据字符型数据 一、字符常量一、字符常量: : 用单引号括起来的一个字符用单引号括起来的一个字符 如如: s , * , 6 说明说明:

12、 : 1.1. aa 和和 A A 是两个不同的字符是两个不同的字符 2.2. 单引号内不能是单引号或反斜杠单引号内不能是单引号或反斜杠 二、字符变量二、字符变量 例例: : char a , b;char a , b; a= a=g g; b=; b=$ $ ; ; 三、字符数据在内存中的存储形式及使用方法三、字符数据在内存中的存储形式及使用方法 1. 1. 字符数据在内存中以相应的字符数据在内存中以相应的ASCII码存放码存放, 占占1个字节个字节 2. 字符数据和整数在一定范围内互相通用字符数据和整数在一定范围内互相通用 (1)字符数据用整数形式输出字符数据用整数形式输出 void ma

13、in( ) char ch; ch=a; printf(“%cn”,ch); printf(“%dn”,ch); 输出结果输出结果: a 97 void main( ) char ch; int x; ch=A; x=ch+32; printf(“x=%d,ch=%cn”, x,ch); printf(“%cn”, x); 输出结果输出结果: x=97,ch=A a (2)字符数据与整数进行算术运算字符数据与整数进行算术运算 3.例程例程: : 四、字符串常量四、字符串常量 : : 由一对双引号括起来的字符序列由一对双引号括起来的字符序列 如如: “abcd” , “ w123” , “k”

14、, “ ” 字符串常数在存储时计算机系统会自动在字符字符串常数在存储时计算机系统会自动在字符 串末尾加一个结束标志串末尾加一个结束标志 00, , 因此字符串的实际长因此字符串的实际长 度为字符个数加度为字符个数加1 1 0 k0 “ ” 空串占空串占1 1个字个字 节节 “k” 占占2 2个字节个字节 注意注意: : k k与与“k k”是不同的是不同的 k k是字符常量是字符常量, ,在内存中占在内存中占1 1个字节个字节, , “k k”是字符串常量是字符串常量, ,在内存中占在内存中占2 2个字节个字节 17 3.7 3.7 各类数值型数据间的混合运算各类数值型数据间的混合运算 高高

15、double float long unsigned 低低 int short , char 一、隐式转换一、隐式转换 1.1. 一般算术转换一般算术转换 目的目的 : : 将短的数扩展为机将短的数扩展为机 器处理的长度器处理的长度, ,使运算符两使运算符两 端有相同的类型端有相同的类型 2.2. 赋值转换赋值转换 ( (具有强制性具有强制性) ) 通过赋值运算将赋值号右侧表通过赋值运算将赋值号右侧表 达式的值的类型自动转换为其左达式的值的类型自动转换为其左 侧变量的类型侧变量的类型. . 例例 float x ; int a ; long b=748 ; a = b ; x = a ; 二、

16、二、 显式转换显式转换 用强制类型转换运算符将一个类型的变量强制转换为用强制类型转换运算符将一个类型的变量强制转换为 另一种类型另一种类型. 一般形式一般形式 : (类型标识符类型标识符) 表达式表达式 注意注意 : : (1)(1) 为避免出错为避免出错, , 应将表达式用括号括起来应将表达式用括号括起来 (2)(2) 对一个变量进行强制转换后对一个变量进行强制转换后, , 原变量的类型原变量的类型 不变不变 , , 只是得到一个新类型的数据或变量只是得到一个新类型的数据或变量 (3)(3) 转换是暂时的转换是暂时的, ,定义是永久的定义是永久的. . 例例 (double) a (int)

17、 x+y 19 3.83.8 运算符和表达式运算符和表达式 一一.赋值运算赋值运算 格式格式: : 变量变量= =表达式表达式 注注: : (1) (1) “=”是一种运算是一种运算,结果为右边的表达式的值结果为右边的表达式的值. (2) (2) 一个赋值式中可以出现多个赋值运算符一个赋值式中可以出现多个赋值运算符, ,其结果其结果 方式为从右向左方式为从右向左. . 例例: : x = y = z = 5; x = y = z = 5; x = ( y = ( z = 5 ) ) x = ( y = ( z = 5 ) ) (3)(3) printf()printf()输出项中表达式运算从右

18、向左输出项中表达式运算从右向左 20 例例: 打印圆锥的体积和底面积打印圆锥的体积和底面积 main() float s,r,h; scanf(“%f%f”, printf(“v=%f, s=%fn”,h*s/3, s=r*r*3.14); 21 二二.算术运算算术运算 1.1.双目运算双目运算 + - + - * * / % / % % 指求余运算指求余运算 如如: 15%415%4 为3 3 -19%4-19%4 为-3-3 注注: %的两个操作数必须是整型量的两个操作数必须是整型量( (常量或变量常量或变量) ) 2. 2.单目运算单目运算 + + 自增运算自增运算 - - 自减运算自减

19、运算 - - 负运算负运算 22 注注:关于关于+,- 1). 只作用于变量只作用于变量,对整数有效对整数有效. 对浮点依然有效对浮点依然有效,但无速但无速 度上的优势度上的优势. (对整数执行效率可提高对整数执行效率可提高7-8倍倍.) 2). 前置运算和后置运算的区别前置运算和后置运算的区别: 前置前置 (+a, -a) :先执行先执行+,-,后参与表达式运算后参与表达式运算,有有 优先级位置优先级位置. 后置后置 (a+, a-) :先参与表达式运算先参与表达式运算, 后执行后执行+,-,无无 优先级位置优先级位置, 即绝对后置运算即绝对后置运算. 23 +, - (前置前置) - +,

20、 - * / % +, -(后置后置) 附附: 算术运算优先级顺序示意图算术运算优先级顺序示意图 高高 低低 24 例例1: 有定义有定义int a=2 , b=3; 判断下列写法正确与否判断下列写法正确与否. a+; ( ) (a+) - -; ( ) 答案答案: a+; ( ) (a+) - -; ( ) 例例2: 有定义有定义 int a=2, b=3,x; 执行下条语句执行下条语句: x=a+ +b; 则最后则最后: x=? a=? b=? 答案答案: x=6 a=3 b=4 注注: : x=a+ +b; x=(a+)+(+b); 25 例例3: 有定义有定义 int a=2 , b=

21、3, x ; 则则: x=a+b; x= (a+)+)+b; 此谓此谓:最大吃进原则最大吃进原则 例例4 : 有定义有定义 int x=2,y ; 执行下列语句执行下列语句: y=x+ * x+; 则 则 x=? y=? 答案答案: x=4 y=4 或或y=+x * +x; 则 则 x=? y=? 答案答案: x=4 y=16 或或y=+x * +x; 则 则 x=? y=? 答案答案: x=4 y=9 26 例例5: 有定义有定义 int x=2;执行下条语句后执行下条语句后: printf(“%d%d”,+x,+x); 输出结果是什么输出结果是什么? 答案答案: 4 3 注注:printf

22、()函数输出项中表达式运算从右向左函数输出项中表达式运算从右向左. 27 三三.复合赋值运算复合赋值运算 1.定义定义: 由在赋值符由在赋值符“= =”之前加上其它运算符构成之前加上其它运算符构成. 例例如如: a+=3; a+=3; a=a+3; a=a+3; a a* *=3; =3; a=a a=a* *3;3; 2.2.注意注意: : 赋值式右边的表达式若包含多项赋值式右边的表达式若包含多项, ,则视其有一则视其有一 整体括号整体括号. . 例如例如: : a a* *=3+2; =3+2; a=a a=a* *(3+2);(3+2); 问问: : 有定义有定义 int x=20; int x=20; 执行下条语句后执行下条语句后: : x x* *=50 48; =50 48; 问问 x=?x=? 答答: : x=40 x=40 28 四四.关系关系运算运算 和逻辑运算和逻辑运算 1.关系运算关系运算: , = , , y 即为一关系表达式即为一关系表达式; ; 注注: : 关系运算的结果为逻辑值关系运算的结果为逻辑值, ,即为零或非零即为零或非零 为零为假为零为假, ,非零为真非零为真. . 由此上式中由此上式中 xy

温馨提示

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

评论

0/150

提交评论