C语言之各种运算符

来源:互联网 发布:ping域名不通 ip可以 编辑:程序博客网 时间:2024/05/18 02:44
C语言之各种运算符


优先级运算符分类结合顺序运算符由

分隔符左结合.    []     ( )     ;      ,一元运算符右结合!  ++     --     -   ~

算术运算符

移位运算符

左结合*     /      %    +     -      <<   >>   >>>关系运算符左结合<     >     <=   >=   instanceof(Java 特有)   = =  !=逻辑运算符左结合! &&  ||  ~  &  |  ^ 三目运算符右结合布尔表达式?表达式1:表达式2赋值运算符右结合=  *=     /=  %=   +=   -=    <<= >>= >>>=  &=  *=  |=

一、一元运算符

    因操作数是一个,故称为一元运算符。

运算符含义例子-改变数值的符号,取反-x(-1*x)~逐位取反,属于位运算符~x++自加1x++--自减1x--


二、算术运算符

    所谓算术运算符,就是数学中的加、减、乘、除等运算。因算术运算符是运算两个操作符,故又称为二元运算符。

运算符含义例子+加法运算x+y-减法运算x-y*乘法运算x*y/除法运算x/y%取模运算(求余运算)x%y

三、移位运算符

   移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。

运算符含义例子<<左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0)x<<3>>"有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1.x>>3>>>"无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0.x>>>3

四、关系运算符

Java具有完备的关系运算符,这些关系运算符同数学中的关系运算符是一致的。具体说明如下:

运算符含义例子<小于x<y>大于x>y<=小于等于x<=y>=大于等于x>=y==等于x==y!=不等于x!=y

五、逻辑运算符

逻辑非关系值表A!Atruefalse

false

true

六、三目运算符

 三目运算符是一个特殊的运算符,它的语法形式如下:

布尔表达式?表达式1:表达式2

七、赋值运算符

赋值运算符是程序中最常用的运算符了,示例如下:

运算符例子含义+=x+=yx=x+y-=x-=yx=x-y*=x*=yx=x*y/=x/=yx=x/y%=x%=yx=x%y>>=x>>=yx=x>>y>>>=a>>>=yx=x>>>y<<=a<<=yx=x<<y&=x&=yx=x&y|=x|=yx=x|y^=x^=yx=x^y



C语言之前述运算符

() 圆括号
[] 下标
-> 指针型结构成员
.结构成员

==========================================================================
C语言之三目运算符


三目运算符,计算机c语言的重要组成部分。条件运算符是唯一有3个操作数的运算符,所以有时又称为三元运算符。


1.对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。

2.一个条件表达式从不会既计算x,又计算y。
3.条件运算符是右结合的,也就是说,从右向左分组计算。例如,a?b:c?d:e将按a?b:(c?d:e)执行。

4.<表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果。

5.可以理解为条件 ? 结果1 : 结果2 里面的?号是格式要求。也可以理解为是不是条件成立,条件成立为结果1否则为结果2。

========================================================================
位运算法异或^


异或的符号是⊕。按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1, 否则该位为0.

xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a。xor运算可以用于简单的加密,比如我想对我MM说1314520,但怕别人知道,于是双方约定拿我的生日19880516作为密钥。1314520 xor 19880516 = 20665500,我就把20665500告诉MM。MM再次计算20665500 xor 19880516的值,得到1314520,于是她就明白了我的企图。

相同位不同则为1,相同则为0。

00101

11100


======================================================

取变量地址符&:

在一个变量前面使用&则取出该变量地址

======================================================

赋值运算符=:

将右边的数据赋值给左边的变量

======================================================

指针取结构体数据符:->:

通过指针取出结构体中各项数据

======================================================

0 0