- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6讲 运算符和表达式.ppt
嵌入式Linux系统开发技术第6讲 运算符和表达式 运算符、表达式和语句 表达式的概念及分类 运算符分类 优先级和结合方向 类型转换 表达式 表达式的概念 用运算符和括号将操作数连接起来的、符合C语言语法规则的式子,称为表达式。 操作数 运算符 2 * y + 5 运算符分类 根据操作数的数量分类 一元运算符 二元运算符 三元运算符 根据用途分类 赋值运算符 算术运算符 关系运算符 逻辑运算符 位运算符 条件运算符 (?:) 逗号运算符 (,) 算术运算符 算术表达式:用算术运算符和括号将操作数连接起来的式子是算术表达式; 算术表达式 是二元运算符 +、-、*、/、% 优先级: () ?* / % ?+ - 左结合性 结合性是指同级运算时运算符的结合方向。 左结合性:从左至右运算规则; 右结合性:从右至左运算规则; 示例代码 示例1:22 / 5表达式的结果? 示例2:输出结果是? #include stdio.h int main(void){ double y; float a = 2.0; int b =6,c=3; y = a*b/c-1.5+A; printf(%f\n,y); return 0; } C语言规定:两个整数相除,其商为整数,小数部分被舍弃 先乘除后加减。优先级相同,则按左结合进行。 自增与自减运算符 一元运算符 取正数(+)、取负数(-) 递增(++)、递减(--) +、-、++、--是同级运算符,为右结合性; 自增与自减运算符 ++i与--i :先增减1,再使用i; i++与i--:先使用i,再增减1; 单独使用时:i++?++i?i=i+1 示例 例1: int i=3;问j=++i和j=i++中j分别是多少? 例2: int i=2;j=-i++;问i和j的值分别是多少? 输出结果如何? #include stdio.h int main(void) { int i = 8,j = 10,k = 12; int m,n,p; m = ++i; n = j--; p = (++m)*(n++)+(--k); printf(i=%d,j=%d,k=%d\n,i,j,k); printf(m=%d,n=%d,p=%d\n,m,n,p); } 总结 良好的源程序书写习惯:在表达式中,在双目运算符的左右两侧各加一个空格,可增强程序的可读性。 5 + (c = 3 + 8) 算术运算符之间的优先级 不要太聪明,记得常用小括号; 运算符类型 运算符 结合方向 一元 - + ++ -- 从右向左 二元 * / % 从左向右 二元 + - 从左向右 赋值运算符 赋值运算符:= 复合赋值运算符:由赋值运算符与算术、位移、位逻辑运算符组成。 *=、/=、+=、-= =、= =、^=、!= 优先级与结合性 所有的赋值运算符的优先级相同 始终按从右向左顺序进行计算 赋值运算符的优先级低于算术运算符,仅高于逗号运算 赋值表达式 赋值表达式 由赋值运算符或复合赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达式。 赋值表达式的值:任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。 赋值运算符 将同一个值赋给多个变量的操作叫做多重赋值 问下面两种多重赋值方式哪种是正确的? a=b=c=10 int a=int b=int c=10 运算符 表达式 计算 结果(假设 X=10) += X += 5 X = X + 5 15 -= X -= 5 X = X - 5 5 *= X *= 5 X = X * 5 50 /= X /= 5 X = X / 5 2 %= X %= 5 X = X % 5 0 复合赋值运算符 计算a的值及赋值表达式的值 int a = 2, b = 3, c = 4; a*= b + c 计算a的值及赋值表达式的值 a = 3;a+=a*=a; 示例输出结果 #include stdio.h int main(void) { int x,y,z; z = (x=(y=12)/4); printf(x : %d;y : %d ;z : %d\n,x,y,z); z = (x=y=12/4); printf(x : %d;y : %d ;z : %d\n,x,y,z); z = (x=(y=12/4)); printf(x : %d;y : %d ;z : %d\n,x,y,z); //z = ((x=y)=12/4); //printf(x : %d;y : %d ;z : %d\n,x,y,z); return 0; } 关系
文档评论(0)