1.8 运算符下

目录

赋值运算符

C语言中特殊的运算符

1.三目运算符

2.逗号运算符

3.sizeof运算符

运算符优先级

强制类型转换


把一个无符号数的某一位快速清零,该位与0

把一个无符号数的某一位快速变1,该位或1

赋值运算符

函数++:先执行后加

++函数:先加后执行

C语言中特殊的运算符

1.三目运算符

<表达式1>?<表达式2>:<表达式3>

等价于:

if (表达式1)

表达式2

else

表达式3

2.逗号运算符

从左到右运算,值由最右的表达式表示

3.sizeof运算符

计算函数占内存空间大小

运算符优先级

运算符的一般优先级:

由高到低:算术运算符 -> 关系运算符 -> 逻辑运算符 ->赋值运算符

算术运算符:一般为 加减乘除、求余、自增、自减
移位运算符:左移(<<)、右移(>>)
关系运算符:一般为 大于、小于、大于等于、小于等于、等于、不等于
逻辑运算符:一般为 与(&&)、或(||)、按位异或(^)、非(!)【!的优先级比算术运算符还高】
条件运算符:?:
赋值运算符:一般为 赋值(=)、加减乘除后赋值(+=、-=、*=、/=)、取模后赋值(%=)【顺序:从右到左】
逗号运算符:优先级最低
注:sizeof 为长度运算符。
————————————————
版权声明:本文为CSDN博主「不吃鱼的猫丿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/laifengyuan1/article/details/86034222

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

--

()

圆括号

(表达式)/函数名(形参表)

--

.

成员选择(对象)

对象.成员名

--

->

成员选择(指针)

对象指针->成员名

--

2

-

负号运算符

-表达式

右到左

单目运算符

~

按位取反运算符

~表达式

++

自增运算符

++变量名/变量名++

--

自减运算符

--变量名/变量名--

*

取值运算符

*指针变量

&

取地址运算符

&变量名

!

逻辑非运算符

!表达式

(类型)

强制类型转换

(数据类型)表达式

--

sizeof

长度运算符

sizeof(表达式)

--

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

%

余数(取模)

整型表达式%整型表达式

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

5

<< 

左移

变量<<表达式

左到右

双目运算符

>> 

右移

变量>>表达式

6

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

小于

表达式<表达式

<=

小于等于

表达式<=表达式

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1?

表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

--

/=

除后赋值

变量/=表达式

--

*=

乘后赋值

变量*=表达式

--

%=

取模后赋值

变量%=表达式

--

+=

加后赋值

变量+=表达式

--

-=

减后赋值

变量-=表达式

--

<<=

左移后赋值

变量<<=表达式

--

>>=

右移后赋值

变量>>=表达式

--

&=

按位与后赋值

变量&=表达式

--

^=

按位异或后赋值

变量^=表达式

--

|=

按位或后赋值

变量|=表达式

--

15

逗号运算符

表达式,表达式,…

左到右

--

先与后或

强制类型转换

  • 自动类型转换:在程序运行的时候,低精度的数据会自动向高精度的数据进行这类型转换,数据的进度不会丢失
  • 强制类型转换:有时候在我们运算的过程中,需要对数据进行短暂的类型转换,去进行运算,让数据更加精确
  • 自动类型转换:
  • 一般为 低精度 向 高精度 转换
  • (可按字节大小顺序记,有低精度到高精度的数据类型)
  • char - short - int - long - float -double .....
  •  
  • 强制类型转换:
  • 常应用于:指针,因为指针的类型不管如何转换,它的精度都是不会丢失的。
  • 当用于 高精度 向 低精度 强制转换时, 数据会丢失!
  • 如:float a = 3.14;     (int) a ->  a = 3 , 数据丢失!   
  •  
  • 判断输出类型的方法:
  • 若为 同精度 运算,则输出仍为同精度(强制转换除外)。如: int/int -> int 
  • 若为 不同精度 计算,则输出为更高的进度(强制转换除外)。如: int/float -> float

————————————————
版权声明:本文为CSDN博主「不吃鱼的猫丿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/laifengyuan1/article/details/86034222

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值