在c语言中,表达式由操作符操作数组成。简单的表达式可以只有一个操作数。运算符就是用来计算的符号。

 

算术运算符与算术表达式

    算术表达式是使用算术运算符将运算对象连接起来、符合C语言语法规则的式子。

    结合性:从左到右

  •  单目运算符:++  、- -
int a = 2;   //a = 2
int b = a++; //b = a = 2  a = a + 1 =3
int c = ++a; //c = a = a + 1 = 4

      如上所示,自减原理同自加

  •  双目运算符:+ 、- 、* 、 /  、%

         +:加法运算或是正值  3 + 2 = 5、+3;

          -:减法运算或是负值  3 - 2 = 1、-2;

          *:乘法运算  3 * 2 = 6;

           /:除法运算  3 / 2 = 1;

         %:取余  3 % 2 = 1;

如何来判断是单目运算符、双目运算符还是三目运算符呢?很简单,如果只有一个操作数则为单目运算符,若有两            个操作数则为双目运算符,若有三个操作数则为三目运算符。

         注意:双目运算符若两边数值类型相同,则计算结果也为该类型;若双目运算符两边数值类型不同,则需要进行转换,转             换规则如下:char -> short -> int -> long -> double -> float

 

关系运算符与关系表达式

   关系运算符用来判断等式两边的大小关系并根据判断结果返回一个逻辑值真或者假。

   关系表达式就是用关系运算符将数值或表达式连接起来的式子,满足关系表达式运算符关系的结果称为“真”,否则为假。

  • 双目运算符:<(小于) 、<=(小于等于) 、>(大于) 、>=(大于等于) 、!= (不等于)、==(等于)

   结合性:从左到右

   优先级: 关系运算符中< 、<= 、> 、>= 优先级相等, != 、== 优先级相等,且前者优先级高于后者。   

 

赋值运算符与赋值表达式

   赋值运算符是将一个数值赋给一个变量或者将一个变量的值赋给另外的变量。

   赋值表达式是用赋值运算符组成的表达式,“ = ”右侧可以是常量、变量、函数、表达式,左侧是变量。

  • 双目运算符:=
  • 复合赋值运算符:+=、-=、*=、/=、%=

    结合性:从右到左

    注意:“ = ” 和“ == ”的区别。

 

逻辑运算符与逻辑表达式

  逻辑运算符根据表达式的真或者假属性返回其真值或者假值。

  逻辑表达式就是用逻辑运算符连接运算对象组成的表达式。

  • 单目运算符:

       形式:!a

       运算结果:对 a 进行取反操作,若 a 成立,则结果为0,即“ 假 ”;若 a 不成立,则结果为1,即“ 真 ”。

       结合性:从右至左

  • 双目运算符:&&、||

       &&

       形式:a && b

       运算结果:若a、b同时成立,则结果为1,即“ 真 ”;若a、b任意一个不成立,则结果为0,即“ 假 ”。

       结合性:从左至右

        || 

        形式:a || b

        运算结果:若a、b同时不成立,则结果为0,即“ 假 ”;若a、b任意一个成立,则结果为1,即“ 真 ”。

        结合性:从左至右

 

逗号运算符与逗号表达式

  逗号运算符:,

  逗号表达式就是用逗号运算符将几个表达式连接起来。

  形式:表达式1,表达式2,…,表达式n

  运算结果:表达式 n 的值。(先后计算表达式 1 至表达式 n 的值) 

  结合性:从左至右

强制类型转换运算符

  强制类型转换可将所需表达式或者数值类型转换为所需类型

  形式:(类型名)(表达式)

int x = 2.2; //执行后,x的结果为2

位运算符

  • 单目运算符:~
  • 双目运算符:& 、| 、^ 、<< 、>>

运算符号

名称

操作规则

~

按位取反

对应二进制位0变为1,1变为0

&

按位与

若对应二进制位均为1,则结果为1,否则为0

|

按位或

若对应二进制位任意一位为1,则结果为1,否则为0

^

按位异或

若对应二进制位相等则为0,不等则为1

<<

左移

将对应二进制位左移若干位,低位补0,高位舍弃

>>

右移

将对应二进制位右移若干位,无符号高位补0,有符号位补符号位低位舍弃

条件运算符

  • 三目运算符

       形式:条件?操作1:操作2

       运算结果:若条件成立即为真,则执行操作1;否则,执行操作2。

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

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

 

指针运算符

  • *、&

    *:指针运算符,求得所指地址空间的值

    &:取地址运算符,求得所取变量的地址

求字节运算符

  • sizeof()、sizelen()

   区别:

  1. sizeof() 是运算符,sizelen() 是函数;
  2. sizeof() 在编译时即可得到计算的结果,sizelen() 在运行时才可得出;
  3. sizeof() 计算变量、常量或者数据类型占内存的大小;sizelen() 计算字符串长度,不包括中止空字符。

其他 

  • 下标:[ ]
  • 分量:·、->
  • 函数