当前位置: 首页 > 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 命令…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

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

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

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...