C的学习之路——三

运算符

优先级

运算符

含义

运算类别

结合性

1(高)

()

圆括号,函数参数表

 

左结合性

[]

数据元素下标

->

指向结构成员

.

结构体成员

2

!

逻辑非

单目运算

右结合性

~

按位取反

++

自增1

--

自减1

-

求负

(类型)

强制类型转换

*

指针运算符

&

求地址运算符

sizeof

长度运算符

3

*

双目运算

 

左结合性

 

/

%

取余

4

+

-

5

<< 

左移

移位运算

>> 

右移

6

小于

<=

小于等于

大于

>=

大于等于

关系运算

7

 

 

==

等于

不等于

8

&

按位与

位运算

9

^

按位异或

10

|

按位或

11

&&

逻辑与

逻辑运算

12

||

逻辑或

13

?:

条件运算

三目运算

右结合性

14

=

赋值

双目运算

 

+=、-=、*=、/=、%=、>>=、<<=、&=、^=、!=

复合赋值

 

 

15(低)

,

逗号运算(顺序求值)

顺序运算

自左到右

基本运算符

+(加法)、-(减法/取负)、*(乘法)、/(除法)、%(取余)

       前四种适合所有的数据类型,%只用于整型、字符型运算量

       与代数运算不同点

              除法运算(/):两个整数相除的结果是整数,如果商含有小数部分被舍弃,如果两个运算对象中有一个是实数,则商是实数。

              取余运算(%):计算两个整数相除的余数,要求运算符两侧的操作数均为整型

自增,自减   运算对象必须是变量,不能是常量或表达式,作用是使变量的值加/减1

       语法

       前置运算   ++(--)变量  先增(减),后运算

       后置运算   变量 ++(--) 先运算,后加(减)

算数表达式  用算术运算符和括号将运算对象(常量、变量、函数等)连接起来,并且符合C语法规则的语句,单个变量、常量或函数都可以看作是表达式

       书写规则

              算术表达式的所有字符都写在同一条线上,没有上/下标之分

              严格遵守C语言规则,运算符不能随意省略或替换

              算数表达式应能正确的表达数学公式

       求值规则

              按运算的优先级高低次序执行

              如果一个运算对象两侧的运算符的优先级相同,则按其结合性进行运算

关系运算符

       关系运算就是比较运算,能反映两个表达式之间的大小关系,关系运算的结果(非“真”即“假”)是一个逻辑值

       注:C语言中,“等于”关系运算符是“==”,而不是“=”(赋值运算符)

       优先级规则

              <、<=、>、>=的优先级高于==、!=

              关系运算符的优先级高于赋值运算符,但是低于算术运算符

              优先级由高到低:算术运算符>(<、<=、>、>=)>(==、!=) >赋值运算符

关系表达式

       用关系运算符和括号将两个表达式(算术表达式、逻辑表达式、赋值表达式或字符表达式等)连接起来,进行关系运算的式子

       使用说明

              组成运算符的两个字符之间不可加空格

              注意关系运算符“==”与赋值运算符“=”之间的区别

逻辑运算符

       优先级 !>&&>||

逻辑表达式

       用逻辑运算符将一个或多个表达式连接起来,进行逻辑运算的式子,在C中,用逻辑表达式表示多个条件的组合

       说明

              逻辑运算符的操作对象,不仅是0还可以是非0的其他整数,也可以是其他类型的数据

              &&、||运算符具有短路急速那特性。即若“&&”的第一个操作数为假时,第二个操作数则不在进行求值,同理,若“||”的第一个操作数为真时,第二个操作数也不再进行求值。所以,在逻辑表达式中的计算并不是所有的运算对象都被求值

赋值运算符

       复合赋值运算 格式 变量 双目运算符 = 表达式(等价于 变量 =变量 双目运算符(表达式))

       赋值表达式

条件运算符与条件表达式(?:  三目运算)

       语法 表达式1?表达式2:表达式3(当表达式1为真时,取表达式2的值,否则取表达式3的值,通常表达式1为关系表达式或逻辑表达式)

       使用说明

              条件运算符的优先级低于关系运算符和算术运算符,但高于赋值运算符

              条件运算符“?”和“:”是一对运算符,不能分开单独使用

              条件运算符的结合方向是自右向左

位运算

       位逻辑运算

              操作数必须是整型或字符型

      

操作符

名称

运算规则

主要用途

&

按位与

同1为1

将一个数的某(些)位置0,其余位保持不变

|

按位或

同0为0

将一个数的某(些)位置1,其余位保持不变

^

按位异或

相同为0,相异为1

将一个数的某(些)位翻转,其余位保持不变

~

按位取反

翻转,即0变1,1变0

间接构造一个数。以增强程序的可移植性

              运算时,首先将操作数转换成二进制数(补码),然后再按位进行运算

              按位取反运算符优先级别与其他单目运算符相同,运算自右向左运算;双目&运算符优先级高于|运算符,|运算符高于^运算符

              位双目运算符优先级低于关系运算符,高于逻辑运算符,运算自左到右进行

       位移运算

操作符

名称

运算规则

说明

<< 

左移

a<<b,a左移b位

使操作数各位左移,低位补0,高位移除舍去

>> 

右移

a>>b,a右移b位

使操作数各位右移,低位移除舍去,对于高位

对无符号数和有符号数中的正数,补0

有符号数中的负数取决于所使用的系统;补0的称为“逻辑右移”,补1的称为“算数右移”

       位运算赋值运算符

操作符

名称

运算规则

说明

&=

位与赋值

a&=b   等价于 a=a&b

操作数均为整数

|=

位或赋值

a|=b    等价于 a=a|b

^=

按位异或赋值

a^=b    等价于 a=a^b

<<=

位左移赋值

a<<=b  等价于 a=a<<b

>>=

位右移赋值

a>>=b  等价于 a=a>>b

  



下节链接https://blog.csdn.net/chaolingw/article/details/79830141


猜你喜欢

转载自blog.csdn.net/chaolingw/article/details/79826696