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

C语言4 运算符

目录

1. 算术运算符

2. 关系运算符

3. 逻辑运算符

4. 位运算符

5. 赋值运算符

6. 自增和自减运算符

7. 条件运算符(三元运算符)

8. 逗号运算符

9. sizeof 运算符

10. 取地址和解引用运算符

11.运算符的优先级


1. 算术运算符

`+` (加法):将两个数相加。
`-` (减法):将第一个数减去第二个数。
`*` (乘法):将两个数相乘。
`/` (除法):将第一个数除以第二个数,注意在整型除法中结果也是整型(小数部分被舍弃)。
`%` (取模):返回两个数相除的余数,只能用于整数。

示例

int a = 10, b = 3;
int sum = a + b;      // sum = 13
int difference = a - b; // difference = 7
int product = a * b;    // product = 30
int quotient = a / b;   // quotient = 3
int remainder = a % b;  // remainder = 1

2. 关系运算符

`==` (等于):比较两个值是否相等。
`!=` (不等于):比较两个值是否不相等。
`>` (大于):检查第一个值是否大于第二个值。
`<` (小于):检查第一个值是否小于第二个值。
`>=` (大于等于):检查第一个值是否大于或等于第二个值。
`<=` (小于等于):检查第一个值是否小于或等于第二个值。
示例

int a = 10, b = 20;
int result;result = (a == b);    // result = 0 (false)
result = (a != b);    // result = 1 (true)
result = (a > b);     // result = 0 (false)
result = (a < b);     // result = 1 (true)
result = (a >= b);    // result = 0 (false)
result = (a <= b);    // result = 1 (true)

3. 逻辑运算符

`&&` (逻辑与):如果两个操作数都为真,则条件为真。
`||` (逻辑或):如果两个操作数有一个为真,则条件为真。
`!` (逻辑非):反转操作数的逻辑状态。

示例

int a = 1, b = 0;
int result;result = (a && b);    // result = 0 (false)
result = (a || b);    // result = 1 (true)
result = !a;          // result = 0 (false)

4. 位运算符

`&` (按位与):对两个数的每一位执行与操作。
`|` (按位或):对两个数的每一位执行或操作。
`^` (按位异或):对两个数的每一位执行异或操作。
`~` (按位取反):对数的每一位执行取反操作。
`<<` (左移):将一个数的所有位向左移动指定的位数。
`>>` (右移):将一个数的所有位向右移动指定的位数。

示例

int a = 5, b = 3;
int result;result = a & b;   // result = 1 (0101 & 0011 = 0001)
result = a | b;   // result = 7 (0101 | 0011 = 0111)
result = a ^ b;   // result = 6 (0101 ^ 0011 = 0110)
result = ~a;      // result = -6 (~00000101 = 11111010)
result = a << 1;  // result = 10 (0101 << 1 = 1010)
result = a >> 1;  // result = 2 (0101 >> 1 = 0010)

5. 赋值运算符

`=` (赋值):将右边的值赋给左边的变量。
`+=` (加且赋值):将右边的值与左边的变量相加并赋值给左边的变量。
`-=` (减且赋值):将右边的值与左边的变量相减并赋值给左边的变量。
`*=` (乘且赋值):将右边的值与左边的变量相乘并赋值给左边的变量。
`/=` (除且赋值):将右边的值与左边的变量相除并赋值给左边的变量。
`%=` (取模且赋值):将右边的值与左边的变量取模并赋值给左边的变量。

示例

int a = 10;
a += 5;  // a = 15
a -= 3;  // a = 12
a *= 2;  // a = 24
a /= 4;  // a = 6
a %= 4;  // a = 2

6. 自增和自减运算符

`++` (自增):将操作数的值增加1。例如 `a++` 或 `++a`。
`--` (自减):将操作数的值减少1。例如 `a--` 或 `--a`。

 示例

int a = 5;
a++;  // a 现在是 6
++a;  // a 现在是 7
a--;  // a 现在是 6
--a;  // a 现在是 5

7. 条件运算符(三元运算符)

`?:` (条件运算符):根据条件表达式的真假值来选择执行两个表达式之一。

 示例

int a = 10, b = 20;
int result;result = (a > b) ? a : b;  // result = 20

8. 逗号运算符

`,` (逗号运算符):按顺序执行一系列操作,并返回最后一个操作的值。

示例

int a = 1, b = 2, c;
c = (a += 1, b += 2, a + b);  // c = 6 (a=2, b=4)

9. sizeof 运算符

`sizeof`:返回变量或数据类型的大小(以字节为单位)。

示例

int a = 10;
printf("Size of a: %lu\n", sizeof(a));       // 输出变量 a 的大小
printf("Size of int: %lu\n", sizeof(int));   // 输出数据类型 int 的大小

10. 取地址和解引用运算符

 `&` (取地址):返回变量的地址。
 `*` (解引用):访问指针所指向的地址的值。

示例

int a = 10;
int *p;
p = &a;     // p 现在是变量 a 的地址
int b = *p; // b 现在是变量 a 的值,即 10

11.运算符的优先级

在C语言中,运算符的优先级决定了表达式中各个运算符操作的顺序。下面是常见运算符按优先级从高到低排列的列表:

1. 逗号运算符
2. 赋值运算符 (`=`, `+=`, `-=` 等)
3. 条件运算符 (`?:`)
4. 逻辑或运算符 (`||`)
5. 逻辑与运算符 (`&&`)
6. 按位或运算符 (`|`)
7. 按位异或运算符 (`^`)
8. 按位与运算符 (`&`)
9. 相等性和关系运算符 (`==`, `!=`, `<`, `>`, `<=`, `>=`)
10. 移位运算符 (`<<`, `>>`)
11. 加法和减法运算符 (`+`, `-`)
12. 乘法、除法和取模运算符 (`*`, `/`, `%`)
13. 一元运算符 (如 `++`, `--`, `!`, `~`, `+`, `-`)
14. 解引用和取地址运算符 (`*`, `&`)
15. sizeof运算符

优先级较高的运算符会先于优先级较低的运算符进行计算。在表达式中,可以使用圆括号 `()` 来改变运算符的计算顺序,圆括号中的表达式会先于外部的运算符进行计算。

例如,考虑以下表达式:

int a = 10, b = 5, c = 3;
int result = a + b * c;

根据运算符的优先级,乘法运算符 `*` 比加法运算符 `+` 的优先级高,因此先计算乘法,然后再进行加法运算。如果想先计算加法,可以使用圆括号来改变优先级:

int result = (a + b) * c;

这样就会先计算加法,然后再乘以 `c`。理解和正确利用运算符的优先级是编写正确和高效C语言程序的重要基础之一。

相关文章:

C语言4 运算符

目录 1. 算术运算符 2. 关系运算符 3. 逻辑运算符 4. 位运算符 5. 赋值运算符 6. 自增和自减运算符 7. 条件运算符&#xff08;三元运算符&#xff09; 8. 逗号运算符 9. sizeof 运算符 10. 取地址和解引用运算符 11.运算符的优先级 1. 算术运算符 (加法)&#xff1…...

【数据分析】Pandas_DataFrame读写详解:案例解析(第24天)

系列文章目录 一、 读写文件数据 二、df查询数据操作 三、df增加列操作 四、df删除行列操作 五、df数据去重操作 六、df数据修改操作 文章目录 系列文章目录前言一、 读写文件数据1.1 读写excel文件1.2 读写csv文件1.3 读写mysql数据库 二、df查询数据操作2.1 查询df子集基本方…...

quill编辑器使用总结

一、vue-quill-editor 与 quill 若使用版本1.0&#xff0c;这两个组件使用哪个都是一样的&#xff0c;无非代码有点偏差&#xff1b;若需要使用表格功能&#xff0c;必须使用 quill2.0 版本&#xff0c;因为 vue-quill-editor 不支持table功能。 二、webpack版本问题 在使用 q…...

快手矩阵管理系统:引领短视频运营新潮流

在短视频行业蓬勃发展的今天&#xff0c;如何高效运营和优化内容创作已成为企业和创作者关注的焦点。快手矩阵管理系统以其强大的核心功能&#xff0c;为短视频内容的创作、发布和管理提供了一站式解决方案。 智能创作&#xff1a;AI自动生成文案 快手矩阵管理系统的智能创作…...

文心一言:探索AI写作的新境界

在人工智能飞速发展的今天&#xff0c;AI写作助手已经成为许多写作者、内容创作者和营销专家的重要工具。"文心一言"作为一个先进的AI写作平台&#xff0c;以其强大的语言理解和生成能力&#xff0c;为用户提供了从文本生成到编辑、优化等一系列服务。本文将介绍如何…...

认证资讯|Bluetooth SIG认证

在当今高度互联的世界中&#xff0c;无线技术的普及已经成为我们生活和工作中不可或缺的一部分。作为领先的无线通信技术之一&#xff0c;Bluetooth技术以其稳定性、便捷性和广泛的应用场景而备受青睐。然而&#xff0c;要想在激烈的市场竞争中脱颖而出&#xff0c;获得Bluetoo…...

我国静止无功发生器(SVG)市场规模逐渐扩大 高压SVG为主流产品

我国静止无功发生器&#xff08;SVG&#xff09;市场规模逐渐扩大 高压SVG为主流产品 静止无功发生器&#xff08;SVG&#xff09;又称为静止同步补偿器、先进静止补偿器、静止调相机等&#xff0c;是利用全控型功率器件组成的桥式变流器来实现动态无功调节的一种先进无功自动补…...

【漏洞复现】用友U8 CRM downloadfile 任意文件读取漏洞

0x01 产品简介 用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件&#xff0c;旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 /pub/downloadfile.php接囗处存在任意文件读取漏洞,未经身份验证的远程攻击…...

计算机网络 | 期末复习

物理层&#xff1a; 奈氏准则&#xff1a;带宽&#xff08;w Hz&#xff09;&#xff0c;在不考虑噪音的情况下&#xff0c;最大速率&#xff08;2W&#xff09;码元/秒 信噪比S/N&#xff1a;以分贝&#xff08;dB&#xff09;为度量单位。信噪比&#xff08;dB&#xff09;…...

动手实操微软开源的GraphRAG

微软在今年4月份的时候提出了GraphRAG的概念&#xff0c;然后在上周开源了GraphRAG,Github链接见https://github.com/microsoft/graphrag,截止当前&#xff0c;已有6900Star。 安装教程 官方推荐使用Python3.10-3.12版本&#xff0c;我使用Python3.10版本安装时&#xff0c;在…...

【网络安全】实验七(ISA防火墙的规则设置)

一、实验目的 二、配置环境 打开两台虚拟机&#xff0c;并参照下图&#xff0c;搭建网络拓扑环境&#xff0c;要求两台虚拟机的IP地址要按照图中的标识进行设置&#xff0c;并根据搭建完成情况&#xff0c;勾选对应选项。注&#xff1a;此处的学号本人学号的最后两位数字&…...

实验代码结构介绍

提高模型复用性&#xff0c;让模型对应的配置更加清晰&#xff0c;代码书写条理 学习自https://zhuanlan.zhihu.com/p/409662511 Project ├── checkpoints # 存放模型 ├── data # 定义各种用于训练测试的数据集 ├── eval.py # 测试代码 ├── loss.py # 定义的…...

Java多线程不会?一文解决——

方法一 新建类如MyThread继承Thread类重写run()方法再通过new MyThread类来新建线程通过start方法启动新线程 案例&#xff1a; class MyThread extends Thread {public MyThread(String name) {super(name);}Overridepublic void run() {for(int i0;i<10;i){System.out.…...

Mac上pyenv的安装及使用

Mac上pyenv的安装及使用 安装 brew update brew install pyenv 报错 git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallowgit -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow那就执行这2句 还报错 git -C /…...

【SpringBoot】IDEA查看spring bean的依赖关系

前因&#xff1a;研究springcloud config组件时&#xff0c;我发现config-server包下的EnvironmentController不在扫描的包路径下却可以响应客户端的请求&#xff0c;这引起了我的注意&#xff0c;我的问题是&#xff1a;EnvironmentController是怎么被添加进bean工厂的。本章就…...

项目代码优化(1)——下单逻辑

给一个电商开发的系统排查&#xff0c;发现漏洞很多。很多经验不够的开发者很容易忽视的逻辑错误陷阱。在给一个项目做二次开发时候&#xff0c;检测到的相关经典案例。这里整理支付和产品相关的逻辑&#xff0c;方便后续查看。&#xff0c;这里进行一些简单的逻辑漏洞梳理与修…...

探索 WebKit 的缓存迷宫:深入理解其高效缓存机制

探索 WebKit 的缓存迷宫&#xff1a;深入理解其高效缓存机制 在当今快速变化的网络世界中&#xff0c;WebKit 作为领先的浏览器引擎之一&#xff0c;其缓存机制对于提升网页加载速度、减少服务器负载以及改善用户体验起着至关重要的作用。本文将深入探讨 WebKit 的缓存机制&am…...

JVM:介绍

文章目录 一、什么是JVM二、JVM的功能1、解释和运行2、内存管理3、即时编译 三、常见的JVM四、Java虚拟机规范五、HotSpot发展历程 一、什么是JVM JVM的全称为Java Virtual Machine&#xff0c;Java虚拟机。本质上是一个运行在计算机上的程序&#xff0c;职责是运行Java字节码…...

和鲸“101”计划领航!和鲸科技携手北中医,共话医学+AI 实验室建设及创新人才培养

为进一步加强医学院校大数据管理与应用、信息管理与信息系统&#xff0c;医学信息工程等专业建设&#xff0c;交流实验室建设、专业发展与人才培养经验&#xff0c;6 月 22 日&#xff0c;由北京中医药大学&#xff08;简称“北中医”&#xff09;主办&#xff0c;上海和今信息…...

Linux 网络抓包工具tcpdump编译

tcpdump 的编译步骤 1. 下载源代码 访问 tcpdump 的官方网站&#xff08;如&#xff1a;http://www.tcpdump.org/&#xff09;下载最新的源代码压缩包&#xff0c;如tcpdump-4.9.2.tar.gz&#xff08;注意版本号可能会有所不同&#xff09;。 2. 解压缩源代码 使用 tar 命令…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

JDK 17 新特性

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

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...