运算符与表达式

一、定义

二、运算符与表达式

1.算数

2.关系

3.逻辑

4.位

5.自增自减

6.赋值

7.逗号

8.条件

9.求字节数

10.类型转换


一、定义

运算符:就是表示某种运算功能的符号。按操作功能运算符大致可分为:算术运算符、关系运算符、逻辑运算符、按位运算符以及其他运算符如赋值运算符、条件运算符、逗号运算符等。

 

  • 算术运算符  +  -  *  /  %  ++  --
  • 关系运算符  >  <  =   >=  <=  !=
  • 逻辑运算符  !   &&  | |
  • 位运算符  <<  >>   |  ^  &
  • 赋值运算符  =及其扩展赋值运算符
  • 条件运算符  ?  :
  • 逗号运算符  ,
  • 指针运算符  *  &
  • 求字节数运算符  sizeof
  • 强制类型转换运算符  (类型)
  • 成员运算符  .  ->
  • 下标运算符  [  ]
  • 其他   如函数调用运算符()

表达式:是由操作数和运算符组成的序列,它和算数中四则混合运算类似,其中操作数可以是常量也可是变量。

 

运算符与表达式_第1张图片

 

☞ 优先级:各类运算符在一个表达式中运算的先后顺序。(先乘除后加减)

单目高于双目,双目高于三目,三目高于赋值

双目运算符几个优先级的先后顺序可记忆为算术运算符高于移位运算符,移位运算符高于关系运算符,关系运算符高于位逻辑运算符(不包括单目位逻辑运算符),位逻辑运算符高于逻辑运算符。

 

☞结合性:当一个运算量两侧的运算符优先级相同时运算的结合方向。(按C语言规定的结合方向进行)

除单目运算符、赋值运算符和条件运算符是右结合性,其他都是左结合性。

 

 

二、运算符与表达式

1.运算符与表达式之算数

算数运算符:对计算机中数据进行算数运算的运算符。

算数表达式:使用运算符和括号将运算量连接起来的式子。

 

  • 加法运算符为“+”,使运算符两侧的值相加,两侧的值可以是变量、常量和表达式等。
  • 减法运算符为“-”,使运算符左侧的值减去右侧的值。
  • 乘法运算符为“*”,使运算符两侧的值相乘。
  • 除法运算符为“/”,使运算符两侧的值相除,”/”左侧的值是被除数,右侧的值是除数。(两个实数相除的结果为双精度实数,两个整数相除的结果为整数)
  • 求余运算符为“%”,求出左侧整数除以右侧整数的余数。%运算符要求参加运算的运算对象是整数结果也是整数。

 

☞优先级:(  )  →    * 、 /、  %  →   +  、 -

☞结合性:从左到右

 

 

2.运算符与表达式之关系

程序设计中需要经常对运算对象之间的大小进行比较,如:大小、相等等关系,这样的运算符称为关系运算符,用关系运算符将数值或表达式连接起来的式子就是关系表达式,满足关系表达式运算符关系的结果成立,为真, 结果为1 ;当比较结果不成立,为假,结果为0。

 

常用的关系运算符有:

运算符与表达式_第2张图片

 

3.运算符与表达式之逻辑

逻辑运算符:

运算符与表达式_第3张图片

 

逻辑表达式:用逻辑运算符连接两个表达式构成。参与逻辑运算的操作数叫做逻辑量。逻辑量可以是整型、实型、字符型和指针型等多种类型。

 

逻辑表达式的运算结果:

 

  • a&&b   只有a和b都是真时,表达式结果为真,有一个为假,表达式结果为假。
  • a||b   a或b有一个为真,表达式结果为真,a和b都为假,表达式结果为假。
  • !a    a为真时,表达式结果为假,a为假时,表达式结果为真。

 

逻辑运算中,非零当做真,0作为假。

C语言中,逻辑运算结果用数值1表示真,数值0表示假。

 

4.运算符与表达式之位

位运算是对整型数据进行的运算,而且符号位需要参与运算。位运算主要用于编写系统软件,完成汇编语言能够完成的一些功能。

 

C语言中六种位运算符:

  • & 按位与
  • | 按位或
  • ^ 按位异或
  • ~取反
  • >>右移
  • <<左移   

 

 

5.运算符与表达式之自增自减

++i ,--i   在使用i之前,先使i的值加/减1(先增减,后运算)。

i++ ,  i--   在使用i之后,使i的值加/减1(先运算,后增减)。

++i是先执行i=i+1,在使用i的值;而i++是先使用i的值,再执行i=i+1。

 

 

6.运算符与表达式之赋值

赋值运算符   =

赋值表达式:是由赋值运算符连接左边一个变量和右边一个表达式构成。

格式:  [变量] = [表达式] ;

注意:格式左边一定是一个变量,格式右边的右边可以是任意的表达式。表达式计算结果的数据类型应当和变量的数据类型相同。

☞优先级:    ! >算数 >关系 > && 和|| > 赋值

☞结合性:自右至左

复合赋值运算符:由赋值运算符前在加一个双目运算符构成。

 

  • += 加赋值
  • -= 减赋值
  • *= 乘赋值
  • /= 除赋值
  • %= 求余赋值
  • &= 按位与赋值
  • | = 按位或赋值
  • ^= 按位异或赋值
  • <<= 左移位赋值
  • >>= 右移位赋值
  • <> 当右操作数又是一个赋值表达式时,形成多重赋值表达式。

 

 

7.运算符与表达式之逗号

逗号运算符 ,

作用:将几个表达式隔开并以此计算

一般形式:

[表达式1],[表达式2], …[表达式n]

☞优先级:最低

☞结合性:自左至右

☞整个表达式的值:最后一个表达式的值

执行情况:先求解表达式1,再求解表达式2,最后的结果是表达式2的值。

 

 

8.运算符与表达式之条件   

条件运算符  ? :

条件运算符是C语言中唯一的一个三目运算符,它需要三个操作数。

条件表达式为:表达式1?表达式2:表达式3。

执行情况:

先计算表达式1的值,若为真(非零),则整个表达式的值为表达式2的值,否则,为表达式3的值。

当有多个条件表达式组成的符合条件表达式时,运算顺序从右向左。

如:a>b?a:c>d?c:d相当于a>b?a:(c>d?c:d)

 

 

9.运算符与表达式之求字节数

sizeof( )运算符是一个单目运算符,用于计算一个某种类型的运算量所占用的字节数。

sizeof(类型标识);

sizeof(变量名)

相同类型在不同系统或机型中所占内存的字节数可能不同。

 

 

10.类型转换

☞自动类型转换(赋值转换、运算转换)

在运算时不必用户干扰,系统自动进行的类型转换。

如果两侧的类型不⼀致,但都是数值型或字符型,在赋值时要进⾏类型转换。类型转换有系统⾃动完成,转换的规则是:

(1)浮点型赋值给整型结果将舍弃浮点数小数部分。

(2)整数赋值给浮点数,数值不变,结果以浮点数的方式存在。

(3)整型赋值给字符型只把整型变量低八位赋值给字符型变量。

(4)字符型赋值给整型,数值不会发生变化,但以整型的方式存储内存空间变大。

(5)双精度浮点数赋值给单精度浮点数,有效位会减少,丢失的部分四舍五入。

 

☞强制类型转换

当自动类型转换不能实现目的时,可以用强制类型转换。

(类型说明符)[表达式]

无论是强制类型转换还是自动类型转换都不改变其原变量的数据类型。

 

 

你可能感兴趣的:(c语言)