【2.6】操作符

目录

1.算术操作符

2.移位操作符

3.位操作符

4.赋值操作符

5.单目操作符

6.关系操作符

7.逻辑操作符

8.条件操作符(三目操作符)

9.逗号表达式

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


1.算术操作符

  • / 取商,不会得出小数
  • % 两端不能有浮点数,char也行,因为内存中存的是ASCII码
  • / 想要得到小数,两端最起码有一个浮点数

 

 

2.移位操作符

  •  移位操作符:移动的是二进制位、移动补码、作用于整数
  • 对于移位操作符,不要移动负数位,这个是C语言标准未定义的

右移操作符:

  • 算术右移:右边丢弃,左边补符号位
  • 逻辑右移:右边丢弃,左边补0

左移操作符:

  • 左边丢弃,右边补0
  • 整数的二进制表示:原码、反码、补码
  • 内存中存储的是补码
  • 正数的原码、反码、补码相同
  • 原码符号位不变,其余位取反变成反码,反码+1变成补码
  • 从补码求原码,(看最高位)正数补码就是原码。负数,补码再取一次补码就成原码

3.位操作符

  •  操作的是二进制位、原码
  • 异或:相同为0,相异为1

编程题:不使用第三方变量,交换两个int的值

 

编程题:统计num补码中有多少个1

  • 这种算法不能实现负数的补码
  • 但是这种算法可实现十进制转二进制

算法修改:

 

 

4.赋值操作符

  •  赋值操作符:=
  •  赋值操作符:包括复合赋值符 += 之类的

5.单目操作符

  •  单目操作符:只有一个操作数

  • int [10]:是数组的类型 
  • 当是变量的时候sizeof a 括号可以省略

 

  • 结果是2 0
  • 先是把a+5的整型放到short短整型里面会截断,按照short的类型来
  • sizeof 里面的表达式是不参与运算的,所以s还是0

 

 

6.关系操作符

7.逻辑操作符

 练习题:

  •  第一个答案:1 2 3 4  // a是0,先使用在++,与运算短路,后面不在运算,所以bcd还是原来的值。因为a++为1了,所以结果1234
  • 第二个答案:1 3 3 4 // a是0,先使用在++,或运算没有出结果继续运算,b先++是3为真,或运算短路,后面不在计算,所以结果是1334

8.条件操作符(三目操作符)

  •  exp1条件判别式为真:结果为exp2表达式的结果
  •  exp1条件判别式为假:结果为exp3表达式的结果

9.逗号表达式

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风吹等浪起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值