华中科技大学光电子学院C语言第二章_第1页
华中科技大学光电子学院C语言第二章_第2页
华中科技大学光电子学院C语言第二章_第3页
华中科技大学光电子学院C语言第二章_第4页
华中科技大学光电子学院C语言第二章_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、 第二章第二章 运算符与表达式运算符与表达式 1 表达式表达式 三个问题:三个问题: 1.运算符运算次序运算符运算次序(求值求值 ) 2.表达式的书写表达式的书写 3.表达式的类型转换表达式的类型转换c语言是一种表达式语言语言是一种表达式语言, 任何表达式后跟任何表达式后跟“;”都是语都是语句句. 一表达式一表达式 表达式是由运算对象(常量,变量,函数)与运算表达式是由运算对象(常量,变量,函数)与运算符符 组成的有意义的式子。组成的有意义的式子。 例:例: 代数式代数式 表达式表达式 4abecf( a + b ) / ( c e / (4 * f ) )sin41xsqrt( x ) +

2、sin( 41 * 3.14159 / 180 )15ln3yxpow( y, 1/5 ) + log ( 3 * x ) 0,1x( c = 0 ) 注:注:1.一个表达式书写只能占一行。层次性通过加圆括号体现。一个表达式书写只能占一行。层次性通过加圆括号体现。 2.任何表达式计算的结果只能是一个值,且其值的类型就是任何表达式计算的结果只能是一个值,且其值的类型就是 表达式的类型。表达式的类型。 3.常量,变量,有返回值的函数调用等都可视为简单表达式常量,变量,有返回值的函数调用等都可视为简单表达式。 表达式的分类(按运算符分类)表达式的分类(按运算符分类) 算术表达式算术表达式关系表达式关

3、系表达式逻辑表达式逻辑表达式赋值表达式赋值表达式条件表达式条件表达式逗号表达式逗号表达式位运算表达式位运算表达式 表达式的求值由运算符的功能和运算符优先级与结合表达式的求值由运算符的功能和运算符优先级与结合性决定的。性决定的。 二二.运算符与优先级及结合性运算符与优先级及结合性 算术运算符:算术运算符:+, ,*,/,%,+, 关系运算符:关系运算符:, =, int unsigned long unsigned long float double long double例:例: int i; char c; long p; double d; short s; float f; unsign

4、ed u; c s / i /*表达式类型为表达式类型为int */ u * 3 i /*表达式类型为表达式类型为unsigned */ u * 3.0 i /*表达式类型为表达式类型为 double */ f * 3 i /* 表达式类型为表达式类型为float */ c + 1 /*表达式类型为表达式类型为int */ 3 * s * p /*表达式类型为表达式类型为long */赋值号两边类型不同时,将右边的类型转换成左边类型赋值号两边类型不同时,将右边的类型转换成左边类型(不受上面规则的约束)(不受上面规则的约束)右边类型左边类型右边类型左边类型float int 截去小数部分截去小数

5、部分 (降格)(降格)double float 四舍五入四舍五入 (降格)(降格)int float 小数部分均为小数部分均为 (降格)(降格)int char 丢掉高出位丢掉高出位 (降格)(降格)long int 丢掉高出位丢掉高出位(与机器有关与机器有关)(降格)(降格) )强制类型(显式)转换)强制类型(显式)转换 一般形式:一般形式: (类型名)(表达式)(类型名)(表达式) 例:(例:(char)( 3 3.14 * x ) /* 表达式类型为表达式类型为char */ (float) i + 3 /* 表达式类型为表达式类型为 float 原原i类型不变类型不变*/ 注:被强制转

6、换的变量类型不发生变化注:被强制转换的变量类型不发生变化 二赋值运算及复合赋值运算二赋值运算及复合赋值运算 赋值运算符:赋值运算符: 复合赋值运算符:,复合赋值运算符:,=, ,&=, =, |=, , =a & ch =z 判断判断ch1中是否为非数字字符则可用中是否为非数字字符则可用ch19例:例:int x=10, y=20; x != xy x != ( x+y ) 结果为结果为 = x (右移),(右移), (左移)(左移) )&运算法则:运算法则: 两对应位同时为,结果为,否则为两对应位同时为,结果为,否则为)运算法则:运算法则: 两对应为同时为,结果为,否

7、则为两对应为同时为,结果为,否则为)运算法则:运算法则: 两对应为相同为,不同为两对应为相同为,不同为)将原来为的位变,为的位变)将原来为的位变,为的位变 例:例:0xabcd&0xff 用用0xff与与 0xabcd按位与,则可取后位二进制数按位与,则可取后位二进制数结果为结果为0xcd注:注:& 和和 & , | 和和 | | 的区别的区别 &,| 是对位进行逐位运算,是对位进行逐位运算,&,|对整个表达式进行逻辑运算对整个表达式进行逻辑运算 &,|要计算表达式的具体值,要计算表达式的具体值,&,|要判断表达式为或要判断表达式为或 &

8、amp;,|具有交换性,即具有交换性,即x|y = y|x, x&y y&x, 但但&, |不可交换不可交换例:例:& 结果为结果为& 结果为结果为 ) e 1 e 2 将右移位,左边空出位填充右的将右移位,左边空出位填充右的类型决定类型决定, 若是无符号类型由填若是无符号类型由填,否则由符号位填否则由符号位填例:例:int x=10则:则: b )?a : 例:求绝对值送例:求绝对值送absx中中 absx = x = a & ch = z )? ( ch - a + a ) : ch 七七. “,”运算符运算符 “,”有两个作用:有两个作用:

9、 .用作分隔符:如用作分隔符:如int x, y; .在逗号表达式中作逗号运算符在逗号表达式中作逗号运算符 逗号表达式:逗号表达式:e1,e2 逗号表达式的值和类型取自最右边表达式的值和类型逗号表达式的值和类型取自最右边表达式的值和类型, 且从左向右结合运算。且从左向右结合运算。例:例:int a,b; char c; a = 1, b = 2, c = 3; /* 逗号表达式,其结果为逗号表达式,其结果为,类型为字符型,类型为字符型例:(,)(,)例:(,)(,)/* 结果为结果为 */ 练习题练习题 将下列数学式写成语言的表达式将下列数学式写成语言的表达式 已知变量说明如下已知变量说明如下 char c = a; int a =3, b=4 , d=-7; double x=1.8,y=3.15; 求下列表达

温馨提示

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

评论

0/150

提交评论