运算符与表达式_第1页
运算符与表达式_第2页
运算符与表达式_第3页
运算符与表达式_第4页
运算符与表达式_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、标识符标识符一、标识符:用来标记、一、标识符:用来标记、变量变量、函数函数及的名字的及的名字的字符序列字符序列。二、标识符的构成规则:二、标识符的构成规则:以字母(大小写皆可)或下划线开头以字母(大小写皆可)或下划线开头随后可跟若干个(包括随后可跟若干个(包括0个)字母、数字、下划线个)字母、数字、下划线标识符的长度各个系统不同,最好不要超过标识符的长度各个系统不同,最好不要超过8个字符个字符如:如:x 、 y3 、 _imax 、 else 、 x 、 a_to_b7x 、 int 、 #no 、 bad one 、 re-input数据(数据(常量常量和和变量变量)类型)类型基本数据类型基

2、本数据类型构造类型构造类型其它类型其它类型整型整型 int字符型字符型 char实型实型枚举类型枚举类型单精度型单精度型float双精度型双精度型double数数 组组结构体结构体共用体共用体指针类型指针类型空空 类类 型型常量的定义及类型常量的定义及类型常量:在程序中,常量是指常数或其值不能被改变的量。常量:在程序中,常量是指常数或其值不能被改变的量。常量的类型分为:常量的类型分为:整型常量、整型常量、实型常量实型常量(浮点数浮点数)、字符常量、字符串常量、字符常量、字符串常量十进制十进制 21八进制八进制 025 (25)8十六进制十六进制 0 x15 (15)16十进制小数形式十进制小数

3、形式 3.14指数形式指数形式 123e7a, 9, +, n转义字符转义字符“how do you do?”、 “china”程序中的呈现方式:程序中的呈现方式:1 1、在函数体中以数据方式呈现、在函数体中以数据方式呈现2 2、在预定义部分用、在预定义部分用definedefine命令定义的符号常量命令定义的符号常量符号常量符号常量#define pi 3.1415926 main( ) float r,c,s; r=2; c=2*pi*r; s=pi*r*r; printf(“c=%f, s=%f”, c,s); 符号常量:符号常量: 用标识符表示的常量用标识符表示的常量格式:格式: #d

4、efine 标识符标识符 常量常量三、变量定义的格式:三、变量定义的格式: 例如例如: int a,b,c;: int a,b,c;变量变量一、定义:在程序中,其值是可以改变的量称为变量。一、定义:在程序中,其值是可以改变的量称为变量。二、类型:整型变量、实型变量、字符型变量二、类型:整型变量、实型变量、字符型变量 注意:变量必须注意:变量必须先定义后使用先定义后使用。变量具有三个要素变量具有三个要素:变量名、数据类型、和变量的值变量名、数据类型、和变量的值a 变量名(程序命令中)变量名(程序命令中)3变量值变量值存储单元存储单元(内存单元内存单元)int a,b,c;int a,b,c;a=

5、10a=10;b=20b=20;int a=10,b=20,c;int a=10,b=20,c;c=30c=30;四、初始化四、初始化: :变量定义后赋初值。也可以定义的同时进行初始化。变量定义后赋初值。也可以定义的同时进行初始化。变量的定义和初始化例举说明变量的定义和初始化例举说明例如:例如: int i ; i9; /* 先定义整型变量先定义整型变量i, 然后赋初值然后赋初值9*/ float r=1.5; /*定义实型变量定义实型变量r的同时,赋其初值的同时,赋其初值1.5*/ char answer=y; /*同上同上*/ 也可以使被定义的变量的一部分赋初值。也可以使被定义的变量的一部

6、分赋初值。 如如 int a,b,c=5;表示定义表示定义a,b,c为整型变量,并且对为整型变量,并且对c进行初始化,使进行初始化,使c值为值为5。注意:如对几个变量同时赋初值为注意:如对几个变量同时赋初值为5,应写成,应写成 int a=5,b=5,c=5; 或者或者 int a,b,c; a=b=c=5; 而不能写成而不能写成 int a=b=c=5;变量的数据类型变量的数据类型1、整型变量、整型变量类型说明符类型说明符数的范围数的范围字节数字节数基本型基本型int-3276832767 即即-215(215-1)2无符号无符号基本型基本型unsigned int065535 即即0(21

7、6-1)2短整量短整量short int-3276832767 即即-215(215-1)2无符号无符号短整型短整型unsigned short int065535 即即0(216-1)2长整型长整型long int-21474836482147483647 即即-231(231-1)4无符号无符号长整型长整型unsigned long04294967295 即即0(232-1)4 定义方法:定义方法: int a; long int b; unsigned int c;2、实型变量、实型变量类型说明符类型说明符比特数比特数(字节数)(字节数)有效数字有效数字数的范围数的范围单精度单精度flo

8、at32(4)6710-371038 双精度双精度double64(8)151610-30710308 长双精度长双精度long double 128(16)181910-4931104932 定义方法:定义方法: (单精度)(单精度) float 变量名变量名 (双精度)(双精度) double 变量名变量名 定义方法:定义方法: char 变量名列表变量名列表 char c1,c2,c3; 初始化初始化 char c1,c2;c1=e; c2=3 类型说明符类型说明符字节数字节数取值范围取值范围char1ascii码字符集中的字符。码字符集中的字符。或或02553.字符变量字符变量区别:区

9、别:a “a”注意:字符串常量不能被赋值到字符变量中,因为字符变量只能容纳一个字符。注意:字符串常量不能被赋值到字符变量中,因为字符变量只能容纳一个字符。例例2 2:求表达式:求表达式z=3x+5y-8z=3x+5y-8的值的值(p57)(p57)开始开始定义所用变量定义所用变量x,y,z输入输入x,y的值的值计算计算z的值的值结束结束#include main() int x,y,z; scanf(“%d%d”,&x,&y); z=3*x+5*y-8; printf(“%d”,z);nscanf(“%d%d ”,&a,&b);int x; %d long x;

10、 %ldfloat x; %f double x; %f long double x; %lfchar x %c %dscanfscanf函数(输入函数)函数(输入函数)p52p52nprintf(“z的值是:的值是:%d n”,z);int x=10; %d %o %x long x=689004; %ldfloat x=3.15; %f %edouble x=3.1592678; %f %elong double x=3.15897; %lfchar x=q %c %dprintfprintf函数(输出函数)函数(输出函数) p47p47复习复习 c语言中的数据类型分为:语言中的数据类型分

11、为:字符类型、整类型、实类型、字符类型、整类型、实类型、指针类型、指针类型、构造类型和空类型。构造类型和空类型。 c语言中的数据有常量和变量之分,它们分别属于以上这些类型。语言中的数据有常量和变量之分,它们分别属于以上这些类型。 如如: 字符型常量字符型常量 : a 8 n 字符串型常量:字符串型常量:“beijing” “a” 整型常量:整型常量:2 6 12 实型常量:实型常量:3.2 1.0 5.2e4 c语言的变量具有三个要素:变量名、数据类型和变量的值。语言的变量具有三个要素:变量名、数据类型和变量的值。 变量名是变量的名字,用标识符来标识,变量是用来存储数据的,存变量名是变量的名字

12、,用标识符来标识,变量是用来存储数据的,存储的数据就是变量的值,数据类型决定了变量所占字节的多少。储的数据就是变量的值,数据类型决定了变量所占字节的多少。第二章第二章 数据类型及输入输出数据类型及输入输出主讲教师:刘永花主讲教师:刘永花yonghua-本章主要内容本章主要内容n标识符标识符n常量和变量的概念常量和变量的概念n各种数据类型的常量及变量各种数据类型的常量及变量n变量赋初值变量赋初值n几种基本运算符及其表达式几种基本运算符及其表达式n不同类型数据间的混合运算不同类型数据间的混合运算运算符运算符一、运算符:一、运算符:能够完成某种操作(运算)的符号。能够完成某种操作(运算)的符号。 二

13、、根据运算符的运算对象(操作数)的多少,运算符可分为:二、根据运算符的运算对象(操作数)的多少,运算符可分为: 单目(一元)运算符单目(一元)运算符 i+ -n 双目(二元)运算符双目(二元)运算符 a+b d/e 三目(三元)运算符三目(三元)运算符 xy? ?x+3: :y*9(条件运算符)条件运算符)优先级优先级运算符运算符操作数操作数结合性结合性1 ( ) - . 左左右右2 ! - + - & * sizeof1右右左左3 * / %2左左右右4 + -2左左右右5 2左左右右6 = 2左左右右7 = = !=2左左右右8 &2左左右右9 2左左右右10 |2左左右右

14、11 &2左左右右12 |2左左右右13 ? :3右右左左14 = *= /= += =2右右左左15,2左左右右c运算符一览表运算符一览表p25表达式表达式一、一、c表达式:表达式:由运算符和由运算符和运算对象运算对象构成的式子。构成的式子。 运算对象运算对象可以是常量、变量、函数或可以是常量、变量、函数或表达式表达式。 二、二、 表达式的表达式的书写原则书写原则 (1)c语言的表达式只能采用线性的形式书写。语言的表达式只能采用线性的形式书写。 例如例如: 应写成应写成1/3+i+j*j*j 应写成(应写成(a+b)/(c+d)*e+f 331ji fedcba(2) c语言的表达式

15、只能使用语言的表达式只能使用c语言中合法的运算符和操作数语言中合法的运算符和操作数, 对对有些操作有些操作必须调用库函数必须调用库函数完成完成, 而且运算符不能省略。例如而且运算符不能省略。例如: r2应写成应写成3.14159*r*r。 应写成应写成0.5*a*b*sin(alph)。 |xy|应写成应写成fabs(xy)。 y+2x 应写成应写成y+pow(2, x)。aabsin21#include “math.h”三、表达式在求值时,遵循以下规则三、表达式在求值时,遵循以下规则(1)优先级:优先级:不同优先级的运算符出现在同一表达式时,按运算不同优先级的运算符出现在同一表达式时,按运算

16、符的优先级的高低次序执行。符的优先级的高低次序执行。 例如:例如: d=a+b*c; /*先乘后加先乘后加*/(2 2)结合性:结合性:是指表达式中出现同优先级的操作符时,该先做哪是指表达式中出现同优先级的操作符时,该先做哪个操作符的规定。个操作符的规定。 结合方向:结合方向:“自左向右自左向右”、“自右向左自右向左” 例如:例如: a+b-c 从左至右从左至右 d=a=b=3 从右至左从右至左四、表达式的四、表达式的分类分类 c语言表达式种类很多语言表达式种类很多, 有多种分类方法。有多种分类方法。 我们一般依据运算我们一般依据运算的特征将表达式分为的特征将表达式分为: 算术表达式算术表达式

17、, 如如a+b*2.0-3.0/5.0 关系表达式关系表达式, 如如x=y, 关系表达式可以认为是逻辑表达式的关系表达式可以认为是逻辑表达式的特殊情况特殊情况 逻辑表达式逻辑表达式, 如(如(x=2)&(xb)?a: b 逗号表达式逗号表达式, 如如a=2, b=a*a, c=sqrt(b)五、表达式值的五、表达式值的数据类型数据类型(1)每个表达式都有一个确定的值,因而有确定的数据类型。)每个表达式都有一个确定的值,因而有确定的数据类型。(2)表达式的分类和数据类型取决与最后执行的运算符,)表达式的分类和数据类型取决与最后执行的运算符,如:如: 34.5+(76) 为算术表达式,类型

18、是为算术表达式,类型是double型,值型,值35.5 34.5+76 为关系表达式,类型是为关系表达式,类型是int型,值型,值1算术运算符和算术表达式算术运算符和算术表达式 1、分类、分类 单目单目 - 负号运算负号运算 + 自增自增 - 自减自减 双目双目 + 加加 - 减减 * 乘乘 / 除除 % 求余求余“/”如果是两个整型数相除,取整;如有一个为实数时,其意义就是如果是两个整型数相除,取整;如有一个为实数时,其意义就是实数除,结果为实数除,结果为double型。型。 5/2 = 2 5.0/2.0= 2.5 “%”取余数,只能对整数取余数,不能对浮点数取余数。取余数,只能对整数取余

19、数,不能对浮点数取余数。运算结果运算结果的符号与左操作数相同。的符号与左操作数相同。 5%2 = 1 -35%8 = -3 35%-8 = 32、自增和自减运算符、自增和自减运算符格式格式: +i,i+ -i, i- 作用作用:是使变量:是使变量i的值加的值加1或减或减1,相当于,相当于i=i+1或或i=i-1。 前置前置:表示先修改操作数使之增:表示先修改操作数使之增1或减或减1,然后取修改后的操作数的值,然后取修改后的操作数的值作为表达式的值。作为表达式的值。后置后置:表示在表达式中先取操作数的值作为表达式的值,:表示在表达式中先取操作数的值作为表达式的值, 然后再将操然后再将操作数值增作

20、数值增1或减或减1。例如:例如: j=i+; j的值为的值为3(首先将(首先将i的原值赋给的原值赋给j,然后然后i自身再加自身再加1) j=+i; j的值为的值为4(i自身先加自身先加1,然后再将加,然后再将加1后的值赋给后的值赋给j) main() int i,j,k; i=3; j=i+; k=+i; printf(“i=%d,j=%d,k=%dn”,i,j,k);输出结果输出结果:i=5,j=3,k=52 、在表达式中如果有在表达式中如果有2个以上的个以上的“+”或或“-”连写在一起,则编译器首先连写在一起,则编译器首先识别前面两个识别前面两个+或或-为自增或自减操作符。例如:为自增或自

21、减操作符。例如: 在使用自增或自减运算符时注意如下几个问题在使用自增或自减运算符时注意如下几个问题 :1、自增或自减运算只能用于变量,不能用于常量或表达式;、自增或自减运算只能用于变量,不能用于常量或表达式; 错误:错误:25+ (i+j)+例如例如-i+,只能理解为只能理解为-(i+)。因为因为(-i)为表达式,表达式是不能自加自减的。为表达式,表达式是不能自加自减的。 i3; j -i+; printf(“%d”,j); int a=1 , b=5, c; c=a+b; c=a+b; c=a+b; 正确:正确:c=6错误:错误:+ 不是双目运算符不是双目运算符正确:正确:a+ + b输出结

22、果应为输出结果应为-3,而不是是,而不是是-4。3、 表达式中包含有自增、自减运算时表达式中包含有自增、自减运算时, 容易出错容易出错, 务请小心。务请小心。 如有:如有: i=1; 则:则: 类似上面分析类似上面分析, 应为应为3, 当然表达式计算完成后当然表达式计算完成后i 的值同样改的值同样改变为变为4。(+i)+(+i)+(+i)的值为多少呢?的值为多少呢?是是9(=2+3+4)吗?吗? 计算时先对整个表达式扫描计算时先对整个表达式扫描, i 先自增先自增3次次, 由由1234, 如此计算结果为如此计算结果为4+4+4, 等于等于12。(i+)+(i+)+(i+)的值又是多少呢?的值又

23、是多少呢?赋值运算符和赋值表达式赋值运算符和赋值表达式1、赋值运算符、赋值运算符: = 使用方法使用方法:变量表达式变量表达式 赋值运算时先计算右边表达式的值赋值运算时先计算右边表达式的值, 然后将右边表达式的值赋然后将右边表达式的值赋给左边变量给左边变量, 并以此值作为整个赋值表达式的值。并以此值作为整个赋值表达式的值。(1)赋值运算的优先级为第)赋值运算的优先级为第14级级, 次低。次低。如:如: int i; i=3+5%2; /*先计算先计算3+5%2, 得到得到4, 然后将然后将4 赋给赋给i*/ 。(2)理解以下两赋值表达式的含义:)理解以下两赋值表达式的含义: y5; n5; x

24、y; nn1;(3)赋值运算符具有)赋值运算符具有 “自右向左自右向左”的结合性,赋值运算符右边的表的结合性,赋值运算符右边的表达式也可以是赋值表达式:达式也可以是赋值表达式: 例如:例如: ab5; 等同于等同于 a(b=5);2、复合赋值运算、复合赋值运算 算术复合赋值运算符算术复合赋值运算符: +=、 =、 *=、 /=、 %=位复合赋值运算符位复合赋值运算符: &=、 |=、 =、 =、 =一般形式一般形式: 变量变量=表达式表达式 等价于等价于: 变量变量=变量变量表达式表达式例如:例如:(1) int a=3; a+=2 ; 等价于等价于 a=a+2 (2) float x

25、=1.2, y=2.1; y*=x+3.4; 等价于等价于 y=y*(x+3.4)(3) int a=1, b=2; b/=a+=1; 等价于等价于 b=b/(a=a+1)逗号运算符和逗号表达式逗号运算符和逗号表达式一、逗号运算符的一、逗号运算符的 一般形式如下一般形式如下: 表达式表达式 1, 1, 表达式表达式 2, 2, 表达式表达式 3, , 3, , 表达式表达式n n 先计算表达式先计算表达式 1, 1, 再计算表达式再计算表达式 2, 2, 再计算表达式再计算表达式 3, , 3, , 再计算表达式再计算表达式n n的的值值, , 并以此作为整个表达式的值。并以此作为整个表达式的

26、值。 如:如: a=2, a*6, 先计算先计算a=2, 再计算再计算a*6, 并以此作为整个表达式的值并以此作为整个表达式的值, 表达式的值为表达式的值为 12。再如:再如: x=a=3, 6*x, 6*a, a+x 表达式值为多少?表达式值为多少? main() int a , x; printf(“%dn”, x=a=3, 6*x, 6*a, a+x );main() int a , x , y; y= (x=a=3, 6*x, 6*a, a+x) ; printf(“%dn”, y);并不是任何地方出现的逗号都是逗号运算符,并不是任何地方出现的逗号都是逗号运算符,例如:例如:print

27、f(“%d%d%dn”,i,j,k); (是参数分隔符)是参数分隔符)如果写成:如果写成: printf(“%d%d%dn”,(i,j,k),j,k); 相当于:相当于: printf(“%d%d%dn”, k,j,k);求字节数运算求字节数运算 运算符运算符: sizeof(数据类型标识符数据类型标识符) 或或 sizeof(表达式表达式) 求字节数运算是单目运算求字节数运算是单目运算, 操作数可以是类型名操作数可以是类型名, 也可以是变量、也可以是变量、 表达式表达式, 用以求得相应类型或数据所占的字节数。用以求得相应类型或数据所占的字节数。 例如:例如: sizeof(float) 值为值为4,单精度类型占,单精度类型占4个字节个字节 sizeof(2*3.0) 值为值为8,算术表达式,算术表达式2*3.0是是double型型数据的类型转换数据的类型转换p36一、系统自动进行的类型转化一、系统自动进行的类型转化由系统自动完成类型转换由系统自动完成类型转换,

温馨提示

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

评论

0/150

提交评论