运算符和表达式

发布时间 2023-10-09 08:49:31作者: aida_j

1.运算符和表达式的概念

运算符就是对数据进行运算的符号。每个运算符都有它专门的符号表示,有它的含义、运算目数(运算对象个数)、优先级和结合性等特性。
  表达式是由操作数和运算符进行有效连接而成的式子。单个操作数是最简单的表达式。如16、x、f(5),x+y,x>5,(a>5) && (b<=10)。   

2.运算对象

运算对象:就是利用运算符进行运算的数据。3+5。
  运算符:单目运算符、双目运算符和三目运算符3种。-x;x+y。   

3.运算符的功能分类

算术运算符:+、-、*、/、%
  比较运算符:<、<=、==、>、>=、!=
  逻辑运算符:&&、||、!
  赋值运算符:=、+=、-=、*=、/=、%=
  指针运算符:&、* 
  成员访问运算符:[]、.、->
  其他:()、sizeof、++、--、 ,   

4.运算符的优先级

运算符优先级有高低之分,高的先被计算,低的后被计算。
  15个优先级,优先级编号越小表示优先级越高。如*、/为3,+、-为4。   

5.运算符的结合性

运算符的结合性分为从左向右和从右向左两种相反次序。计算8-3+2。
  赋值运算符的结合性是从右向左。a、b、c的值为2、3和4,a=b=c。   

6.常用运算符使用介绍

●双目算术运算符
  +、-、*、/、%(取余),如30/8,30%8,(double)30/8,-30/4,-30%4,3+4.5*2/10
  ●赋值运算符
  能够把一个值赋给一个变量或通过运算后赋给一个变量。
  赋值运算符:一般赋值运算符和复合赋值运算符两类。
  一般赋值运算符为等号,复合赋值运算符有许多种,+=、-=、*=、/=
  如a=4;b=5; a+=3相当于a=a+3;a*=b-2相当于a=a*(b-2)
  ●增1(++)和减1(--)运算符:单目运算符,2级,右左
  前增1:++i, 先增后求值,若i=5,计算结果和i值均为6。
  前减1:--i, 先减后求值,若i=5,计算结果和i值均为4。
  后增1:i++, 先求值后增,若i=5,计算结果为5,i值为6。
  后减1:i--, 先求值后减,若i=5,计算结果为5,i值为4。
  如x=2;y=3; z=x++*--y; 若z=++x*y--;
  ●求类型长度运算符sizeof
  如sizeof(int),sizeof(char),sizeof(-30) 4,sizeof(2.5) ,sizeof(2.5f),sizeof(char*)
  ●强制类型转换运算符()
  (<类型关键字>)<表达式> 
  如(float)3/2=1.5f,(int)34.8=34,(float)(3/2)=1.0f
  ●增1(++)和减1(--)运算符:单目运算符,2级,右左
  前增1:++i, 先增后求值,若i=5,计算结果和i值均为6。
  前减1:--i, 先减后求值,若i=5,计算结果和i值均为4。
  后增1:i++, 先求值后增,若i=5,计算结果为5,i值为6。
  后减1:i--, 先求值后减,若i=5,计算结果为5,i值为4。
  ●关系(比较)运算符
  共6个:>, >=, <, <=, ==, !=
  如5>4为真,3<=2为假。若x=2,x>0,x<=5,x!=2,x-3>=4。
  关系表达式:由关系运算符连接而成的式子。如x+5>=y。
  优先级: >、>=、<、<=优先于==、!=。
  x=5, x==5。if(x=5) …; if(x==5) …
  关系式的相反式:如x==1,相反式x!=1;x>y,相反式x<=y。
  ●逻辑运算符
  3个 与(&&)、或(||)、非(!)。如x && y>4、a
  &&: 两个运算对象的值同时为真,其结果为真,否则为假。
  ||: 两个运算对象的值同时为假,其结果为假,否则为真。
  !: 对其后的运算对象的值取反,真变假,假变真。
  运算对象:数值(非0为真)、关系式、逻辑表达式
  优先级:!高于&&,&&高于||。
  逻辑运算的等价关系:!!a与a、!(a && b)与!a||!b、!(a||b)与!a&&!b。 
  逻辑运算的相反关系:a与!a、(a && b)与!a||!b、(a||b)与!a&&!b。
  如!(x>3 && x<8)与(x<=3 ||x>=8)等价。
  如(g==1 || g==2)与(g!=1 && g!=2)相反。
  ●条件运算符(?微笑
  <表达式1> ? <表达式2> : <表达式3> 
  如:(x>y)?(z=x)伤心z=y); z=(x>y? x:y);
  ●逗号运算符
  <表达式1>, <表达式2>, …;
  从左到右相继计算每个表达式的值,最后一个表达式的值就是整个逗号表达式的值。如a++,b++,c--; 若a=2,b=3,c=4,则运算结果为4。
  ●圆括号运算符()
  括号内运算优先进行,即先算括号内,后算括号外。如x/(y+2)。
  圆括号可以嵌套。如(x*(y+5)-3),最内层的括号更优先。
  要尽量使用圆括号。如x>=y+z与x>=(y+z)相同。
  圆括号其他用途: f(x)、(int)3.5、sizeof(int)。   

7.表达式

●分类:数值表达式、关系表达式、逻辑表达式、指针(地址)表达式。
  如x*y-1、a!=5、(x==3) || (x>=10)、&x+2 
  ●表达式运算
  按照每个运算符的优先级和结合性进行。
  函数调用最优先,逻辑非、取负、增1、减1等运算优先于各种算术运算,算术运算优先于各种关系运算,而关系运算又优先于逻辑与、或的运算,优先级较低的是直接赋值和各种复合赋值运算,括号内优先于括号外。
  4*a+2/x-5//*,/,+,-
  x>0 && y==10 || 2*a<=100//>,==,&&,*,<=,||
  2-f(8)*4+5//f(8) * - +
  ●表达式的值
  数值(算术)表达式的计算结果将是一个数值。关系表达式和逻辑表达式的计算结果将是一个逻辑值1或0,为int类型的一个整数;例如5>3运算结果为整数1。每个地址表达式的计算结果是一个内存地址值,&x是一个取x内存地址的地址表达式。
  ●数值表达式值的类型
  每个字符就是一个整数,它的值就是该字符的ASCII码,如'b'+3*4的值就是98+12=110,值的类型也为int整型。
  从类型长度(数据表示范围)由小到大的次序排列为short int、int、long int、float、double、long double。而当字符或枚举常量参与数值运算时,认为是int类型的整数。
  不同数值类型的操作数进行运算时,运算结果的类型向表示范围较大的那个操作数的类型看齐。如25*3.0的值75.0,而不是75; 25/3 8,而25/3.0是一个double型的实数8.333333。