当前位置: 首页 > news >正文

位操作符和单目操作符

一、位操作符

1.1 &(按位与操作符)

按位操作符表示两个整数对应的二进制位全部为1才为1,有一个为0就为0;
例如:

5&15 5转换为二进制 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 15的二进制 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 5&15的二进制 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 所以5&15 = 5

其实我们也可以把他类似的看作逻辑&&操作符,如果两个条件都成立则返回1,有1个或1个以上都不成立,而当条件为1是就是真,当条件为假时就为0

1.2 |(按位或操作符)

按位或操作符表示只要对应的二进制位有1,那么 | 后的结果就是1
例如:

5: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 15: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 5 | 15:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 所以 5 | 15 = 15

同样的,我们也可以把他类似的看作||,只要其中一个条件成立,就返回1

1.3 ^ (按位异或操作符)

按位异或操作符表示不同为1,相异为0
例如:

5: C 15: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 5^15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 所以,5^15 = 10

1.4 ~ (按位取反操作符)

按位取反操作符表示把一个数的二进制按位取反,也就是0变成1,1变成0
例如:

5: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 ~a: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 按位取反后,符号位变成了1,我们都知道负数在存储的时候是补码,所以还需要把补码转换为原码 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 所以~a = -6

二、单目操作符

单目操作符的特点是只有一个操作数

2.1 !(非操作符)

非操作符一般用于布尔表达式当中,将布尔表达式的值取反,即假变成真,真变成假
就比如:a>b已经成立,返回真(非0),如果加上!(a>b),那么这个表达式返回的值就会假(0)

2.2 ++、–

++是自增操作符,用于将整数本身的值增加1
例如:

int a = 5; a++;a++后,a就变成了6

那么,a++和++a有什么区别呢?
直接看两个例子:

inta=5;intb=0;b=a++;//先把a的值赋给b,然后a的值再自增1b=++a//a的值先自增,然后再把a的值赋给b

知道了++以后,–其实也是类似的

2.3 +、-

这里的+和-表示的是一个值的正负号,正号可以省略,负号不能省略

2.4 sizeof

sizeof用来求变量和数据类型的大小

#include<stdio.h>intmain(){inta=0;printf("%zu\n",sizeofa);//当变量最为参数时,括号可以省略printf("%zu\n",sizeof(int));printf("%zu\n",sizeof(char));printf("%zu\n",sizeof(short));printf("%zu\n",sizeof(longlong));printf("%zu\n",sizeof(float));printf("%zu\n",sizeof(double));printf("%zu\n",sizeof(longdouble));}

运行结果:

需要注意的是,当sizeof求一个字符串的大小时,由于字符串后面会自己补一个"\0",所以得到的长度会多一个字符的长度

#include<stdio.h>intmain(){charch[]="abcdef";printf("%zu",sizeof(ch));}

运行结果:

sizeof也可以求数组的元素个数

#include<stdio.h>intmain(){intarr[]={1,2,3,4,5,6,7,8,9,0};intsz=sizeof(arr)/sizeof(arr[0]);//数组总大小/数组每个元素的大小就=元素个数printf("%d",sz);}

运行结果:

2.5 类型

类型也是一个单目操作符,就比如int a = 0;int 就是指定a的类型,a就是类型的操作数

http://www.jsqmd.com/news/119295/

相关文章:

  • 【限时干货】Open-AutoGLM辅助工具使用手册(仅剩200个免费名额)
  • Open-AutoGLM如何破解社保数据获取难题:技术架构与接口调用深度剖析
  • 还在错过保养周期?Open-AutoGLM实时监控让你永不超期
  • Open-AutoGLM性能调优全攻略:3大瓶颈突破与5倍吞吐量提升秘诀
  • 详细介绍:MongoDB小课堂: 高级查询操作符与游标管理综合指南之深度整合逻辑操作符、字段处理、数组查询与游标控制的最佳实践
  • 【AI驱动的洗车革命】:Open-AutoGLM如何重构传统洗车服务预约体验?
  • Open-AutoGLM预约成功率提升300%:资深用户都在用的自动化工具解析
  • 好写作AI:你的论文为什么越改越差?当心陷入“AI修改陷阱”
  • 你还在等客服回复?,掌握这3种自助预约方式秒杀90%用户
  • 公积金提取太慢?Open-AutoGLM智能引擎提速9倍,你试过了吗?
  • 【企业HR必备工具】:基于Open-AutoGLM的全自动社保查询平台搭建全解析
  • 紧急通知:全国首批Open-AutoGLM试点单位名单公布,你的城市在列吗?
  • 26、iframe内联框架页面交互
  • 你还在用Excel排号?Open-AutoGLM让校园服务预约效率提升300%!
  • 揭秘Open-AutoGLM自动社保查询系统:如何3分钟完成百人参保数据采集
  • 25、拿到问题之后,反馈情况
  • 多线程(0-0)
  • 为什么90%的预约系统都失败了?:Open-AutoGLM三大设计原则全公开
  • 从0到1构建智能洗车预约系统,Open-AutoGLM实战全流程详解
  • 【每日算法】LeetCode238. 除自身以外数组的乘积
  • 为什么90%的洗车平台都失败了?Open-AutoGLM架构设计中的6个关键决策
  • typescript笔记--实用的内置类型
  • IO流(0-0)
  • 上海拖车企业服务质量排行榜,拖车公司精选优质厂家 - 品牌推荐师
  • Leetcode 82 每个字符最多出现两次的最长子字符串 | 删掉一个元素以后全为 1 的最长子数组
  • 【内部流出】Open-AutoGLM工程师亲授:高优先级工单生成秘诀
  • 你还在手动找加油站?Open-AutoGLM自动化查询方案全公开
  • Open-AutoGLM维修预约避坑指南:5个关键步骤确保一次成功
  • VirtualBox+centos7.9+mysql8.0.42,网络设置桥接模式,复制虚拟机
  • 手把手教你部署Open-AutoGLM自动下单引擎:7天实现服务响应提速8倍