《C语言程序设计-基础篇.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计-基础篇.ppt(21页珍藏版)》请在三一办公上搜索。
1、C 语言程序设计基础篇,第 3 章 运算符和表达式,2023/11/7,3.1 C运算符简介,C语言提供了很丰富的运算符,可分为:算术运算符关系运算符逻辑运算符位运算符赋值运算符条件运算符逗号运算符指针运算符求字节数运算符强制类型转换运算符特殊运算符,2023/11/7,在基础篇中,只介绍下面几种最常用的运算符:算术运算符赋值运算符关系运算符逻辑运算符,2023/11/7,3.2 算术运算符和算术表达式3.2.1 基本的算术运算符,2023/11/7,3.2.2 算术表达式和运算符的优先级与结合性,表达式是由常量、变量、函数和运算符组合起来的式子。如:a+b(a*2)/c(x+r)*8-(a+
2、b)/7sin(x)+sin(y),2023/11/7,运算符的优先级和结合性,优先级(从高到低)()+(正号)(负号)*/%+(加)(减)结合方向+(正号)(负号):从右向左+(加)(减)*/%:从左向右,2023/11/7,若在运算量两侧的运算符有相同的优先级,则按它们的结合方向顺序处理。,例:a b/c 1+a d e;,2023/11/7,两点说明,两个整数相除,结果也为整数直接舍去商的小数部分,而不会“四舍五入”如果需要得到精确的运算结果,可以把其中一个操作数转换为浮点数。举例:5/3(=1)、5.0/3(=1.66666)模运算符的两个操作数都必须是整数举例:5%3(=2),202
3、3/11/7,【例3.1】算术运算符,#include int main()int a,b,c,d;a=2;b=3;c=4;d=a*b/c+5;printf(d=%dn,d);return(0);,运行结果为:d=6,2023/11/7,3.2 赋值运算符,赋值运算符符号=为赋值运算符。赋值表达式:由赋值运算符“=”连接的式子称为赋值表达式,其一般形式为:变量=表达式;,2023/11/7,3.3 关系运算符和关系表达式3.3.1 关系运算符,关系运算:比较运算,比较两个操作数,看是否满足给定的关系。如:a3 为一比较运算,若a=5,a3 成立,结果为“真”;否则,若a=1,a3 不成立,结果
4、为假。在C语言中,用非零值表示真,零表示假。表达式:a3 称为关系表达式。,2023/11/7,C语言提供了六种关系运算符,:大于,53,35=:大于等于,5=3,3=5=:等于,5=3!=:不等于,5!=3,2023/11/7,关系运算符的优先次序,=为同一优先级,=,!=等为同一优先级,但前者高于后者。ab!=c(ab)!=ca=ba+b c(a+b)a+b=2*c(a+b)=(2*c),2023/11/7,3.3.2 关系表达式,关系表达式:用关系运算符将两个表达式连接起来的式子。如:aba+bb+c(a=3)(b=5)(ab)(bc)关系表达式的值为1或01表示结果为真,也就是关系成立
5、。0表示结果为假,也就是关系不成立。,2023/11/7,【例3.2】关系运算符,#include int main()int a,b,c;a=5;b=3;c=4;printf(ab:%dn,ab);printf(a+bb+c:%dn,a+bb+c);printf(ab)(bb)(bc);return(0);,运行结果为:ab:1a+bb+c:1(ab)(bc):0,2023/11/7,3.4 逻辑运算符和逻辑表达式,用逻辑运算符将关系表达式、逻辑表达式连接起来的式子称为逻辑表达式。,2023/11/7,逻辑运算符及优先级,逻辑运算符有三种:&(与 AND)如:a&b 当a,b均为真时,才为真
6、。(或 OR)如:a b 当a,b中只要有一个为真,就为真。!(非 NOT)如:!a 当a为真时,!a为假,反之为真。,2023/11/7,逻辑运算符优先级,!(非)优先于&(与),&优先于(或)即:!&和低于关系运算符,!高于算术运算符例:ab&cd(ab)&(cd)!b=c|dc&x+yc)&(x+y)b),2023/11/7,逻辑表达式,逻辑表达式的一般形式为:表达式 逻辑运算符 表达式其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。逻辑表达式的值是式中各种逻辑运算的最后值,以“1”和“0”分别代表“真”和“假”。,2023/11/7,【例3.3】判断年号是否为润年,润年必须满足下列条件中的任意一个:年号能被4整除但不能被100整除;年号能被400整除。用整型变量year表示年号则当(year%4=0&year%100!=0)year%400=0)为1时,year为润年,否则为非润年。,2023/11/7,【例3.3】判断年号是否为润年,#include int main()int year,leap;printf(Input year:n);scanf(%d,运行结果为:Input year:2006leap=0,