C语言操作符总结

    xiaoxiao2022-07-07  190

    算术操作符:+  -  * / %

    1.除啦%操作符之外,其他的几个操作符可以作用与整数和浮点数。

    2.对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有一个操作数为浮点数就执行浮点数除法。

    3.%操作符的两个操作数必须徐都为整数。返回的是整除之后的余数。

    移位操作符:左移<< 右移>>

    左移操作符:移位规则:左边抛弃,右边补0。

    右移操作符:移位规则:首先右移运算分两种:

                                        1.逻辑移位 左边用0填充,右边丢弃 。

                                        2.算术移位 左边用原该值的符号位填充,右边丢弃。

    警告 : 对于移位运算符,不要移动负数位,这个是标准未定义的。

    位操作符:按位与 & 按位或 |  按位异或 ^

    注:它们是在二进制下实现的,它们的操作数必须是整数。 

    按位与:只要遇见0结果就为0,剩下的一种情况1 & 1为1。

    按位或:只要遇见1结果就为1,剩下的一种情况0 | 0为0。

    按位异或:相同为0,相异为1。

    赋值操作符:=

    赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。

    复合赋值符:+=  -=  *=  /=  %=  >>=  <<=  &=  |=  ^=

    这些运算符都可以写成复合的效果。 比如:x=x+10和x+=10是一样的效果。

    单目操作符: 逻辑反操作 !负值  - 正值 + 取地址 & 操作数的类型长度(以字节为单位) sizeof 对一个数的二进制按位取反~

    前置、后置 -- 前置、后置++ 间接访问操作符(解引用操作符) *     强制类型转换(类型)

    关系操作符:>   >=  <   <=  !=   ==

    警告: 在编程的过程中== 和=不小心写错,导致的错误, 所以我们一般用这种方法例如:( 10 == a )这样就可以解决。

    逻辑操作符:逻辑与&& 逻辑或 ||

    这里有个需要注意的,如先定义a=0,b=1,c=2,i =(a++&&++b&&c++)执行完之后i=0,a=1,b=1,c=2。意思就是说在进行逻辑与的时候当a=0时,也就是为假时就不会在执行后面的++b&c++,或者当b=0时就不会执行c++。

    同样的,逻辑或当前面为真的时候就不会再执行后面。

    条件操作符:exp1?exp2:exp3

    意思是如果第一个表达式为真,就执行表达式2,第一个为假,就执行表达式3。

    逗号表达式:exp1,exp2,exp3.······expN

    逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达 式的结果。

    下标引用、函数调用和结构成员

    1.[ ]下标引用操作符。操作数:一个数组名+一个索引值

    2.()函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

    3.访问一个结构的成员:. (结构体.成员),-> (结构体指针->成员名) .

     表达式求值

    表达式求值的顺序一部分是由操作符的优先级和结合性决定。

    同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型。

    隐式类型转换

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

    算术转换

    如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作就 无法进行。

    操作符的属性

    复杂表达式的求值有三个影响的因素.

    1.操作符的优先级 

    2.操作符的结合性 

    3.是否控制求值顺序。

    两个相邻的操作符先执行哪个?取决于他们的优先级。如果两者的优先级相同,取决于他们的结合性。  

     

    最新回复(0)