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

c语言常见操作符及操作符优先级

目录

  • 概述
    • 1. 算术操作符:
    • 2. 关系操作符:
    • 3. 逻辑操作符:
    • 4. 位操作符:
  • *常见操作符优先级*

  • 概述

C语言中有多种操作符,用于执行不同的操作。下面是一些常见的C语言操作符以及示例代码:

1. 算术操作符:

  • 加法操作符(+):用于将两个值相加。
int a = 5;
int b = 3;
int result = a + b;  // result的值为8
  • 减法操作符(-):用于将第一个值减去第二个值。
int a = 5;
int b = 3;
int result = a - b;  // result的值为2
  • 乘法操作符(*):用于两个值相乘。
int a = 5;
int b = 3;
int result = a * b;  // result的值为15
  • 除法操作符(/):用于将第一个值除以第二个值。
int a = 10;
int b = 2;
int result = a / b;  // result的值为5
  • 取余操作符(%):用于求两个值相除后的余数。
int a = 10;
int b = 3;
int result = a % b;  // result的值为1

2. 关系操作符:

  • 相等操作符(==):用于判断两个值是否相等,如果相等则返回1,否则返回0。
int a = 5;
int b = 3;
int result = (a == b);  // result的值为0
  • 不相等操作符(!=):用于判断两个值是否不相等,如果不相等则返回1,否则返回0。
int a = 5;
int b = 3;
int result = (a != b);  // result的值为1
  • 大于操作符(>):用于判断第一个值是否大于第二个值,如果是则返回1,否则返回0。
int a = 5;
int b = 3;
int result = (a > b);  // result的值为1
  • 小于操作符(<):用于判断第一个值是否小于第二个值,如果是则返回1,否则返回0。
int a = 5;
int b = 3;
int result = (a < b);  // result的值为0
  • 大于等于操作符(>=):用于判断第一个值是否大于等于第二个值,如果是则返回1,否则返回0。
int a = 5;
int b = 3;
int result = (a >= b);  // result的值为1
  • 小于等于操作符(<=):用于判断第一个值是否小于等于第二个值,如果是则返回1,否则返回0。
int a = 5;
int b = 3;
int result = (a <= b);  // result的值为0

3. 逻辑操作符:

  • 逻辑与操作符(&&):用于判断两个条件是否同时成立,如果是则返回1,否则返回0。
int a = 5;
int b = 3;
int result = (a > 0 && b > 0);  // result的值为1
  • 逻辑或操作符(||):用于判断两个条件是否至少有一个成立,如果是则返回1,否则返回0。
int a = 5;
int b = 3;
int result = (a > 0 || b > 0);  // result的值为1
  • 逻辑非操作符(!):用于取反一个条件的值,如果条件为真,则返回假(0),如果条件为假,则返回真(1)。
int a = 5;
int result = !(a > 0);  // result的值为0

4. 位操作符:

  • 按位与操作符(&):对两个值进行按位与操作。
unsigned int a = 5;   // 二进制表示为:0000 0101
unsigned int b = 3;   // 二进制表示为:0000 0011
unsigned int result = a & b;  // result的值为1,二进制表示为:0000 0001
  • 按位或操作符(|):对两个值进行按位或操作。
unsigned int a = 5;   // 二进制表示为:0000 0101
unsigned int b = 3;   // 二进制表示为:0000 0011
unsigned int result = a | b;  // result的值为7,二进制表示为:0000 0111
  • 按位异或操作符(^):对两个值进行按位异或操作。
unsigned int a = 5;   // 二进制表示为:0000 0101
unsigned int b = 3;   // 二进制表示为:0000 0011
unsigned int result = a ^ b;  // result的值为6,二进制表示为:0000 0110
  • 左移操作符(<<):将一个值左移指定的位数。
unsigned int a = 5;   // 二进制表示为:0000 0101
unsigned int result = a << 2;  // result的值为20,二进制表示为:0001 0100
  • 右移操作符(>>):将一个值右移指定的位数。
unsigned int a = 20;   // 二进制表示为:0001 0100
unsigned int result = a >> 2;  // result的值为5,二进制表示为:0000 0101

以上是一些常见的C语言操作符及其示例代码,除此之外C语言中还有其他类型的操作符。

常见操作符优先级

C语言中常见操作符的优先级从高到低如下:

  1. 一元运算符:
    ++ (自增), – (自减), + (正号), - (负号), ! (逻辑非), ~ (按位取反), * (指针解引用), & (取地址), sizeof (获取变量类型大小)


  2. 乘法/除法/取余:
    *(乘法), / (除法), % (取余)


  1. 加法/减法:
    +(加法), - (减法)

  1. 移位运算符:
    << (左移), >> (右移)

  1. 关系运算符:
    < (小于), > (大于), <= (小于等于), >= (大于等于)

  1. 相等性运算符:
    == (等于), != (不等于)

  1. 位与运算符:
    & (按位与)

  1. 位异或运算符:
    ^ (按位异或)

  1. 位或运算符:
    | (按位或)

  1. 逻辑与运算符:
    && (逻辑与)

  1. 逻辑或运算符:
    || (逻辑或)

  1. 三元条件运算符:
    ? : (条件运算符)

  1. 赋值运算符:
    = (赋值), +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=


注意,这只是一个常见操作符的优先级逐级排序,具体使用时还需要根据具体运算表达式进行适当的括号添加,以确保运算顺序符合预期。

相关文章:

c语言常见操作符及操作符优先级

目录 概述1. 算术操作符&#xff1a;2. 关系操作符&#xff1a;3. 逻辑操作符&#xff1a;4. 位操作符&#xff1a; *常见操作符优先级* 概述 C语言中有多种操作符&#xff0c;用于执行不同的操作。下面是一些常见的C语言操作符以及示例代码&#xff1a; 1. 算术操作符&…...

IO进程线程:通信

1.定义互斥锁 #include<myhead.h>int num520;//临界资源//1.创建一个互斥锁变量 pthread_mutex_t mutex;//定义任务&#xff11;函数 void *task1(void *arg) {printf("11111111111111\n");//3.获取锁资源pthread_mutex_lock(&mutex);num1314;sleep(3);pr…...

神经网络系列---常用梯度下降算法

文章目录 常用梯度下降算法随机梯度下降&#xff08;Stochastic Gradient Descent&#xff0c;SGD&#xff09;&#xff1a;随机梯度下降数学公式&#xff1a;代码演示 批量梯度下降&#xff08;Batch Gradient Descent&#xff09;批量梯度下降数学公式&#xff1a;代码演示 小…...

Flink 的历史版本特性介绍(一)

如果你还不了解 Flink 是什么,可以查看我之前的介绍文章:Flink 介绍 如果你想跟着我一起学习 flink,欢迎查看订阅专栏:Flink 专栏 这篇文章列举了 Flink 每次发布的版本中的重要特性,从中可以看出 Flink 是如何一步一步发展到今天的。 Flink 的前身是 Stratosphere 项目…...

【尚硅谷】MybatisPlus 学习笔记(下)

目录 六、插件 6.1、分页插件 6.1.1、添加配置类 6.1.2、测试 6.2、xml自定义分页 6.2.1、UserMapper中定义接口方法 6.2.2、UserMapper.xml中编写SQL 6.2.3、测试 6.3、乐观锁 6.3.1、场景 6.3.2、乐观锁与悲观锁 6.3.3、模拟修改冲突 数据库中增加商品表 添加数…...

408数据结构算法模板

下面这份408数据结构算法模板耗时3天整理&#xff0c;希望对大家有用 408算法题概述 得分要点 会写结构定义&#xff08;没有就自己写上&#xff09;写清楚解题的算法思想描述清楚算法实现最后写出时间和空间复杂度 关于改卷 1、改卷老师不会上机试 2、老师改的是扫描卷 3、…...

Mysql--索引分类

Mysql--索引分类 1. 索引分类2. 聚集索引&二级索引 1. 索引分类 在MySQL数据库&#xff0c;将索引的具体类型主要分为以下几类&#xff1a;主键索引、唯一索引、常规索引、全文索引。 2. 聚集索引&二级索引 而在在InnoDB存储引擎中&#xff0c;根据索引的存储形式&am…...

AutoTimes:通过大语言模型的自回归时间序列预测器

论文标题&#xff1a; AutoTimes: Autoregressive Time Series Forecasters via Large Language Models 作者&#xff1a;Yong Liu, Guo Qin, Xiangdong Huang, Jianmin Wang, Mingsheng Long 链接&#xff1a;https://arxiv.org/abs/2402.02370 机构&#xff1a;清华大学 …...

记录 | go与C/C++交互

Go语言是类C的语言&#xff0c;与C语言有着千丝万缕的联系&#xff0c;在Go语言的代码中可以直接调用C语言代码&#xff0c;但不支持直接调用 C。 Go 调用 C/C 的方式&#xff1a; C&#xff1a;直接调用 C API&#xff1b;C&#xff1a;通过实现一层封装的 C 接口来调用 C 接…...

B3623枚举排列

题目描述 今有 n 名学生&#xff0c;要从中选出 k 人排成一列拍照。 请按字典序输出所有可能的排列方式。 输入格式 仅一行&#xff0c;两个正整数 n,k。 输出格式 若干行&#xff0c;每行 k 个正整数&#xff0c;表示一种可能的队伍顺序。 输入输出样例 输入 #1复制 …...

vuex怎么防止数据刷新丢失?

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。为了防止 Vuex 中的数据在刷新时丢失&#xff0c;你可以采取以下策略&#xff1a; 持久化插件&#xff1a…...

OpenGL ES 渲染 NV21、NV12、I420、YV12、YUYV、UYVY、I444(建议收藏)

本文主要讲解常见的 YUV 格式图像渲染方式,如果对 YUV 格式不是很熟悉的同学可以翻看旧文一文掌握 YUV 图像的基本处理,YUV 格式的介绍这里不再展开。 渲染 NV21、NV12 格式图像 NV21、NV12 可以看成同一种结构,区别只是 uv 的交错排列顺序不同。 渲染 NV21/NV12 格式图像…...

云计算的两地三中心和灾备介绍

两地三中心是指在不同的地理位置建立两个数据中心和一个灾备中心&#xff0c;其中一个数据中心为主数据中心&#xff0c;另一个数据中心为备用数据中心&#xff0c;灾备中心则用于备份数据和在主数据中心或备用数据中心发生故障或灾难时提供应急支持。 异地灾备则是指在不同的地…...

Spring Bean

Spring的配置方式 1、xml配置文件 2、基于注解的方式 3、基于Java的方式 Spring Bean的生命周期 1、通过构造器或工厂方法创建bean实例 2、为bean的属性赋值 3、调用bean的初始化方法 4、使用bean 5、当容器关闭时&#xff0c;调用bean的销毁方法 Spring inner beans …...

Linux的时间操作

当涉及到时间操作时&#xff0c;Linux提供了一系列函数和结构体来处理时间的获取、转换和操作。 time_t 别名 time_t 是 C/C 中用来表示时间的类型&#xff0c;通常被定义为整数类型。它通常用来存储从纪元&#xff08;通常是1970年1月1日&#xff09;到某一特定时间点之间的…...

2024-02-21 作业

作业要求&#xff1a; 复习课上内容 //已完成结构体字节对齐&#xff0c;64位没做完的做完&#xff0c;32位重新都做一遍&#xff0c;课上指定2字节对齐的做一遍&#xff0c;自己验证 //已完成两种验证大小端对齐的代码写一遍复习指针内容 //已完成完善顺序表已写出的…...

平台组成-监控服务

监控服务和其他服务不同&#xff0c;不是一个单一的微服务&#xff0c;准确来说是一个体系。每个微服务都集成了Actuator&#xff0c;通过Actuator对外提供微服务的运行状况。关于Actuator大家可以阅读这篇文章。《Spring boot——Actuator 详解》 ​ 其上是Micrometer&…...

探索分布式强一致性奥秘:Paxos共识算法的精妙之旅

提到分布式算法&#xff0c;就不得不提 Paxos 算法&#xff0c;在过去几十年里&#xff0c;它基本上是分布式共识的代名词&#xff0c;因为当前一批常用的共识算法都是基于它改进的。比如&#xff0c;Fast Paxos 算法、Cheap Paxos、Raft 算法等。 由莱斯利兰伯特&#xff08;L…...

使用 ES|QL 优化可观察性:简化 Kubernetes 和 OTel 的 SRE 操作和问题解决

作者&#xff1a;Bahubali Shetti 作为一名运营工程师&#xff08;SRE、IT 运营、DevOps&#xff09;&#xff0c;管理技术和数据蔓延是一项持续的挑战。 简单地管理大量高维和高基数数据是令人难以承受的。 作为单一平台&#xff0c;Elastic 帮助 SRE 将无限的遥测数据&#…...

Docker 第十九章 : 阿里云个人镜像仓使用

Docker 第十九章 : 阿里云个人镜像仓使用 本章知识点: 如何创建镜像库,如何设置密码,如何登录与退出个人镜像仓,如何本地打镜像,如何将本地镜像推送到个人镜像库。 背景 在项目YapiDocker部署中,因读取mongo:latest 版本不一致,导致后续执行步骤的异常。遇到此场景…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...