杂项运算符及运算符的优先级

文章目录

      • 常见的杂项运算符
      • 运算符的优先级
      • 特殊运算符
      • 运算符重载
      • 运算符的结合性
      • 实际应用中的注意事项
      • 1. 空条件运算符 (Null Coalescing Operator)
        • JavaScript 示例:
      • 2. 范围运算符 (Range Operator)
        • Swift 示例:
      • 3. 模式匹配运算符 (Pattern Matching)
        • Rust 示例:
      • 4. 解构赋值运算符 (Destructuring Assignment)
        • JavaScript 示例:
      • 5. 空安全运算符 (Null Safety Operator)
        • Kotlin 示例:
      • 6. 运算符重载 (Operator Overloading)
        • C++ 示例:
      • 7. 运算符的结合性 (Associativity)
        • Python 示例:

在编程语言中,运算符是用来执行特定类型的操作的符号。不同的编程语言可能有不同的运算符集以及不同的优先级规则。下面是一些常见的杂项运算符以及它们的优先级顺序概述。

常见的杂项运算符

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

    • 通常用于基于某个条件返回两个值中的一个。
    • 示例: a > b ? a : b; 如果 a > b 成立,则结果为 a,否则为 b
  2. 逗号运算符 (,)

    • 允许在一个表达式中执行多个操作,并返回最后一个表达式的值。
    • 示例: a = (b = 3, c = 5); 在这个例子中,先计算 b = 3,然后计算 c = 5,最后 a 被赋值为 5
  3. sizeof运算符

    • 返回对象或类型的字节大小。
    • 示例: sizeof(int) 返回整型变量所占的字节数。
  4. 类型转换运算符

    • 用于将一种数据类型转换为另一种数据类型。
    • 示例: (int)3.14 将浮点数转换为整数。
  5. 成员访问运算符 (.->)

    • . 用来访问结构体、类等的成员。
    • -> 通过指针访问结构体、类等的成员。
  6. 位运算符 (&, |, ^, ~, <<, >>)

    • 按位与 (&)、按位或 (|)、按位异或 (^)、按位取反 (~)、左移 (<<)、右移 (>>)。
    • 用于对二进制位进行操作。

运算符的优先级

运算符的优先级决定了表达式中哪个运算符先被计算。通常,具有较高优先级的运算符会首先被处理。以下是一个大致的优先级列表(从高到低):

  1. 括号 () [] . -> ++ --
  2. 函数调用 ()
  3. 取地址/间接引用 * &
  4. 一元运算符 + - ! ~ ++ -- (类型)
  5. 乘除模运算符 * / %
  6. 加减运算符 + -
  7. 移位运算符 << >>
  8. 关系运算符 < <= > >=
  9. 相等性运算符 == !=
  10. 按位与运算符 &
  11. 按位异或运算符 ^
  12. 按位或运算符 |
  13. 逻辑与运算符 &&
  14. 逻辑或运算符 ||
  15. 条件运算符 ?:
  16. 赋值运算符 = += -= *= /= %= &= ^= |= <<= >>=
  17. 逗号运算符 ,
    上述列表是针对C/C++等语言的一个通用示例,并非所有语言都遵循相同的规则。在实际使用中,请参考具体编程语言的手册以获取准确的优先级顺序。

接下来进一步探讨一些其他杂项运算符和特殊用法,以及如何在代码中有效地使用它们。这里有一些额外的内容:

特殊运算符

  1. 空条件运算符 (??)

    • 一些语言如 C# 和 JavaScript 中提供此运算符,它返回第一个非空值。
    • 示例: a ?? b ?? c 如果 anull 或未定义,则返回 b;如果 b 也是 null 或未定义,则返回 c
  2. 范围运算符 (..)

    • 一些语言如 Python 和 Swift 提供此运算符来生成一系列数字或索引范围。
    • 示例: for i in 1..5 循环遍历 1 到 5。
  3. 模式匹配运算符 (match)

    • 一些函数式编程语言如 Rust 和 Scala 使用此运算符来进行模式匹配。
    • 示例:
      match some_value {Some(x) => println!("Got a value: {}", x),None => println!("No value"),
      }
      
  4. 解构赋值运算符

    • 一些现代语言如 JavaScript 支持解构赋值,可以从数组或对象中提取值并直接赋给变量。
    • 示例:
      let [a, b] = [10, 20];
      let {x, y} = {x: 10, y: 20};
      
  5. 空安全运算符 (?.)

    • 在一些语言如 Kotlin 和 Dart 中,可以用来安全地访问可能为 null 的对象的属性或方法。
    • 示例: obj?.property 如果 objnull,则返回 null,否则返回 obj.property 的值。

运算符重载

  • 许多面向对象的语言允许你为用户定义的类型定义自己的运算符行为,这被称为运算符重载。
  • 示例: 在 C++ 中,你可以为类定义 operator+ 方法来实现两个对象之间的加法操作。

运算符的结合性

  • 当运算符具有相同的优先级时,结合性决定了运算符的顺序。大多数二元运算符是从左到右结合(左结合),但有些运算符如赋值运算符是从右到左结合(右结合)。

实际应用中的注意事项

  • 括号的使用:使用括号可以帮助明确运算符的优先级,即使不是必需的,也可以增加代码的可读性。
  • 运算符组合:理解不同运算符如何组合在一起工作是非常重要的,特别是当涉及到复杂的表达式时。
  • 避免不必要的运算:尽量减少不必要的计算,特别是在性能敏感的代码中。

下面我将给出一些具体的应用实例,展示上述提到的一些特殊运算符和概念在实际编程中的使用。

1. 空条件运算符 (Null Coalescing Operator)

JavaScript 示例:
let a = null;
let b = 10;
let c = 20;// 使用 ?? 运算符获取第一个非空值
let result = a ?? b ?? c; // 结果为 10
console.log(result);

2. 范围运算符 (Range Operator)

Swift 示例:
for i in 1..<5 {print(i) // 打印 1, 2, 3, 4
}

3. 模式匹配运算符 (Pattern Matching)

Rust 示例:
enum Number {One,Two,Three,
}fn main() {let number = Number::Two;match number {Number::One => println!("One"),Number::Two => println!("Two"),Number::Three => println!("Three"),}
}

4. 解构赋值运算符 (Destructuring Assignment)

JavaScript 示例:
let [first, second] = [10, 20];console.log(first); // 输出 10
console.log(second); // 输出 20let obj = {x: 10, y: 20};let {x, y} = obj;console.log(x); // 输出 10
console.log(y); // 输出 20

5. 空安全运算符 (Null Safety Operator)

Kotlin 示例:
data class Person(val name: String?)fun main() {val person = Person(null)val name = person.name?.length ?: 0 // 如果 name 为 null,则返回 0println(name) // 输出 0
}

6. 运算符重载 (Operator Overloading)

C++ 示例:
#include <iostream>
#include <string>class Complex {
public:double real, imag;Complex(double r = 0, double i = 0) : real(r), imag(i) {}// 运算符重载Complex operator+(const Complex& other) const {return Complex(real + other.real, imag + other.imag);}friend std::ostream& operator<<(std::ostream& os, const Complex& complex) {os << complex.real << (complex.imag >= 0 ? "+" : "") << complex.imag << "i";return os;}
};int main() {Complex c1(1, 2);Complex c2(3, 4);Complex sum = c1 + c2;std::cout << "Sum is: " << sum << std::endl; // 输出 Sum is: 4+6ireturn 0;
}

7. 运算符的结合性 (Associativity)

Python 示例:
# 运算符的结合性示例
result = 10 - 5 - 2  # 结果为 3,因为减法从左到右结合
print(result)  # 输出 3

以上示例展示了不同编程语言中特殊运算符的具体应用。

😍😍 海量H5小游戏、微信小游戏、Web casualgame源码😍😍
😍😍试玩地址: https://www.bojiogame.sg😍😍
😍看上哪一款,需要源码的csdn私信我😍

————————————————

​最后我们放松一下眼睛
在这里插入图片描述

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

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

相关文章

C# 12 新增功能实操!

前言 今天咱们一起来探索并实践 C# 12 引入的全新功能&#xff01; C#/.NET该如何自学入门&#xff1f; 注意&#xff1a;使用这些功能需要使用最新的 Visual Studio 2022 版本或安装 .NET 8 SDK 。 主构造函数 主构造函数允许你直接在类定义中声明构造函数参数&#xff0c;…

从零开始编写一个Chrome插件:详细教程

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

Pytorch笔记1

建议点赞收藏关注&#xff01;持续更新至pytorch大部分内容更完。 整体框架如下 目录 gpu加速数据数据结构张量TensorVariable 预处理数据增强 模型构建模块组织复杂网络初始化网络参数定义网络层 损失函数创建损失函数设置损失函数超参数选择损失函数 优化器管理模型参数管理…

“八股文”:程序员的福音还是梦魇?

——一场关于面试题的“代码战争” 在程序员的世界里&#xff0c;“八股文”这个词儿可谓是“如雷贯耳”。不&#xff0c;咱们可不是说古代科举考试中的那种八股文&#xff0c;而是指程序员面试中的那些固定套路的题目。如今&#xff0c;各大中小企业在招聘程序员时&#xff0…

Overlay网络

Overlay 介绍 Overlay网络是将已有的物理网络&#xff08;Underlay网络&#xff09;作为基础&#xff0c;在其上建立叠加的逻辑网络&#xff0c;实现网络资源的虚拟化。 传统网络带来了以下一些问题&#xff1a; ● 虚拟机规模受 网络规格限制在传统二层网络环境下&#xff0…

泰迪智能科技大数据实验室——陕西省高校合作成功案例

近年来&#xff0c;陕西省紧跟国家大数据发展战略&#xff0c;积极推进大数据产业发展。在政策扶持、产业布局、技术创新等方面取得显著成效。泰迪智能科技大数据实验室立足陕西&#xff0c;携手西安邮电大学、西安财经大学、陕西科技大学镐京学院、宝鸡文理学院、渭南师范学院…

使用Selenium爬虫批量下载AlphaFold数据库中的PDB文件

注意&#xff1a;本方法使用了python&#xff0c;下载速度一般&#xff0c;如果需要更快的大批量下载可以考虑使用其他方法&#xff0c;例如FTP Alphafold数据库其实提供了许多物种的蛋白质组&#xff1a; AlphaFold Protein Structure Database 但是如果你搜索的物种不在这个…

【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化

从0制作自己的ros导航小车 前言一、ros1多机通讯二、rviz可视化小车坐标系 前言 上节课完成了里程计数据与坐标变换发布&#xff0c;但是还没有测试&#xff0c;本节进行测试&#xff0c;测试之前需要知道一件事&#xff0c;上位机也就是开发板一般不做可视化用&#xff0c;因…

Python 教程(七):match...case 模式匹配

目录 专栏列表前言基本语法match 语句case 语句 模式匹配的类型示例具体值匹配类型匹配序列匹配星号表达式命名变量复杂匹配 模式匹配的优势总结 专栏列表 Python教程&#xff08;一&#xff09;&#xff1a;环境搭建及PyCharm安装Python 教程&#xff08;二&#xff09;&…

NASA:水瓶座官方发布的第 3 级辅助雷诺兹海面温度标准映射图像降序年度数据 V3.0

Aquarius Official Release Level 3 Ancillary Reynolds Sea Surface Temperature Standard Mapped Image Descending Annual Data V5.0 水瓶座官方发布的第 3 级辅助雷诺兹海面温度标准映射图像降序年度数据 V5.0 (AQUARIUS_L3_ANCILLARY_SST_SMID_ANNUAL_V5) 简介 水瓶座 3…

Golang | Leetcode Golang题解之第301题删除无效的括号

题目&#xff1a; 题解&#xff1a; func checkValid(str string, lmask, rmask int, left, right []int) bool {cnt : 0pos1, pos2 : 0, 0for i : range str {if pos1 < len(left) && i left[pos1] {if lmask>>pos1&1 0 {cnt}pos1} else if pos2 <…

FFmpeg实战 - 解复用解码

文章目录 前置知识音视频基础概念解复用、解码的流程分析FFMPEG有8个常用库 常见音视频格式的介绍aac格式介绍h264格式介绍flv格式介绍mp4格式介绍 FFmpeg解码解封装实战数据包和数据帧&#xff08;AVPacket/AVFrame&#xff09;AVPacket/AVFrame的引用计数问题API介绍注意事项…

实习日志2之windows上大模型(qwen2-7b)部署

一、模型部署 1、下载ollama(大模型本地部署工具)&#xff0c;并安装 下载网址&#xff1a;https://ollama.com/ ollama是大模型部署方案&#xff0c;对应docker&#xff0c;本质也是基于docker的容器化技术。 2、下载大模型 在命令框&#xff0c;如windows系统在cmd窗口输…

笔试练习day1

目录 数字统计题目解析解法(枚举数字拆分)代码 两个数组的交集题目解析解法哈希表代码 点击消除题目解析解法栈代码 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412; 个人主页 &#x1f978;&#x1f978;&#x1f97…

开源AI智能名片小程序源码在对立型定位策略中的应用与深入探索

摘要&#xff1a;在当今数字化营销风起云涌的时代&#xff0c;开源AI智能名片小程序源码作为技术创新的前沿阵地&#xff0c;为中小企业及后发创业品牌提供了实现差异化竞争与市场突破的利器。本文旨在深入探讨开源AI智能名片小程序源码如何有效融入对立型定位策略之中&#xf…

二进制部署k8s集群之master节点和etcd数据库集群(上)

目录 1.操作系统初始化配置 2.升级Linux内核 3.部署docker引擎 4.部署etcd集群 4.1 了解etcdctl工具对etcd做增删改查 4.2 通过etcdctl工具实现数据库的备份和恢复 5.部署Master组件 6.部署 Worker Node 组件 二进制搭建 Kubernetes v1.20 k8s集群master01&#xff1a…

【Cyber RT】Apollo Cyber RT安装, 环境搭建,test ok

一、下载源码 克隆Apollo 源码仓库 git clone https://gitee.com/ApolloAuto/apollo.git (耗时30min) 二、启动Apollo Docker 开发容器 进入到Apollo源码根目录,执行下述命令以启动Apollo Docker开发容器 cd apollo ./docker/scripts/dev_start.sh 如果只是使用Cyber…

经典文献阅读之--GraphAD(端到端自动驾驶的交互场景图)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&…

使用IPIDEA海外代理助力宠物跨境电商1.1

3.如何获取具体分类的数据&#xff1f; 以前我们做选品&#xff0c;通常会招聘多个运营专员&#xff0c;每隔几小时去亚马逊平台上查看猫狗商品数据&#xff0c;然后人工把数据一条一条复制粘贴下来。通常一遍做下来&#xff0c;1-2小时就过去了&#xff08;根据数据样本的大小…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 围棋的气(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…