【C】操作符详解

news2024/11/23 21:28:56

操作符

  • 算术操作符
  • 移位操作符
  • 位操作符
  • 赋值操作符(=)
    • 复合赋值操作符
  • 单目操作符
  • 关系操作符
  • 逻辑操作符
  • 逗号表达式
  • 条件操作符
  • 下标引用,函数调用和结构成员

今天给大家带来一篇关于C语言操作符的详细介绍,在C语言中操作符主要有以下几种:

1.算术操作符
2.移位操作符
3.位操作符
4.赋值操作符
5.单目操作符
6.关系操作符
7.逻辑操作符
8.逗号表达式
9.条件操作符
9.下标引用,函数调用和结构成员

接下来给大家详细介绍!

算术操作符

+ - * / %

其中加法和减法和数学中的一样,乘法在C语言中是*表示的,剩下的也和数学中是一样的。
在C语言中除法分为整数除法和小数除法,整数除法/两遍都得是整数,而小数除法/两边只要有一个小数就可以了。列如:

#include <stdio.h>

int main()
{
	printf("%d\n", 2 / 3);
	printf("%lf\n", 2 / 3.0);
	printf("%lf\n", 2.0 / 3.0);
	printf("%lf\n", 2.0 / 3);
	return 0;
}

代码运行结果:
在这里插入图片描述
还有一个%取余操作符,就是求余数,这个操作符需要注意的事,符号两边都必须是整数,不可以是浮点数!

移位操作符

<< 左移操作符
>> 右移操作符

移位操作符操作的是我们的二进制位,所以在这里给大家补充一个知识点,原码、反码、补码。
对于一个有符号的整数来说,二进制为的最高位为符号位。
正数的原码、反码、补码都相同。
负数的原码就是按二进制的形式写出来就行。反码就是符号位不变,剩下的按位取反,补码就等于反码加1。

左移操作符就是所有的二进制位向左移动,左边的丢弃,右边补0。
右移运算分为两种:

  1. 逻辑移位 左边用0填充,右边丢弃
  2. 算术移位 左边用原该值的符号位填充,右边丢弃

代码演示

#include <stdio.h>

int main()
{
	printf("%d\n", 5 >> 1);
	printf("%d\n", 5 << 1);
	return 0;
}

代码运行结果:
在这里插入图片描述
对于移位运算符,不要移动负数位,这个是标准未定义的。

位操作符

& 按位与
| 按位或
^ 按位异或

位操作符操作的也是二进制位。
&操作符,两个数二进制位对应的都是1才是1,只要有0就是0。
| 操作符,两个数二进制位对应的都是0才是0,只要有1就是1。
^操作符,两个数二进制位相同为0,相异为1。
代码演示:

#include <stdio.h>

int main()
{
	printf("%d\n", 1 & 2);
	printf("%d\n", 1 | 2);
	printf("%d\n", 1 ^ 2);
	printf("%d\n", 1 ^ 2 ^ 1);
	printf("%d\n", 1 ^ 1 ^ 2);

	return 0;
}

运行结果
在这里插入图片描述
从运行结果我们也可以看出,^操作符满足交换律。

赋值操作符(=)

赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。

复合赋值操作符

+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=

这些运算符都可以写成复合的效果。
例如a+=b就等价于a=a+b。

单目操作符

! 逻辑反操作

- 负值

+ 正值

& 取地址

sizeof 操作数的类型长度(以字节为单位)

~ 对一个数的二进制按位取反

– 前置、后置–
++ 前置、后置++*
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换

sizeof(数组名)计算的是整个数组所占空间的大小
这里重点讲一下前置++和后置++,–跟它同理。
前置++,变量先加1在使用。
后置++,先使用变量的值,在加1。
解引用操作符可以拿到指针指向的那个内容。

关系操作符

>
>=
<
<=
!= 用于测试“不相等”

== 用于测试“相等

这些关系运算符比较简单,没什么可讲的。

逻辑操作符

&& 逻辑与
|| 逻辑或

&&两边都为真才为真,否则为假,如果左边为假,右边就不进行运算了。
|| 两边都为假才为假,都则为真,如果左边为真,右边就不进行运算了。

逗号表达式

exp1, exp2, exp3, …expN

逗号表达式,会从左向右依次计算,最后一个表达式的值为最终表达式的值。
代码演示

#include <stdio.h>

int main()
{
	int num = 0;
	num = (3 + 2, 2 + 4, 5 + 5);
	printf("%d\n", num);
	return 0;
}

运行结果
在这里插入图片描述

条件操作符

exp1 ? exp2 : exp3

这个操作符,如果exp1为真,就运算exp2为最终结果,否则exp3为最终结果。
比如我们求两个数最大值:

max = (a > b ? a : b);

下标引用,函数调用和结构成员

1.[ ] 下标引用操作符
操作数:一个数组名 + 一个索引值
2.( ) 函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
3.访问一个结构的成员
. 结构体.成员名。
-> 结构体指针->成员名。

今天的分享就到这里结束了,感谢大家的关注和支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VS工程加载失败 | 找不到导入的项目CUDA xx.props解决方案

问题背景&#xff1a; 如果遇到VS项目某些工程无法加载&#xff0c;有一个可能的原因是属性表没有找到。即props文件无法加载&#xff0c;导致项目加载失败。 解决方案&#xff1a; 找到工程配置 .vcxproj 文件&#xff0c;编辑打开&#xff0c;查找props&#xff0c;发现电脑…

07_Linux并发与竞争

目录 Linux并发与竞争Linux并发与竞争 并发与竞争 保护内容是什么 原子操作简介 原子整形操作API函数 原子位操作API函数 自旋锁简介 自旋锁API函数 信号量简介 信号量API 函数 互斥体简介 互斥体API函数 Linux并发与竞争Linux并发与竞争 Linux是一个多任务操作系…

SQL-每日一题【178.分数排名】

题目 表: Scores 编写 SQL 查询对分数进行排序。排名按以下规则计算: 分数应按从高到低排列。 如果两个分数相等&#xff0c;那么两个分数的排名应该相同。 在排名相同的分数后&#xff0c;排名数应该是下一个连续的整数。换句话说&#xff0c;排名之间不应该有空缺的数字。 …

Redis安装配置及常用redis命令

目录 一、关系型数据库与非关系型数据库 1.关系型数据库 2. 非关系型数据库 3. 关系型数据库和非关系型数据库区别 3.1数据存储方式不同 3.2扩展方式不同 3.3对事务性的支持不同 4.非关系型数据库产生背景 5.总结 二、Redis简介 1.redis的工作过程 ​编辑 2.Redis…

chatgpt赋能python:如何用Python快速找到你需要的资料

如何用Python快速找到你需要的资料 在互联网时代&#xff0c;人们每天都需要浏览大量的信息来获取所需的资源和知识。但是在海量信息面前&#xff0c;如何快速准确地获取你想要的资料呢&#xff1f;这就要依靠搜索引擎了。而Python作为一门通用编程语言&#xff0c;也可以在搜…

路由基础静态路由

路由基础&静态路由 一、路由器基本原理1.1、路由器基本概述1.2、LAN和广播域1.3、路由选路1.3.1、路由器转发数据包1.3.2、IP路由表1.3.3、建立路由表1.3.4、最长匹配原则1.3.5、路由优先级1.3.6、路由度量1.3.7、等价路由 1.4、总结 二、静态路由基础2.1、静态路由配置2.2…

【C++】 Qt-事件(上)(事件、重写事件、事件分发)

文章目录 事件重写事件事件分发 事件 事件&#xff08;event&#xff09;是由系统或Qt本身在不同的时刻发出的。比如&#xff0c;当用户按下鼠标&#xff0c;敲下键盘&#xff0c;或窗口需要重新绘制的时候&#xff0c;都会发出一个相应的事件。一些事件是在对用户操作做出响应…

【记录】OLAP引擎中的冷热分层技术

在数据分析的实际场景中&#xff0c;冷热数据往往面临着不同的查询频次及响应速度要求。例如在电商订单场景中&#xff0c;用户经常访问近 6 个月的订单&#xff0c;时间较久远的订单访问次数非常少&#xff1b;在行为分析场景中&#xff0c;需支持近期流量数据的高频查询且时效…

Airtest:Windows桌面应用自动化测试四【Airtest之python本地环境安装、独立IDE运行】

Airtest之python本地环境安装、独立IDE运行 一、环境配置二、安装Airtest三、安装poco四、常见问题4.1若运行代码时&#xff0c;在cv2模块报ImportError: DLL load failed: 找不到指定模块的错&#xff0c;有几种解决方案&#xff1a;4.1.1.本问题的根本原因应该是DLL文件的缺失…

如何在前端写播放音频

ml(html文档、wxml文档等) <audio action{{action}} src"http://music.163.com/song/media/outer/url?id2059780541.mp3"></audio> js文档 action:{"method":"play"}

6.19、一起学JAVA API Object String StringBuffer/StringBuilder

1 前言 亲爱的小伙伴萌,目前我们看到的是Java基础部分的一个新的部分API,这是个啥,又能做啥呢? 其实可以概括成一句话:帮助我们站在巨人的肩膀上,实现更加高效的开发,那么我们来一探究竟吧~ 2 什么是API API&#xff08;Application Programming Interface&#xff0c;应用…

软考A计划-系统集成项目管理工程师-项目概念-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

《操作系统》by李治军 | 实验9 - proc文件系统的实现

目录 一、实验目的 二、实验内容 三、实验准备 1. procfs 简介 2. 基本思路 四、实验过程 1. 增加新的文件类型 2. 让 mknod() 支持新的文件类型 &#xff08;1&#xff09;修改 mknod 系统调用 &#xff08;2&#xff09;初始化 procfs 3. 让 proc 文件可读 &…

H5学习(三)-- CSS层叠样式表

文章目录 一、简介二、CSS的书写样式1. 行内样式&#xff08;内联样式&#xff09;2. 页内样式3. 外部样式 三、常见的选择器1. 标签选择器2. 类选择器3. id选择器4. 并列选择器5. 复合选择器6. 伪类选择器 一、简介 CSS&#xff08;cascading style sheet&#xff09;是层叠样…

springboot+echarts +mysql制作数据可视化大屏(六图)

作者水平低&#xff0c;如有错误&#xff0c;恳请指正&#xff01;谢谢&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 项目简单&#xff0c;适合大学生参考 分类专栏还有其它的可视化博客哦&#xff01; 专栏地址&#xff1a;https://blog.csdn.net/qq_559…

数据结构--队列的链表实现

数据结构–队列的链表实现 队列的链表实现代码定义 typedef struct LinkNode {ElemType data;struct LinkNode* next; }LinkNode;typedef struct {LinkNode *front, *rear; }LinkQueue;带头结点 初始化 void InitQueue(LinkQueue &Q) {Q.front Q.rear (LinkNode*)malloc…

python进行windows系统UI自动化之【pyautoit】

python进行windows系统UI自动化之【pyautoit】 一、AutoIT中文手册1.1、安装AutoIt1.2、使用Auto Window Info 二、python引用2.1、安装2.2、引用2.3、使用2.3.1、窗口操作2.3.2、控件操作2.3.3、进程操作2.3.4、鼠标操作2.3.5、键盘操作2.3.5.1、Send 是非常有用的一个函数/命…

Segment Any Medical-Model (SAMM)在3D slicer上部署

参考&#xff1a; GitHub - bingogome/samm: A 3D Slicer integration to Metas SAM. https://www.cnblogs.com/odesey/p/17322413.html 一、下载代码仓库和权重文件 https://github.com/facebookresearch/segment-anything.git https://github.com/bingogome/samm.git htt…

举例说明Chatgpt模型训练的过程

Chatbot GPT模型训练过程详解 在人工智能领域&#xff0c;聊天机器人是一种模拟人类对话行为的计算机程序。近年来&#xff0c;随着深度学习和自然语言处理技术的飞速发展&#xff0c;聊天机器人越来越流行。本文将详细阐述GPT&#xff08;Generative Pre-trained Transformer&…

软考A计划-系统集成项目管理工程师-项目整体管理-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…