- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言课件OperatorsandExpressions
运算符与表达式 提纲 变量的定义与赋初值 运算符与表达式概述 算术运算符与算术表达式 基本算术运算符 自增、自减运算符 几点说明 赋值运算符与赋值表达式 类型转换 逗号运算符和逗号表达式 运算符小结 变量的定义与赋初值 变量定义的一般形式 数据类型 变量名1, 变量名2, …; 变量定义的位置:在所有函数之外或在块内的开头部分 程序中经常要对一些变量预先设置初值。C语言允许在定义变量的同时执行变量初始化。如, int a=3; int a, b, c=5; int a=3,b=4,c=5;这样将使得程序更为简洁。 运算符与表达式概述(1) C语言运算符范围很广,除控制语句以外的几乎所有基本操作都由运算符表示。 主要有以下几类: 算术运算符:+、-、*、/、 %、++、-- 关系运算符:、、=、=、==、!= 逻辑运算符:!、、|| 位运算符:、 、 ~、 |、 ^、 赋值运算符:=、+=、-=、*=、/=、%=等 条件运算符:?:; 逗号运算符:, 指针运算符:*、 分量运算符:·、— 下标运算符:[ ] 求字节数运算符:sizeof 运算符与表达式概述(2) 运算符一般要携带若干运算对象,运算对象称为操作数。根据操作数的个数,运算符可以分为单目运算符、双目运算符和三目运算符。 表达式由运算符和相应的操作数以及用于描述运算先后次序的圆括号构成。 注意:单独的常量、变量和函数调用也是表达式。 表达式的本质就是一个值。 为了表达式的书写方便(可以少写一些括号),C引进了运算符优先级和结合方向的概念。 运算符的结合方向(结合性)规定了同优先级运算符相遇时候的运算次序。 C运算符有两种结合方向:自左向右结合(左结合性),自右向左结合(右结合性)。 基本算术运算 C语言中的基本算术运算符有6个:+、-(减)、*、/、%(求模)、-(取负) 除了负号运算符是单目运算符外,基本算术运算符号都是二目运算符。 除了负号运算符是“右结合性”外,基本算术运算符号都是“左结合性”的。 六个基本算术运算符的优先级如下: -(取负)?*、/、%?+、-(减) %运算符的两个操作数均要求为整型或字符型数据 两个整数相除的结果亦为整数,相应小数部分将被舍弃。这样,5/3的结果为1。(但-5/3的结果是-1或-2将取决于不同的系统) 自增、自减运算符 自增、自减运算符的形式是++和--,其作用分别是使其操作数的值增1或减1。 自增、自减运算符只能用于变量,而不能用于常量或表达式。例如:5++,a++++都是错的。 自增、自减运算符均有前置和后置两种形式,当采用前置形式时,将先对变量执行自增(减)操作再取变量值为表达式的值;而采用后置形式时,将先取变量值为表达式的值再对变量执行自增(减)操作。例如:若有i=3,则执行j=++i运算后j=4,i=4;而执行j=i++运算后j=3,i=4。 自增、自减运算符的优先级和负号运算符相同,其结合方向也和负号运算符相同(“自右至左”),因此表达式-i++将等价于-(i++)。 自增、自减运算符常用于循环语句,指针移动中,原因是:简洁;高效。 几点说明(1) C标准并没有具体规定表达式中的子表达式的求值顺序。如,下面代码在不同C编译系统中的输出可能不同:void main( ){ int i=3, j; j=(i++)+(i++)+(i++); printf((i=%d, j=%d\n, i, j); } 在调用函数时,实参的求值顺序,C标准也没有统一的规定。如,下面代码在不同C编译系统中的输出可能不同:void main(){ int i=3; printf((%d, %d\n, i, i++); } 几点说明(2) 出现可能产生歧义的运算符组合时,C编译系统在处理时尽可能多地(自左而右)将若干字符组成一个运算符。例: i+++j ? (i++)+j。 ---i ? --(-i) 为了提高程序的可读性,更明确地表达程序的意图,应该注意如下几点: 适当引入括号以取消可能出现的运算符组合歧义 避免表达式和函数调用的运算结果对子表达式或函数参数求值次序的依赖性。 赋值运算符与赋值表达式(1) 赋值符号“=”就是赋值运算符,作用是将一个数据赋给一个变量。 在赋值符“=”前加上其它运算符,可以构成复合赋值符。凡是二目运算符,都可以与赋值符一起组合成复合赋值符。C语言规定可以使用10种复合赋值运算符:+=,-=,*=,/=,%=,=,=,=,^=,|= 引进复合赋值运算符是为了使程序更简洁。 赋值运算符的优先级比算术运算符低。 由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。一
文档评论(0)