操作符这块,你可得把握住(上)

简介: 操作符这块,你可得把握住(上)

1.操作符分类


算术操作符: + - * / %
复制代码
移位操作符: << >>
复制代码
位操作符: & | ^
复制代码
赋值操作符: =  +=  -=  *=  /=  %=  &=  ^=  & *
复制代码
单目操作符: sizeof ! ++ -- 
复制代码
关系操作符: > >= <= < != ==
复制代码
逻辑操作符: && ||
复制代码
条件操作符:  ?:    唯一的一个三木操作符
复制代码
逗号表达式: .
复制代码
下标引用,函数调用和结构成员: []  ()  .  ->
复制代码


/    -除号操作符


对于除号操作符:

1.两边都是整数:执行整数除法,与保存的类型无关


int main()
{
  int a = 0;
  int b = 0;
  int c = 0;
  printf("输入两个操作数:->\n"); // 5 2
  scanf("%d %d", &a, &b);
  c = a / b;
  printf("结果为: %d\n", c); // 2
  return 0;
}
复制代码
//若接收类型为double类型
  int main()
{
  int a = 0;
  int b = 0;
  double c = 0;
  printf("输入两个操作数:->\n"); // 5 2
  scanf("%d %d", &a, &b);
  c = a / b;
  printf("结果为: %lf\n", c);  // 2.000000  并不是2.500000
  return 0;
}
复制代码


% - 取模操作符


对于取模操作符:%操作符两边元素只能为整形


int a = 10;
int b = 3;
int c = a % b;
复制代码

int a = 10;
double b = 3; 
int c = a % b;//err
复制代码

int a = 10;
int b = 3;
double c = a % b;   //接收类型可以为其他类型
复制代码

A % B : 最终得到的值小于B


所以:

rand():产生随机数的函数-通常配套srand()函数:随机数生成器使用

(具体内容看分支与循环猜数字游戏)


-->srand(unsigned int)time(NULL) //拿时间戳作为参数

生成的随机数范围:0-32767

所以若要得到0-99的数:rand() %100

若要得到1-100的数:rand()%100 +1



<<    >>  左移右移操作符


<<   左移操作符

>> 右移操作符

移动的是二进制位(补码)  --只针对整形




左移操作符    <<


左边丢弃,右边补0


左移相当于数值乘2

int c = 4;
c << 1;
printf("%d\n",c); //4还是8?
//4  原因:并没有接收c << 1的值
//若想结果位8
 c  = c<< 1;
printf("%d\n",c);   //8
复制代码

右移操作符     >>

情形1:逻辑右移:左边用0填充,右边丢弃
情形2:算术右移:左边补符号位,右边丢弃
复制代码


当前VS2019采用的是算术右移


int a = 1;
// 00000000 00000000 00000000 00000001  --原码
//正数:原反补相同
//若采取的是逻辑右移
// 00000000 00000000 00000000 00000000 -补码
//最高位为符号位:0,正数  原反补相同
//对应原码为:00000000 00000000 00000000 00000000 -打印结果为0
a = a >> 1;
printf("%d\n",a); //0
复制代码

//err写法
int a = 15;
int b = a >> -1;    //C语言标准未被定义的写法
复制代码


注意:左移/右移操作数只能为整形,不能为浮点数

float c = 4,5f;
c >> 1; //err
复制代码

补码为全1  ->  %d打印  表示-1


补码求补码 ->原码



关于 & | ^

只能用在整形数据(正数,负数都可以)!


&  按位与

1001
&1111
-----
 1001   
//对应比特位进行按位与运算  有0则为0 两个比特位都为1,结果才为1
复制代码


|  按位或


1001
|1111
-----
 1111  
//对应比特位进行按位与运算  有1则为1 两个比特位都为0,结果才为0
复制代码


^  按位异或


1001
^1111
-----
 0110
//对应比特位进行按位异或运算  对应比特位相同为0 不同为1
复制代码

使特定位翻转,即异或上该特定位为1,其它位为0的二进制序列

如: X: 1100 0011 使倒数第三个二进制位翻转
   使1100 0011异或上0000 0100
 ==> 1100 0011
    ^0000 0100
    ----------
     1100 0111  ==>这样的话就使X的倒数第三位翻转了
复制代码
使特定位翻转:
   对应X要翻转的比特位,该数的对应位为1,其他位为0,次数与X对应位异或即可
   如:X = 10101110  使X的低4字节位翻转,
    X ^ 0000 1111即可
  ==>1010 1110 
    ^0000 1111
  ==>1010 0001  ->x的低4位翻转了
复制代码


2.如何得到二进制序列最后一位比特位是1还是0

首先,整形在内存中以补码形式存储

方法:只需要让该位按位与上1,即可得知最后一位比特位是0还是1

若最后一位比特位为1:结果为1 否则为0


1的二进制序列: 00000000 00000000 00000000 00000001

符号位为0,正数:原反补相同

其他位比特为0,所以和比特位相于的结果为0


int a  =15;
// 00000000 00000000 00000000 00001111   ->a的补码
//&00000000 00000000 00000000 00000001   ->1的补码
--------------------------------------
// 00000000 00000000 00000000 00000001  ->结果为1  
    //即a的最后一位比特位为1
复制代码
int main()
{
    int a = 0;
    int b = 0;
    scanf("%d",&b);
    a = b &1;
    printf("%d补码的最后一位比特位是%d",b,a);
}
复制代码


今天就先到这吧~感谢你能看到这里!希望对你有所帮助!欢迎老铁们点个关注订阅这个专题! 同时欢迎大佬们批评指正

相关文章
|
5天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1466 0
|
5天前
|
人工智能 自然语言处理 安全
阿里云AI数智鉴密:AI 生成内容如何拿到一张"防篡改的身份证"
隐形水印 + C2PA签名:让AI生成内容“持证上岗”。
1127 0
|
14天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
3765 4
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
5天前
|
人工智能 安全 前端开发
刚刚 GPT-6 Astra 发布,全球最强,AGI 时代到来!
OpenAI 正式推出 GPT-6 Astra 模型,带大家看看这次 GPT 有哪些提升,跟 Claude Fable 5.1 有什么差距?AI 编程能力如何?AGI 真的来了么?
629 0
|
2天前
|
SQL 人工智能 前端开发
QoderWake 1.0 正式发布:从桌面里的 Agent,到工作现场的数字员工
QoderWake v1.0正式发布:企业级数字员工团队平台。支持“一句话建岗”,预置10类特训岗位;Waker常驻钉钉/飞书群,@即响应、自动协作、跨任务记忆;具备定时/事件/API多触发方式与统一任务看板;已沉淀27.6万条记忆、12.3万项技能,助力组织实现人机协同增效。
588 0
|
6天前
|
网络协议 Linux iOS开发
【2026实测】Wireshark下载+安装+汉化+使用教程(图文版,巨详细)
Wireshark 是一款免费开源的网络协议分析工具,可实时捕获、解析并可视化数据包,助你诊断网络故障、分析通信协议(如HTTP、DNS、TCP等)。支持Windows/macOS/Linux,含中文界面,新手入门便捷。(239字)