操作符(C语言)

(1)算术操作符:+ - * / %

  • 除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。
  • 对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
  • %操作符的两个操作数必须为整数。返回的是整除之后的余数。

(2)移位操作符:

<<   //左移操作符    
>>   //右移操作符
  • 左移操作符 移位规则:
    左边抛弃、右边补0
  • 首先右移运算分两种:
    逻辑移位 左边用0填充,右边丢弃
    算术移位 左边用原该值的符号位填充,右边丢弃
  • 对于移位运算符,不要移动负数位,这个是标准未定义的。如:num>>-1;

(3)位操作符:

`&    //按位与  
 |   //按位或       
 ^   //按位异或`
  • 他们的操作数必须是整数。

(4)赋值操作符:
复合赋值操作符:

+=
*=
/=
%=
>>=
<<=
&=
|=
^=

这些运算符都可以写成复合的效果。

(5)单目操作符:

! 逻辑反操作
 - 负值
  + 正值 
 & 取地址 
 sizeof 操作数的类型长度(以字节为单位)
 ~ 对一个数的二进制按位取反 
 -- 前置、后置-- 
 ++ 前置、后置++ 
 * 间接访问操作符(解引用操作符) (类型) 强制类型转换

(6)关系操作符:

>
>=
<
<=
!= 用于测试“不相等” 
== 用于测试“相等

(7)逻辑操作符:

 && 逻辑与
 || 逻辑或

(8)条件操作符:

exp1 ? exp2 : exp3

exp1成立执行exp2;否则执行exp3。
(9)逗号表达式:

exp1, exp2, exp3, …expN

逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达
式的结果。
(10)下标引用、函数调用和结构成员:

[]
()
.

(11)操作符的属性:
复杂表达式的求值有三个影响的因素。

  • 操作符的优先级
  • 操作符的结合性
  • 是否控制求值顺序。
    两个相邻的操作符先执行哪个?取决于他们的优先级。如果两者的优先级相同,取决于他们的结合性

优先级从高到低的操作符表:

   () 聚组 
   () 函数调用 
   [ ] 下标引用 
   . 访问结构成员
   -> 访问结构指针成
   ++ 后缀自增
   -- 后缀自减
   ! 逻辑反 
   ~ 按位取反 
   + 单目,表示正值
   - 单目,表示负值 
   ++ 前缀自增 
   -- 前缀自减 
   * 间接访问 
   & 取地址 
   sizeof 取其长度,以字示(类型) 类型转换 
   * 乘法 
   / 除法
    % 整数取余 
    + 加法 
    - 减法 
    << 左移位 
    >> 右移位 
    > 大于 
    >= 大于等于  
    < 小于 
    <= 小于等于 
    == 等于 
    != 不等于 
    & 位与 
    ^ 位异或 
    | 位或 
    && 逻辑与 
    || 逻辑或 
    ?: 条件操作符 
    = 赋值 
    += 以...加 
    -= 以...减 
    *= 以...乘 
    /= 以...除 
    %= 以...取模 
    <<= 以...左移 
    >>= 以...右移 
    &= 以...与 
    ^= 以...异或 
    |= 以...或 
    , 逗号

(12)隐式类型转换:
C的整型算术运算总是至少以缺省整型类型的精度来进行的。
为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。

//实例1 
char a,b,c;
a = b + c;
  • b和c的值被提升为普通整型,然后再执行加法运算。加法运算完成之后,结果将被截断,然后再存储于a中。
  • 整形提升是按照变量的数据类型的符号位来提升的。正数补0,负数补1。无符号数整形提升时高位补零。
发布了25 篇原创文章 · 获赞 4 · 访问量 2550

猜你喜欢

转载自blog.csdn.net/qq_43167575/article/details/98472051