【C语言】操作符详解
每天一篇博客,卷死各位。
文章目录
- 前言
- 1. 算术操作符
- 2. 移位
- 进制位的表示
- 移位操作符
- 1. 》--左移操作符
- 2. 《--右移操作符
- 3.位操作符
- 4.赋值操作符
- 5.单目操作符
- 6.关系操作符
- 7. 逻辑操作符
- 8.条件操作符
- 9.逗号操作符
- 总结
前言
在c语言学习中操作符尤为重要,而今天我们则是对操作符的详解以及介绍。我们会详细讲解移位操作符 位操作符的使用和特点。
1. 算术操作符
算术操作符中有 1.+ 2. - 3. *4. / 5. %
算术操作符中最重要的也是%和/
int main()
{printf("%lf\n", 10 / 3.0);//5printf("%d\n", 10 % 2);//0int a = -5;return 0;
}
- / 除法 - 得到的是商
- 除法操作符的两个操作数都是整数的话,执行的是整数除法
- 除法操作符的两个操作数只要有一个浮点数,执行的是小数除法
- % 取模(取余)得到的是余数
- 取模操作符的操作数必须是整数
这也是算术操作符,也是最基本的操作符之一。
2. 移位
进制位的表示
-
进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。
-
十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
-
二进制数有两个特点:它由两个基本数字0,1组成,二进制数运算规律是逢二进一。
-
四进制是以4为底数的进位制,以 0、1、2 和 3 四个数字表示任何实数。
-
七进制是以7为底数的记数系统。使用数字0-6。七进制小数通常都是循环小数,除非分母是七的倍数。有些小数可以用有限个数字来表示
-
八进制的基R=8=2^3,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。
-
十进制,它的特点有两个:有0,1,2….9十个基本数字组成,十进制数运算是按“逢十进一”的规则进行的.
-
十二进制,长度单位一英尺等于12英寸,一先令等于12便士,就连足球比赛罚点球的英制长度也是12码。
-
十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D,E,F组成(它们分别表示十进制数10~15),十六进制数运算规律是逢十六进一,即基R=16=2^4,通常在表示时用尾部标志H或下标16以示区别。
-
六十进制:古代人由于生产劳动的需要,要研究天文和历法,就牵涉到时间和角度了。因为历法需要的精确度较高,时间的单位小时,角度的单位度都嫌太大。必须进一步研究其小数。它们的小数都具有这样的性质︰使1/2,1/3,1/4,1/5,1/6等都能成为他的整数倍。以1/60作为单位,就正好具有这个性质。
移位操作符
1. 》–左移操作符
左移运算符是一个计算机用语。用来将一个数的各二进制位全部左移若干位。因为位运算比×用算快,所以可对一下代码进行优化,还可利用左移运算符计算a的第b个二进制位是什么。
int main()
{int a = 3;//00000000000000000000000000000011int b = a << 1;printf("%d\n", b);printf("%d\n", a);return 0;
}
而正数的原码反码补码都相同,而b=6(原码:0000000000000000000000000000110)相当于00011进一位。
同理,负数同样进一位。
int main()
{int a = -3;//10000000000000000000000000000011//11111111111111111111111111111100//11111111111111111111111111111101 - 补码//int b = a << 1;//11111111111111111111111111111010//11111111111111111111111111111001//10000000000000000000000000000110//11111111111111111111111111111010//10000000000000000000000000000101//10000000000000000000000000000110printf("%d\n", b);//-6printf("%d\n", a);//-3return 0;
}
这就是左移的全部内容。
2. 《–右移操作符
(重要的点:上面移位都只能移动整数,而浮点数不可取)
算术右移:算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1;否则,就补0。
所以算术右移也可以进行有符号位的除法,右移,n位就等于除2的n次方。
逻辑右移:逻辑右移,左边统一添0。
3.位操作符
位操作符就相对很简单M(注意的是所有的位的都是二进制)
- &
数学逻辑符号
&是一个数学逻辑符号,如:在歌曲中,张三&李四,表示此歌曲由张三与李四共同演唱。在数学逻辑中此符号也充分运用到,意思是与、和。&:在C语言中有两种意思,一种是取地址符,是单目运算符;另一种是位运算符,表示“按位与”,是双目运算符。a&b表示啊a和b按位进行与运算。&后面是个变量。每个变量对应一块存储空间。每个存储空间有一个编号,也就是地址,&变量名表示取出这个编,变量名表示取出这个编号所对应的存储空间里的值。
int c = a & b;//按位与//00000000000000000000000000000011 - 3的补码//10000000000000000000000000000101 //11111111111111111111111111111010//11111111111111111111111111111011 - -5的补码//00000000000000000000000000000011 - 3的补码//00000000000000000000000000000011
- I
“|”是位运算符,表示“按位或”。按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
用代码展示:
int c = a | b;//按位或/*11111111111111111111111111111011 - -5的补码00000000000000000000000000000011 - 3的补码11111111111111111111111111111011*/
- ^
c语言中^是异或运算符。先将两个整数化成二进制位数。在每个对应的位数中,只有两者的该位上一个是1或者0,而另一个的改为上必须是相反的,那么做该运算该位的结果就是1,否则结果就是0。
代码如下:
int a = 3;int b = -5;int c = a ^ b;//按位异或 - 对应的二进制位,相同为0,相异为1//11111111111111111111111111111011 - -5的补码//00000000000000000000000000000011 - 3的补码//11111111111111111111111111111000//11111111111111111111111111110111//10000000000000000000000000001000
用一个代码举例
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a^b;
b = a^b;
a = a^b;
printf("a = %d b = %d\n", a, b);
return 0;
}
参考代码:
//方法1
#include <stdio.h>
int main()
{
int num = 10;
4.赋值操作符
赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。
这也是最简单的操作符了。
赋值操作符可以连续使用,比如:
int a = 10;
int x = 0;
int y = 20;
a = x = y+1;//连续赋值
这样的代码感觉怎么样?
那同样的语义,你看看:
x = y+1;
a = x;
这样的写法是不是更加清晰爽朗而且易于调试。
+=:连加。
-=连减等同于i–
*= 连乘
/=连除
%=连余数
<<= 左移
5.单目操作符
#include <stdio.h>
int main()
{
int a = -10;
int *p = NULL;
printf("%d\n", !2);
printf("%d\n", !0);
a = -a;
p = &a;
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof a);//这样写行不行?
printf("%d\n", sizeof int);//这样写行不行?
return 0;
}
6.关系操作符
这些关系运算符比较简单,没什么可讲的,但是我们要注意一些运算符使用时候的陷阱。
警告:
在编程的过程中== 和=不小心写错,导致的错误。
7. 逻辑操作符
&& 逻辑与
|| 逻辑或
这两个操作符是用于表示逻辑上的真假。到底是什么东西呢?
区分逻辑与和按位与
区分逻辑或和按位或
1&2----->0
1&&2---->1
1|2----->3
1||2---->1
逻辑与和或的特点
360笔试题
#include <stdio.h>
int main()
{
int i = 0,a=0,b=2,c =3,d=4;
i = a++ && ++b && d++;
//i = a++||++b||d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
//程序输出的结果是什么?
8.条件操作符
exp1 ? exp2 : exp3
条件操作符(单目操作符)
1、固定格式:eg:((a>b)?(x):(y))
2、意思就是如果满足条件a>b,那么就返回x的值,否则就返回y的值
求两个数的较大值,条件操作符就可以派上用场了。
代码举例
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main()
{int career = 6, identify = 9;int issue = ((career > identify) ? (250) : (666));printf("%d\n", issue);return 0;
}
9.逗号操作符
exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
for (let i = 0, j = 9; i <= 9; i++, j--) {console.log(`a[${i}][${j}] = ${a[i][j]}`);
}
当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号运算符。这个运算符最常用的一种情况是:在 for 循环中提供多个参数。
逗号运算符与数组、对象和函数参数中的逗号含义完全不同。
总结
最后一个操作符还没学好,我会单独写一篇,谢谢大家关注。
相关文章:
【C语言】操作符详解
每天一篇博客,卷死各位。 文章目录前言1. 算术操作符2. 移位进制位的表示移位操作符1. 》--左移操作符2. 《--右移操作符3.位操作符4.赋值操作符5.单目操作符6.关系操作符7. 逻辑操作符8.条件操作符9.逗号操作符总结前言 在c语言学习中操作符尤为重要,而…...
微信小程序 学生选课系统--nodejs+vue
系统分为学生和管理员,教师三个角色 学生小程序端的主要功能有: 1.用户注册和登陆系统 2.查看选课介绍信息 3.查看查看课程分类 4.查看课程详情,在线选课,提交选课信息 5.在线搜索课程信息 6.用户个人中心修改个人资料 7.用户查看…...
leaflet 加载geojson文件并显示图形(示例代码051)
第051个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载geojson文件,将图形显示在地图上。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示例效果配置方式示例源代码(…...
【Kafka】ZK和Kafka集群的安装和配置
一、集群环境说明1. 虚拟机:192.168.223.101/103/1052. 系统版本:CentOS 7.93. JDK版本:11.0.18.0.14. Zookeeper版本:3.7.15. Kafka版本:2.13-2.8.2备注:无论是ZK,还是Kafka,都需要…...
并发编程出现的问题以及解决方式
解决并发编程出现的问题基于java内存模式的设计出现的问题基于java内存模式的设计,多线程操作一些共享的数据时,出现以下三个问题:1.不可见性问题:多个线程同时在各自的工作内存对共享数据进行操作,彼此之间不可见。操…...
[ linux ] linux 命令英文全称及解释
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】🎉点赞➕评论➕收藏 养成习…...
C++11新特性
文章目录说在前面花括号{}初始化new的列表初始化STL相关容器的列表初始化相关语法格式容器列表初始化的底层原理forward_list和array与类型相关的新特性decltype左值引用和右值引用什么是左值,什么是右值左值和右值的本质区别右值引用如何理解右值引用std::move移动…...
【宝塔部署SpringBoot前后端不分离项目】含域名访问部署、数据库、反向代理、Nginx等配置
一定要弄懂项目部署的方方面面。当服务器上部署的项目过多时,端口号什么时候该放行、什么时候才会发生冲突?多个项目使用redis怎么防止覆盖?Nginx的配置会不会产生站点冲突?二级域名如何合理配置?空闲的时候要自己用服…...
从0到1一步一步玩转openEuler--11 openEuler基础配置-设置磁盘调度算法
11 openEuler基础配置-设置磁盘调度算法 文章目录11 openEuler基础配置-设置磁盘调度算法11.1 设置磁盘调度算法11.1.1 临时修改调度策略11.1.2 永久设置调度策略11.1 设置磁盘调度算法 本节介绍如何设置磁盘调度算法。 11.1.1 临时修改调度策略 例如将所有IO调度算法修改为…...
河道治理漂浮物识别监测系统 yolov7
河道治理漂浮物识别监测系统通过yolov7网络模型深度视觉分析技术,河道治理漂浮物识别监测算法模型实时检测着河道水面是否存在漂浮物、水浮莲以及生活垃圾等,识别到河道水面存在水藻垃圾等漂浮物,立即抓拍存档预警。You Only Look Once说的是…...
微信小程序 java ssm Springboot学生作业提交管理系统
系统具有良好的集成性,提供标准接口,以实现与其他相关系统的功能和数据集成。开放性好,便于系统的升级维护、以及与各种信息系统进行集成。功能定位充分考虑平台服务对象的需求。 一个微信小程序由.js、.json、.wxml、.wxss四种文件构成&…...
实战项目-课程潜在会员用户预测(朴素贝叶斯&神经网络)
目录1、背景介绍2、朴素贝叶斯2.1 模型介绍2.2 模型实现3、人工神经网络1、背景介绍 目标:将根据用户产生的数据对课程潜在的会员用户(可能产生购买会员的行为)进行预测。 平台的一位注册用户是否购买会员的行为应该是建立在一定背景条件下…...
ESP32设备驱动-定时器与定时器中断
定时器与定时器中断 文章目录 定时器与定时器中断1、ESP32定时器介绍2、定时器相关API介绍3、软件准备4、硬件准备3、代码实现有时需要按时发生某些事情,这就是计时器和计时器中断发挥作用的地方。 定时器是一种中断。 它就像一个简单的时钟,用于测量和控制时间事件,提供精确…...
【JavaScript 逆向】安居客滑块逆向分析
声明本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!案例目标验证码:aHR0cHM6Ly93d3cuYW5qdWtlLmNvbS9jYXB0Y2hhLXZlcmlmeS8/Y2FsbGJhY2s9c2hpZWxkJmZyb209YW50aXNwYW0以上均做了脱敏处…...
【STM32】【HAL库】遥控关灯1主机
相关连接 【STM32】【HAL库】遥控关灯0 概述 【STM32】【HAL库】遥控关灯1主机 【STM32】【HAL库】遥控关灯2 分机 【STM32】【HAL库】遥控关灯3 遥控器 需求 主机需要以下功能: 接收来自物联网平台的命令发送RF433信号给从机接收RF433信号和红外信号驱动舵机动作 方案设计…...
Java 初始化块
文章目录1、初识初始化块2、实例初始化块和构造器3、类初始化块1、初识初始化块 Java 使用构造器来对单个对象进行初始化操作,使用构造器先完成对整个 Java 对象的状态初始化,然后将 Java 对象返回给程序,从而让该 Java 对象的信息更加完整。…...
超详细讲解长度受限制的字符串函数(保姆级教程!!!)
超详细讲解长度受限制的字符串函数(保姆级教程!!!)长度受限制的字符串函数strncpy函数strncpy函数的使用strncpy函数的模拟实现strncat函数strncat函数的使用strncat函数的模拟实现strncmp函数strncmp函数的使用strncm…...
【c#】c#常用小技巧方法整理(4)——cmd命令提示符,c#调用cmd
CMD命令是一种命令提示符,CMD是command的缩写,位于系统System32的目录下,是大多数Windows操作系统中可用的命令行解释器应用程序。用于执行输入的命令。其中大多数命令通过脚本和批处理文件自动执行任务,执行高级管理功能…...
在项目中遇到的关于form表单的问题
前言 以下内容都是基于element Plus 和 vue3 一个form-item校验两个下拉框 有时候不可避免会遇到需要一个form-item校验两个下拉框的情况,比如: 这种情况下传统的校验已经无法实现,需要通过form表单提供的自定义校验来实现。以上面的必填…...
德国奔驰、博世和保时捷的员工年薪有多少?
点击 欧盟IT那些事 关注我们公告:因企鹅审核规定,本公众号从《德国IT那些事》更名为《欧盟IT那些事》。从职场新人到总裁,一个个盘。位于德国斯图加特的梅赛德斯-奔驰集团及其子公司梅赛德斯-奔驰是世界最知名的汽车制造商之一。奔驰车代表着…...
Mybatis与微服务注册
目录 一,Springboot整合MybatisPlus 创建商品微服务子模块 二,SpringBoot整合Freeamarker 三、SpringBoot整合微服务 &gateway&nginx 整合微服务之商品服务zmall-product 创建并配置网关gateway服务 安装配置SwitchHosts 安装配置Windo…...
JAVA练习47-合并两个有序数组
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-合并两个有序数组 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 2月11日练习…...
右键菜单管理 - Win系统
右键菜单管理 - Win系统前言软件工具管理右键菜单360右键管理右键管家前言 Windows系统可以借助软件工具对右键菜单进行管理,可对指定的右键菜单进行删除和恢复。下面以Win10系统为例介绍管理方法。 注意:使用本文提及的工具将某软件的右键菜单删除后&…...
背包问题求方案数、具体方案
背包问题求方案数、具体方案01背包问题求体积恰好等于V的方案数完全背包问题求体积恰好等于V的方案数01背包问题求最优选法的方案数完全背包问题求最优选法的方案数01背包问题求具体方案01背包问题求体积恰好等于V的方案数 原题链接AcWing278. 数字组合 考虑状态表示&#x…...
电商导购CPS,淘宝联盟如何跟单实现用户和订单绑定
前言 大家好,我是小悟 做过自媒体的小伙伴都知道,不管是发图文还是发短视频,直播也好,可以带货。在你的内容里面挂上商品,你自己都不需要囤货,如果用户通过这个商品下单成交了,自媒体平台就会…...
【Shell1】shell语法,ssh/build/scp/upgrade,环境变量,自动升级bmc,bmc_wtd,
文章目录1.shell语法:Shell是用C语言编写的程序,它是用户使用Linux的桥梁,硬件>内核(os)>shell>文件系统1.1 变量:readonly定义只读变量,unset删除变量1.2 函数:shell脚本传递的参数中包含空格&am…...
刷题记录:牛客NC208250牛牛的最美味和最不美味的零食
传送门:牛客 题目描述: 牛牛为了减(吃)肥(好),希望对他的零食序列有更深刻的了解,所以他把他的零食排成一列,然后对每一 个零食的美味程度都打了分,现在他有可能执行两种操作&…...
微搭低代码从入门到精通08-轮播容器
我们上一篇讲解了基础布局组件,讲解了普通容器和文本组件的用法,本篇我们继续介绍布局组件。 小程序中经常会有个功能是轮播图展示的功能,多张图片可以顺序进行切换。我们学习使用轮播容器的时候,先考虑切换的图片从哪来…...
分类预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多特征分类预测
分类预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多特征分类预测 目录分类预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多特征分类预测分类效果基本介绍模型描述程序设计参考文献分类效果 基本介绍 1.Matlab实现SSA-CNN麻雀算法优化卷积神经网络多特征分类预测&…...
华为10年经验测试工程师,整理出来的python自动化测试实战
前言 全书共分11章,第一章是基础,了selenium家谱,各种组件之间的关系以及一些必备知识。第二章告诉如何开始用python IDLE写程序以及自动化测试环境的搭建。第三章是webdriver API,我花了相当多时间对原先的文档,冗余…...
从哪看出网站的建站公司/子域名大全查询
这一篇想来想去,觉得还是太庞大了不好下手,,看着不如干着,莫不如我们直接从新建一个 Electron 项目开始入手,然后研究一下其他一些重要问题。 如何新建一个 Electron 项目? 可以先看看简书上这篇࿰…...
wordpress宝宝网商城免费模板下载/it行业培训机构一般多少钱
前言:负责,因为该项目他(jetty嵌入式开始SpringMvc)实现文件上传的必要性,并拥有java文件上传这一块还没有被曝光。并 Http 更多晦涩协议。因此,这种渐进的方式来学习和实践上载文件的原则。 该博客侧重于实践。 一.Http协议原理简…...
游民星空是用什么做的网站/武汉电脑培训学校有哪些
由于博主主要使用Chrome内核的浏览器进行博客页面的代码优化,因此有些功能可能会因为浏览器的差异而无法正常运行,博主对此也非常无奈啊:Windows的IE浏览器的兼容性实在是太差了...... 尽管如此,考虑到广大使用IE等浏览器的用户&a…...
网站建设 猫云seo/百度如何快速收录网站
官方资料 鱼C课程案例库:https://ilovefishc.com/html5/ html5速查手册:https://man.ilovefishc.com/html5/ css速查手册:https://man.ilovefishc.com/css3/ 学习正文 :link 选择器:https://man.ilovefishc.com/pageCSS3/dotli…...
360度网站模板/北京搜索引擎优化管理专员
我有大约10GB的pcap数据和IPv6流量,用于分析存储在IPv6头和其他扩展头中的信息.为此,我决定使用Scapy框架.我尝试了rdpcap函数,但是对于如此大的文件,不建议这样做.它试图将所有文件加载到内存中并卡在我的情况下.我在网上发现在这种情况下建议使用嗅探器,我的代码如下所示&…...
安康网站制作公司/seo权重查询
公元19XX年前,关于EXCEL的操作就如滔滔江水,连绵不绝,真正操作EXCEL我也是从去年下半年开始的,有些比较复杂的年度报表之类的,做起来也有点费力,不过还是都能画出来了,关于EXCEL的报表导出&…...