chapter02数据类型、运算符与表达式.ppt_第1页
chapter02数据类型、运算符与表达式.ppt_第2页
chapter02数据类型、运算符与表达式.ppt_第3页
chapter02数据类型、运算符与表达式.ppt_第4页
chapter02数据类型、运算符与表达式.ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

数据类型、运算符与表达式数据类型、运算符与表达式 1 主要内容 C语言数据类型 常量 变量 运算符与表达式 2 C语言数据类型 程序 算法数据结构 基本类型 整型 实型(浮点型) 字符型 枚举类型 构造类型 数组类型 结构体类型 共用体类型 指针类型 空 类 型 C C语言中的数据类型语言中的数据类型 3 常量常量 常量的定义: 常量是指在程序执行过程中值不发生改变的量。 常量的分类: 按数据类型分类 整型常量 实型常量 字符常量 字符串常量 按表现形态分类 直接常量 符号常量 4 直接常量:从字面上可以看出数据的值 ,同时可以分析出数据的类型 整型常量 实型常量 字符常量 字符串常量 5 符号常量是一种特殊形式的常量,即是一种特殊形式的常量,即 用一个标识符表示一个常量。用一个标识符表示一个常量。 定义形式 #define #define 常量名常量名 常量值常量值 6 #include #define PI 3.1415926 void main () float r, l, s; r = 2.5; s = PI*r*r; l = 2*PI*r; printf (“r=%f,s=%f,l=%fn“, r, s, l); 7 什么是变量? 变量是程序执行过程中其值可以改变的量。 变量的分类 整型变量 实型变量 字符变量 变量的命名(同标识符的命名) 变量的使用 先定义,后使用先定义,后使用 变量定义的一般形式: 类型说明符类型说明符 变量名表;变量名表; 变量变量 8 整型数据整型数据 整型常量整型常量 十进制数 如:12、345、0 八进制数(以0开头) 如:012、045 十六进制数(0x开头) 如:0x12、0x345 整型常量举例整型常量举例 整型变量整型变量 基本型(int) 短整型(short int、short) 长整型(long int、long) 无符号型 无符号整型(unsigned int) 无符号短整型(unsigned short) 无符号长整型(unsigned long) 整型变量定义整型变量定义 9 整型常量举例 #include void main( ) printf(“%d,%o,%xn”,123,123,123); printf(“%d,%o,%xn”,023,023,023); printf(“%d,%o,%xn”,0x12,0x12,0x12); 例整型常量的不同进制表示。 %d,%o,%x是输入输 出的格式字符串,d 表示十进制、o表示 八进制、x表示十六 进制。 上述程序中的n n 表示输出后回车换行! 10 整型变量定义 整型变量的定义形式: 数值类型 变量名表; 说明: 数值类型即int、short 、long等。 变量名表可为一个或多 个变量名。 变量被定义后,其取值 范围也被确定。 注意事项 #include void main () int a, b, c; a = 4; b = 5; c = a * b; printf (“a*b=%dn“, c); 等价于 : int a; int b; int c; 11 使用整型数据时的注意事项: 1. 若某系统的C版本确定short int 与int 型数据在 内存中占据的长度相同,则二者等价。 2. 一个int型常量可以赋值给int型变量或long型变量 。 3. 长整型数的表示方法是在数值后面加字母l或L,如 234l,-12323L。 4. 无符号整数在数值后加字母u或U,如358u,也可与 L/l一同使用,如235Lu。 5. 不同的数据类型有不同的存储字长,使用时注意其 取值范围。 参见教材:P19表2.1 12 实型数据 实型常量 什么是实型常量 即浮点数。以十进制形式表示。 实型常量的表示形式 小数形式 指数形式(科学计数法) 使用数值常量时的注意事项 实型变量 单精度实型(float) 双精度实型(double) 13 实型常量的指数形式表示: 小数小数E(E(或或e)e)整数整数 说明: “小数”表示实数的数值位,即尾数部分。 “E”代表十进制数的基数10。 “整数”表示10的乘幂。 实型常量的指数形式表示法 举例:举例: 1.23103 3.918e-2 1.23E3 3.918 10-2 注意:字母注意:字母E E 之前必须之前必须 有数字!有数字! 14 使用数值常量时的注意事项 1.数值常量内不能有逗号、空格或其他 非法字符。 2.数值常量的值不得超过C语言规定的 取值范围,否则会产生溢出。 3.相同数值的常量可以在写法上区别它 的类型。 15 字符型数据字符型数据 字符常量 概念:指用撇号(单引号)括起来的单个字符 。 字符常量的分类 一般字符常量 转义字符常量 以一个反斜杠“”开头的字符序列,有特 定含义。 字符变量 字符数据的存储及使用 字符串常量 16 转义字符常量表转义字符常量表 字符形式功能 b退格(Backspace) t横向跳格 v竖向跳格 n换行 r回车不换行 f换页 表示反斜杠 表示 (单引号) ddd用三位八进制数表任意字符 (ASCII值) xhh用两位十六进制数表示任意字符 (ASCII值) 17 转义字符的使用转义字符的使用 #include void main () printf (“ ab c bd t ef rgn“); printf (“It is not a good example.n“); ab c _ ab c_ ab cd_ ab cd ef _ab cd ef ab cd _ 举例:举例: 程序 首句 执行 过程 gab cd ef 18 字符变量字符变量 关于字符变量关于字符变量 字符变量用来存放字 符常量。 一个字符变量只能存 放一个字符常量。 一个字符型变量在内 存中占用一个字节的 空间。 字符变量的定义格式: char 变量名表; 字符变量的赋值: 变量名字符常量/变量; 举例: char c; char ch1,ch2; c=a; ch1=b; ch2=ch1; 19 字符数据的存储及使用字符数据的存储及使用 数据在计算机中以二进制形式存放 。 字符数据在内存单元中存放的是其 对应的ASCII码,且一个字符占用一 个字节。 语言中允许字符常量像整型数据 一样参与相关运算。 程序中的应用范例。 字符 十进 制数 二进制数 A6501000001 B6601000010 Z9601100000 a9701100001 b9801100010 Z128 10000000 部分字符部分字符ASCIIASCII表表 20 例题例题 #include void main( ) char ch1,ch2; ch1=A; ch2=ch1+32; printf(“%cn”,ch2); #include void main( ) char c; int i; c=97; i=A; printf(“%c %dn”, c, c); printf(“%c %dn”, i, i); 1、大小写字符的相互转换 。 2、字符数据与整型数据通用。 21 字符串常量字符串常量 概念:字符串常量是指用一对双引号括起来的字符 序列。如“ Hello”、 “good”等。 字符串常量的存储: 1. 系统自动自动在字符串的末尾加上一个字符串结束标 记0,以此判断字符串是否结束。 2. 程序中长度为n个字符的字符串常量,在内存中 需要用n+1个字节空间来存储它。 举例:字符串“string”的存储。 string0 1151161141051101030 22 字符常量与字符串常量的区别字符常量与字符串常量的区别 二者表示形式不同。字符常量的定界符是二者表示形式不同。字符常量的定界符是 ,而,而 字符串常量的定界符是字符串常量的定界符是“”“”。 如:a是字符常量,而“a”是字符串常量。 存储空间不同。一个字符常量只占存储空间不同。一个字符常量只占1 1个字节,而一个字节,而一 个含有单个字符的字符串常量需要占用个含有单个字符的字符串常量需要占用2 2个字节。个字节。 如:a在内存中只占1个字节,“a”则需占用2个字节空 间。 不允许将一个字符串常量赋给一个字符型变量。不允许将一个字符串常量赋给一个字符型变量。 如:ch=a;是正确的,而ch=“a”;不是将字符a赋值给 变量ch。 23 变量的初始化变量的初始化 变量赋初值 C C语言允许在定义变量时对变量进行初始化,即对变语言允许在定义变量时对变量进行初始化,即对变 量赋初值。量赋初值。 如:如:intint a=2; a=2; 等价于等价于intint a a;a a2 2; 对变量进行初始化,允许只对定义的变量的一部分赋对变量进行初始化,允许只对定义的变量的一部分赋 初值。初值。 如:如:intint a, b, c=25; a, b, c=25;char ch1=x, ch2;char ch1=x, ch2; C C语言中若有几个变量初值相同,必须分别赋值。语言中若有几个变量初值相同,必须分别赋值。 如:如: intint a=2, b=2, c=2; a=2, b=2, c=2; 对字符型变量初始化时,既可以将字符用单引号括起对字符型变量初始化时,既可以将字符用单引号括起 来直接赋值,也可以使用该字符的来直接赋值,也可以使用该字符的ASCIIASCII码进行赋值码进行赋值 。 如:如:char char chch=A;=A;等价于等价于char char chch=65;=65; 24 变量的地址变量的地址 程序运行时,变量的值以二进制的形式 存储在内存相应的存储单元中。存储空间的 大小由变量的数据类型决定。 内存的编址: 内存分为若干个存储单元。内存分为若干个存储单元。 每个单元存放一个字节的数据。每个单元存放一个字节的数据。 每个单元有唯一的一个地址。每个单元有唯一的一个地址。 变量存放在内存单元中,若变量所占空间包括多变量存放在内存单元中,若变量所占空间包括多 个存储单元,则把首地址作为变量地址。个存储单元,则把首地址作为变量地址。 25 float b=1.2345; 则变量a、b在内存中的 存储情况如图示。 “ int b = 3; printf (“%dn“, a / b); 运行结果为7,而不是 7.333333 30 求余运算符“” 说明:表达式ab的运算结果为a除以b的余数,并且 a、b必须为整数。 举例: 135 结果为3 28结果为2 -227结果为 -1 17%5、17%-5结果均为2 -17%5结果为-2 (符号与被除数相同) 练习: 12211 19 31 自增和自减运算符、 作用:将操作数自 己增加1或者减少1。 前置(前缀): 如:+i 、-i 后置(后缀): 如:i+、i- #include void main () int i = 3, j = 4; i+; +i; j-; -j; printf (“%d %dn“, i, j); 结果输出:5 2 32 比较前置运算和后置运算 #include void main () int i = 3, j, k; j = i+; k = +j; printf (“%d%d%dn“, i, j, k); 请先阅读下面的程序: 结果输出显示:结果输出显示: 4 4 44 4 4 过程: i=3;3 j=i;3 i=i+1;4 j=j+1;4 k=j;4 i,j,k: 4 4 4 33 自增、自减运算小结: 自增运算符和自减运算符是单目运算符,且只 能用于单个变量。 当前置运算或者后置运算与其他运算结合在一 个表达式中时: 前置运算:先计算后引用 后置运算:先引用后计算 “+”和“-”的运算结合方向是从右到左。 遇到类似于a+b这样的表达式时,在保证有 意义的前提下,从左到右尽可能多地将若干个 字符组成一个运算符。相当于(a+)+b而不是 a+(+a)。 34 阅读下面的程序,写出运行结果: #include void main() int i = 2, j, k; j = (i+) + (i+) + (i+); k = (-i) + (-i) + (-i); printf (“%d %d %dn“, i, j, k); Answer: 2 6 6 35 VC+6.0 结果 36 VC+9.0 结果 37 算术表达式 算术表达式是指由算术运算符、运算量、括号和函数组 成,符合C语言语法规则的式子。 算术运算符优先级: 38 括号可用于改变计算顺序 先算括号里面的表达式,得到的结果再参与 括号外面的相关计算。 For Example: -3-2*3+2/3*2 -(3-2)*(3+2)/(3*2) 39 算术表达式的数据类型 算术表达式的数据类型即该表达式的值的类 型。 两个同类型的运算量参加运算,其结果也是 同类型的。 两个不同类型的运算量参加运算,运算前自 动转换为相同类型,其结果为转换后的类型 。 40 关系运算 六种关系运算符:、=、=、 !=; 都是双目运算符; 、=优先级别高于=、!=; 优先级低于算术运算符; 优先级高于赋值运算符; 41 关系表达式的一般形式: 表达式 关系运算符 表达式 a + b c d x 3/2 关系表达式为“真”时,值为1,为假时,值为0 42 逻辑运算 三种逻辑运算符: b = 3; a = 0 |运算时,当前一表达式为1时,不再求后一表 达式;如:a = 2; b = 3; a = 1 | b = 1; 44 赋值运算 赋值运算符:,其结合方式为自右向左 。其优先级很低,低于所有的算术运算符。 赋值表达式:由赋值运算符“”将变量 和表达式连接起来的式子。 形式:变量表达式 运算过程:将赋值运算符右边表达式的值赋 给左边的变量。 45 例如: (1)a=a+1; 等价于:a+; (2) a=b=c=2; 连续赋值 等价于:a=(b=(c=2); 或者: a=2;b=2;c=2; (3) a=2+(b=3); 等价于:b=3;a=2+3; (4) a=(b=2)*(c=3); 等价于:b=2;c=3;a=2*3; 允许赋 值表达式中含 有另外的赋值 表达式,进行 连续赋值 46 赋值运算的注意事项: “”是一个双目运算符,需要左右两个变量 。 “”是赋值运算符,不等于等号,没有相等 的含义。 “”左端的运算量必须是单个变量,而不能 是表达式。 赋值运算中,首先使运算符左端的变量具有右 端表达式的值,然后整个表达式的结果为左端 变量的值。 47 赋值运算中数值类型的转换 当赋值运算符两端的数据类型不同时,编 译程序将赋值运算符右边表达式的数据类型自 动转换成左边变量的数据类型。 实型赋给整型:舍去小数部分; 整型赋给实型:整数转换成实数 字符型赋给整型:低8位为字符的ASCII码值, 高字节补字符的符号位;(int赋给long int ,short int赋给int与此相同) 整型赋给字符型:低8位赋给字符;(long int赋给int,int赋给short int与此相同) double赋给float:四舍五入; 48 复合的赋值运算符 复合赋值运算符:+=、-=、*=、/=、%=、 =、=、float b;double c; 则:sizeof (a) = 4 sizeof (b) = 4 sizeof (c) = 8 sizeof (int) = 4 sizeof (float) = 4 sizeof (double) = 8 59 数据之

温馨提示

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

评论

0/150

提交评论