C语言操作符详解

对于C语言操作符,根据我所掌握的内容可以总结如下:

1.算数操作符

算数操作符就是我们最常见的“加减乘数模”:+    -   *    /     %,需要注意的有两点

1.两个整数相除是整数,所以结果会自动取整,这就给我们的计算带来了误差,误了避免这种误差,我们常常将被除数转化为浮点型数据。例如  1/2  结果就是0,这很明显有错误,为了保证正确性,只需要写成 1.0/2 即可。

2.除数不能为0

整型提升:凡是针对char,short型的数学运算,此时都会隐式转换为 int 

算数转换:

long double
double
float
unsigned long int
long int
unsigned int
int

如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另外一个操作数的类型后执行运算。
警告: 但是算术转换要合理,要不然会有一些潜在的问题。

2.移位操作符

       << 左移操作符        左移相当于乘以2

       >> 右移操作符        右移相当于除以2

左移操作符:左边抛弃,右边补0

右移操作符:1. 逻辑移位 左边用0填充,右边丢弃            2. 算术移位 左边用原该值的符号位填充,右边丢弃。

我们常用的是算数移位。

符号位就是最高位,代表这个十进制数的正负:

     最高位如果是0,就是正数,右移时左边补0

     最高位如果是1,就是负数,右移时左边补1

注意:1.不移动负数位   2.移动0位是允许的但无意义

3.位操作符

& 按位与         两个操作数都为1,结果才是1

|  按位或         两个操作数都为0,结果才是0

^ 按位异或      两个操作数相同,结果是0,两个操作数不相同,结果是1

~ 按位取反      按位取相反数  0变成1,1变成0

应用:

        将一个数a的第n位设置为1,就是   a|(1<<n)

        将一个数a的第m位设置为0,就是   a&(~(1<<m))

4.赋值操作符

复制操作符最常见的就是“=”,赋值操作符可以连续使用,比如  a = x = y+1;//连续赋值

还有其他我们会用到的复合赋值操作符:

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

5.单目操作符

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

需要注意的就是*  间接访问操作,这个会在指针里面广泛用到。

++i,--i 在使用i之前,先使i的值加1(减一)

i++,i--在使用i之后,先使i的值加1(减一)

6.关系操作符

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

这些都比较简单,没啥可说的

7.逻辑操作符

&&   逻辑与       两个条件同时满足
||      逻辑或       两个条件至少满足一个

短路求值:&&左侧表达式为假时,右侧表达式不会进行求值

                     ||左侧表达式为真时, 右侧表达式不会进行求值

8.条件操作符

exp1 ? exp2 : exp3   C语言中唯一 一个三目运算符

if(exp1)

   {exp2;}

else

    {exp3;}

9.逗号表达式

exp1, exp2, exp3, …expN

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

例如:

int a = 1;
int b = 2;
int c = (a>b, a=b+10, a, b=a+1);

分析:a>b,为假,所以c=0,

        再往右执行a=b+10  =>   a=12  =>  c=12,

       再往右执行,c=a  =>    c=12,

       再往右执行,b=a+1   =>  b=12+1,所以c=13。

猜你喜欢

转载自blog.csdn.net/qq_43508801/article/details/84504271
今日推荐