新手必看:操作符详解(上)

这边我们对简单的操作符不过多讲解,今天只介绍一部分在C语言分支和循环中比较少见的,还有一些后续会介绍。

1.操作符的分类

   • 算术操作符: + 、- 、* 、/ 、%

   • 移位操作符:  << 、>> 

   • 位操作符:  &  |  ^ 

   • 赋值操作符:= 、+= 、 -= 、 *= 、 /= 、%= 、<<=、>>= 、&= 、|= 、^= 

   • 单⽬操作符: !、++、--、&、*、+、-、~ 、sizeof、(类型)

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

   • 逻辑操作符: && 、||

   • 条件操作符: ? :

   • 逗号表达式: ,

   • 下标引⽤: []

   • 函数调⽤: ()

   • 结构成员访问: . 、->

2.原码、反码、补码

   整数的二进制标识方法有三种,即原码、反码和补码。(下面介绍许多操作符都是基于二进制变     现形式上进行的)

   有符号整数的三种表⽰⽅法均有符号位数值位两部分,2进制序列中,最⾼位的1位是被当做       符号 位,剩余的都是数值位。(比如:100000000000000000000000000000011   为-3)

   符号位用0表示 “正” ,用1表示 “负” 。

   正数的原码、反码、补码都想同,负数的三种表现方式都不同。

   原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码。

   反码:将原码除了符号位其余的依次按位取反。

   补码:将反码加一。

   补码到反码的转换也是同样的操作:取反,加一    负数的话符号位不变,数值位按位取反)  

   对于整形来说:在内存中存放的是补码。

3.移位操作符

   <<  左移操作符

   >>  右移操作符

   注:移位操作符的操作数只能是整数

 3.1 左移操作符

   移位规则:左边抛弃,右边补0

   左移一位有乘二的效果

 3.2 右移操作符

   移位规则:右移分两种运算(根据编译器不同)

     1.逻辑右移:左边用0填充,右边丢弃(比较粗暴)

     2.算术右移:左边由该值的符号位填充,右边丢弃(更加合理)

     算术右移一位有除二的效果

警告:对于移位操作符,不要移动负数位,这是未定义的。

4.位操作符

  1.按位与:&

  2.按位或: |

  3.按位异或:^

  4.按位取反:~

5.赋值操作符

 • 赋值操作符:= 、+= 、 -= 、 *= 、 /= 、%= 、<<=、>>= 、&= 、|= 、^= 

  赋值操作符都比较类似,写法和使用方法基本一样

  += 操作符就是 n = n + 2,其余赋值操作符以此类推

6.单目操作符

  单目操作符只介绍一个 

  sizeof:用来计算变量所占的内存,单位是字节,一个整形占四个字节。

7.逻辑操作符

  &&:并且的意思,左右两个表达式,一方为假则为假,两方都为真则为真。(表达式 && 表达               式)

  ||:或者的意思,左右两个表达式,一方为真2则为真。(表达式 || 表达式)

8.条件操作符

C语言中的条件运算符是一种三目运算符,其语法格式为:表达式1 ? 表达式2 : 表达式3。如果表达式1的值为真,则整个条件表达式的值为表达式2的值,否则为表达式3的值icon-default.png?t=N7T8https://c.biancheng.net/view/1809.html

9.逗号表达式

  用法:从左到右依次执行,最后一个表达式的结果为整个表达式结果。(不一定每个表达式都会             影响整个表达式最终结果)

10.下标引用操作符

11.函数调用操作符

12.结构体成员引用操作符

  有时候我们只能间接得到一个结构体指针

  使用方式:结构体指针加成员名

12. 操作符的属性:优先级、结合性

C语言的操作符有2个重要的属性:优先级、结合性,这两个属性决定了表达式求值的计算顺序。

12.1 优先级

优先级指的是,如果⼀个表达式包含多个运算符,哪个运算符应该优先执行。各种运算符的优先级是 不⼀样的。

    1 3 + 4 * 5;

上面示例中,表达式 3 + 4 * 5 里面既有加法运算符( + ),又有乘法运算符( * )。由于乘法的优先级高于加法,所以会先计算 4 * 5 ,而不是先计算 3 + 4 。

12.2 结合性

如果两个运算符优先级相同,优先级没办法确定先计算哪个了,这时候就看结合性了,则根据运算符是左结合,还是右结合,决定执行顺序。大部分运算符是左结合(从左到右执行),少数运算符是右结合(从右到左执行),比如赋值运算符( = )。

    1 5 * 6 / 2;

上面示例中, * 和 / 的优先级相同,它们都是左结合运算符,所以从左到右执行,先计算 5 * 6 , 再计算 / 2 。 运算符的优先级顺序很多,下面是部分运算符的优先级顺序(按照优先级从高到低排列),建议⼤概 记住这些操作符的优先级就行,其他操作符在使用的时候上网上搜索就可以了。

• 圆括号( () )

• 自增运算符( ++ ),自减运算符( -- )

• 单目运算符( + 和 - )

• 乘法( * ),除法( / )

• 加法( + ),减法( - )

• 关系运算符( < 、 > 等)

• 赋值运算符( = )

由于圆括号的优先级最高,可以使用它改变其他运算符的优先级

以上就是操作符的部分内容,制作不易请三连,谢谢支持!!

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值