您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言运算符与表达式
2020/1/281陈孝则•按运算符所需操作数的多少可分:•(1)单目运算符—只需一个操作数。•(2)双目运算符—要求有两个操作数。•(3)三目运算符—要求有三个操作数。•2020/1/283•C语言中表达式可以是•1.一个常量•2.一个变量•3.由运算符连起来的常量变量•表达式可以含有运算符也可以不含有,根据使用运算符的不同,表达式可分算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式和逗号表达式等。算术运算符8种+、-、*、/、%称作双目运算符(需要有两个操作数(如2+3,8*7,a%b等))。++、――、―(取负)称作单目运算符(只需要一个操作数(如++a,--b,-c等))2020/1/285算术表达式由常量、变量或各种算术运算符联系起来的式子如:85,a,15/2,(++a)*6,a%b,++i,--p,-(q+y)等。算术表达式的值是数值,也可以作为逻辑值使用,非0代表逻辑“真”,0代表逻辑“假”。•注意:•1.当两个整数相除时,它们的结果一定为整数。如7/2结果为3。除数和被除数中有一个是实数。如7.0/2或7/2.0它们的结果都是3.5。•2.取余运算符%两边只能是整数或整型变量。如18%7其值为4;15%18其值为15;0%6其值为0;15%7其值为1;14%14其值为0。2020/1/287自增(++)运算使单个变量的值增1,自减(--)运算使单个变量的值减1。自增、自减运算符都有两种用法:(1)前置运算──运算符放在变量之前:++变量、--变量先使变量的值增(或减)1,然后再以变化后的值参与其它运算,即先增减、后运算。(2)后置运算──运算符放在变量之后:变量++、变量--变量先参与其它运算,然后再使变量的值增(或减)1,即先运算、后增减。2020/1/288如假设变量a的初值为4,设c=(++a)*6;a先加1得5参与运算(即5*6)得结果30。若c=(a++)*6;a先参与运算(即4*6)得结果是24。在赋值表达式运算结束后a加1,因此a值最终也为5(此时的a值与表达式无关)。关系运算符用来比较两个表达式值的大小,所以这种运算符也称比较运算符:(大于)、=(大于等于)、(小于)、=(小于等于)、==(等于)、!=(不等)它们都是双目运算符。比较的结果是个逻辑量。由关系运算符把表达式联系起来的式子称关系表达式,关系表达式成立,得逻辑值为真,否则为假,表达式成立显示1,不成立显示0.2020/1/2810(1)C语言规定了运算符的优先级和结合性。所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合性。反之,称为右结合性。结合性是C语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。圆括号是最高等级的运算符,在复杂的表达式中要求优先运算的地方用圆括号括起来,这就避开了很多运算符的优先问题。2020/1/2811(2)表达式求值1)按运算符的优先级高低次序执行。例如,先乘除后加减。2)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按C语言规定的结合方向(结合性)进行。如,算术运算符的结合方向是“自左至右”,即:在“a–b+c”时,先执行“a-b”;然后再执行+c的运算。C语言中提供了三种逻辑运算符:&&(与),||(或)(双目运算符),!(非)(单目运算符)。用逻辑运算符把表达式联系起来的式子称为逻辑表达式。逻辑运算符是对逻辑量进行运算,在没有逻辑类型的编译系统中,逻辑量是用可求值的表达式来表示的,根据表达式的值来判别,非0表“真”,0表“假”。而逻辑表达式的成立或不成立也是用数值来表达,逻辑表达式不成立其值为0,成立其值为1。因此逻辑表达式的值非0即1:•(1)a&&b当a为假时跳过计算b表达式•a||b当a为真时跳过计算b表达式•(2)数学上“1x≤10”在C语言中应写成:(1x)&&(x=10)位运算符用来实现变量内存单元字节中的位操作,规定只允许整型常量或整型变量才能实现位运算,并且一般运算的变量说明为unsigned类型。5个双目运算符:&(位与)、|(位或)、^(位异或)(左移)、(右移)1个单目运算符:~(取反)整型常量或整型变量通过位运算符组成位运算表达式。例如inta=12,b=10则位运算如下:a0000000000001100(12)b0000000000001010(10)a&b0000000000001000(8)a|b0000000000001110(14)a^b0000000000000110(6)a20000000000110000(48)a20000000000000011(3)~b1111111111110101(-11)当b是unsignedint类型时~b值为(65525)。•赋值运算符和赋值表达式赋值运算符可分基本赋值运算符和复合赋值运算符两大类,赋值表达式则是用赋值运算符联系起来的式子,一般左边是变量,右边是表达式。基本赋值运算符=如w=1;a=b=c=1;复合赋值运算符+=,-*=,/=,%=,&=,|=,^=,=,=如x+=28;等价于x=x+28;y*=59;等价于y=y*59;y*=a+88;等价于y=y*(a+88);不可以写成y=y*a+88;逗号运算符和逗号表达式若用d1,d2,…,dn分别代表n个表达式,则d1,d2,…,dn;就是一个逗号表达式,运算时从左到右分别求出各表达式的值,而整个表达式的值和类型由最后一个表达式(本例中为dn)决定。逗号表达式用来解决只能出现一个表达式但又要用到多个表达式求值的问题。如:f=a+b,g=c/b,e=8,10;该逗号表达式的值是10,当然,逗号表达式中前几个表达式已得到了运算,即变量f,g,e都已得到自己相应的值。又如a和b两数通过第3变量t交换可写成如下逗号表达式:t=a,a=b,b=t;2020/1/2818
本文标题:C语言运算符与表达式
链接地址:https://www.777doc.com/doc-3355930 .html