C#基础知识 - 操作数与运算符篇2
C#基础知识 - 操作数与运算符篇
- 4.2 运算符
- 4.2.1 按操作数个数分类
- 4.2.2 按运算类型分类
- 4.2.3 对运算符 ++、-- 的使用
- 4.2.4 关系运算符:>、 < 、>= 、<=、 != 、==
- 4.2.5 逻辑运算符:&& || ! ^ & |
- 4.2.6 位运算符:~ 、^、 & 、| 、<<、 >>
- 4.2.7 条件运算符:表达式1?表达式2:表达式3
- 4.3 对运算符的综合运用
更多C#基础知识详解请查看:C#基础知识 - 从入门到放弃
4.2 运算符
4.2.1 按操作数个数分类
C#中,运算符可以根据其操作数的个数分为一元、二元和三元运算符。
1、一元运算符(Unary Operators)
一元运算符只操作一个操作数,有以下常用:
递增运算符 (++), 递减运算符 (–), 正号运算符 (+), 负号运算符 (-), 逻辑非运算符 (!), 位取反运算符 (~) 等。
2、二元运算符(Binary Operators)
二元运算符操作两个操作数,有以下常用:
算术运算符 (+, -, *, /, %), 关系运算符 (==, !=, >, <, >=, <=), 逻辑与运算符 (&&), 逻辑或运算符 (||), 位与运算符 (&), 位或运算符 (|), 位异或运算符 (^), 左移运算符 (<<), 右移运算符 (>>) 等。
3、三元运算符(Ternary Operators)
三元运算符操作三个操作数,C#中仅有一个:
条件运算符 (condition ? trueValue : falseValue)。
4.2.2 按运算类型分类
1、算术运算符:
加法运算符:+
减法运算符:-
乘法运算符:*
除法运算符:/
取余运算符:%
2、关系运算符:
相等运算符:==
不相等运算符:!=
大于运算符:>
小于运算符:<
大于等于运算符:>=
小于等于运算符:<=
3、逻辑运算符:
逻辑与运算符:&&
逻辑或运算符:||
逻辑非运算符:!
4、赋值运算符:
简单赋值运算符:=
复合赋值运算符:+=, -=, *=, /=, %=
5、位运算符:
按位与运算符:&
按位或运算符:|
按位异或运算符:^
按位取反运算符:~
左移运算符:<<
右移运算符:>>
6、条件运算符:
条件表达式运算符:?:
7、成员访问和索引运算符:
成员访问运算符:.
索引访问运算符:[ ]
8、递增和递减运算符:
递增运算符:++
递减运算符:--
【示例】输入语文和数学成绩,打印出总成绩。
程序如下:
Console.WriteLine("请输入语文成绩:"); //输出
double Chinese = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入数学成绩:");
double Math = Convert.ToDouble(Console.ReadLine());
//Convert.ToDouble - 类型转换
//Console>ReadLine();默认是string类型,但是我们声明的变量是double类型,在接收到数据后需要转换类型
Console.WriteLine("你的总成绩是{0}", Chinese + Math);
Console.ReadKey();
执行程序:
请输入语文成绩:
86
请输入数学成绩:
93
你的总成绩是179
4.2.3 对运算符 ++、-- 的使用
++在前,先加再用;++在后,先用后加。(-- 相同)
程序代码:
int var1, var2, var3;
var1 = 2;
Console.WriteLine("var1的值是"+var1);
var2 = var1++; //先用后加,var2=2,var1=3
Console.WriteLine("var2的值是{0},此时var1的值是{1}" , var2,var1);
var3 = ++var1; //先加后用,var1=3+1=4,var3=4
Console.WriteLine("var3的值是{0},此时var1的值是{1}" ,var3, var1);
//提示:var1没有重新赋过值,并且一直在使用
Console.ReadKey();
运行程序:
var1的值是2
var2的值是2,此时var1的值是3
var3的值是4,此时var1的值是4
4.2.4 关系运算符:>、 < 、>= 、<=、 != 、==
运算后的结果是布尔值bool,true或者false
关系运算符的运算规则:
① 操作数为数值类型,则比较两个数的大小;
② 操作数为字符类型,则比较两个字符串的Unicode编码大小;
③ 操作数为i盎格字符串,则只能用==或者!=,只能比较字符串各个位字符是否相同
4.2.5 逻辑运算符:&& || ! ^ & |
| 逻辑符 | 结果 |
|---|---|
| & & | 全true为true |
| ll | 有true为true |
| ! | 取反!true=false;!false=true |
| ^ | 有且只有一个true为true |
| & | 全true为true |
| l | 有true为true |
在运用逻辑运算符表达式中需要注意运算优先级及运算特性,一下程序为例:
int a = 10;
int b = 15;
Console.WriteLine((10 == a++) || (16 == b--)); //结果为 True
Console.WriteLine("a的值为{0},b的值为{1}", a, b); //a=11,b=15
//在||运算后当前面一个表达式为true就不会运算后面表达式,b--没有执行,b=15
Console.ReadKey();
运行程序:
True
a的值为11,b的值为15
结果可见,b的值未发生变化,这是因为在 || 运算后当前面一个表达式为true就不会执行运算后面表达式,所以 b-- 不会被执行。
4.2.6 位运算符:~ 、^、 & 、| 、<<、 >>
| 运算符 | 结果 |
|---|---|
| ~ | 按位取反 |
| l | 有1为1 |
| & | 全1为1 |
| ^ | 异或:有且仅有一个1为1 |
<< var3 = var1 << var2 将var1d的值左移var2位赋值给var3
>> var3 = var1 >> var2 将var1d的值右移var2位赋值给var3
如果对十进制数字进行位运算符,需要将其转为二进制数据计算后在转为十进制结果。
【示例】5 & 4 =?
5的二进制表示:101
4的二进制表示:100
5 & 4的结果位:100 即为4
【示例】4 << 1 =?(左移乘2)
4 的二进制表示:100
左移一位后表示:1000 即为8
【示例】4 >> 1 =?(右移除2)
4 的二进制表示:100
右移一位后表示:010 即为2
4.2.7 条件运算符:表达式1?表达式2:表达式3
【示例】根据输入的数量,判断输出输出语句“I have 数量 pen(s)”。
程序代码:
//输出语句“I have 数量 pen(s)”
Console.WriteLine("输入拥有的钢笔数量:");
int qty = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("I have {0} pen{1}", qty, qty > 1 ? "s" : "");
Console.ReadKey();
运行程序:
输入拥有的钢笔数量:
1
I have 1 pen输入拥有的钢笔数量:
5
I have 5 pens
4.3 对运算符的综合运用
【示例】计算1232855秒是几天几小时几分几秒。
程序代码:
int time = 1232855;
int day = time / (24 * 3600);
int hour = time % (24 * 3600) / 3600;
int min = time % 3600 / 60;
int sec = time % 60;
Console.WriteLine("{0}秒是{1}天{2}小时{3}分种{4}秒", time, day, hour, min, sec);
Console.ReadKey();
运行结果:
1232855秒是14天6小时27分种35秒
相关文章:
C#基础知识 - 操作数与运算符篇2
C#基础知识 - 操作数与运算符篇 4.2 运算符4.2.1 按操作数个数分类4.2.2 按运算类型分类4.2.3 对运算符 、-- 的使用4.2.4 关系运算符:>、 < 、> 、<、 ! 、4.2.5 逻辑运算符:&& || ! ^ & |4.2.6 位运算符:~ 、^、 &…...
第十五章总结
一.输入/输出流 1.输入流 InputStrema类是字节输入流的抽象类,它是所有字节输入流的父类。 该类中所有方法遇到错误都会引发IOException异常。 read()方法:从输入流中读取数据的下一个字节。返回0~255的int字节值。如果因为已经到达流末尾而没有可用的…...
音频I2S
前言 基于网上资料对相关概念做整理汇总,部分内容引用自文后文章。 学习目标:简单了解相关概念、相关协议。 1 概述 数字音频接口DAI,即Digital Audio Interfaces,顾名思义,DAI表示在板级或板间传输数字音频信…...
小程序中的合法域名的作用及条件有哪些?
小程序的合法域名是指小程序项目中使用的各种接口、资源文件等所在的域名。在小程序开发中,需要将这些域名添加到小程序后台的“开发设置”-“服务器域名”中进行配置,才能够正常使用。 合法域名的作用: 1.作为小程序请求的 API 服务器域名…...
SpringData JPA 整合Springboot
1.导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0…...
打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion 黑白老照片上色修复
在这个时代,我们习惯于拥有高清、色彩丰富的照片,然而,那些古老的黑白色老照片由于年代的久远,往往会出现模糊、破损等现象。 那么今天要给大家介绍的是,用 Stable Diffusion 来修复老照片。 前段时间 ControlNet 的除了上线了“IP-Adapter”模型以外还增加另一个…...
第十三章总结
一.泛型 1.定义泛型类 泛型机制语法: 类名<T> 其中,T是泛型的名称,代表某一种类型。 【例13.6】创建带泛型的图书类 代码: 结果: 2.泛型的常规用法 (1)定义泛型类时声明多个变量 class MyClass<T1,T2…...
大模型应用_PrivateGPT
https://github.com/imartinez/privateGPT 1 功能 整体功能,想解决什么问题 搭建完整的 RAG 系统,与 FastGPT相比,界面比较简单。但是底层支持比较丰富,可用于知识库的完全本地部署,包含大模型和向量库。适用于保密级…...
[Android] ubuntu虚拟机上搭建 Waydroid 环境
1.安装虚拟机 略 2.安装waydroid Ubuntu/Debian and derivatives For Droidian and Ubuntu Touch, skip directly to the last step Install pre-requisites sudo apt install curl ca-certificates -y Add the official repository curl https://repo.waydro.id | sudo…...
LeedCode刷题---滑动窗口问题(二)
顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、将X减到0的最小操作数 题目链接:将 x 减到 0 的最小操作数 题目描述 给你一个整数数组 nums 和一个整数 x 。每一…...
pycharm依赖管理(不要用pip freeze)
在使用python虚拟环境时,可以使用requirements.txt来管理当前项目的依赖。 注意,不要用 pip freeze > requirements.txt 这个命令,因为它会引入很多无关的包。 可以使用 pipreqs ./ --encodingutf-8 ./ 表示当前项目的目录࿰…...
[Kafka 常见面试题]如何保证消息的不重复不丢失
文章目录 Kafka1. Kafka如何保证不丢失消息?生产者数据的不丢失消费者数据的不丢失Kafka集群中的broker的数据不丢失 2. Kafka中的消息是否会丢失和重复消费?1. 消息发送2. 消息消费 3. Kafka 的设计是什么样的呢?4. 数据传输的事务定义有哪三…...
Java中System.setProperty()用法
Java中System.setProperty()用法 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一起深入了解Java中的System.setProperty()方法,…...
Eclipse 自动生成注解,如果是IDEA可以参考编译器自带模版进行修改
IDEA添加自动注解 左上角选择 File -> Settings -> Editor -> File and Code Templates; 1、添加class文件自动注解: /*** <b>Function: </b> todo* program: ${NAME}* Package: ${PACKAGE_NAME}* author: Jerry* date: ${YEA…...
微信小程序vant安装使用过程中遇到无法构建npm的问题
官网地址,然而如果完全按照这个教程来,实际上是缺少步骤的,需要补充一些步骤(参考https://www.bilibili.com/video/BV1vL41127Er) # 这步init就是补充的 npm init npm i vant/weapp -S --production# 剩下的按照vant的…...
[python]用python获取EXCEL文件内容并保存到DBC
目录 关键词平台说明背景所需库实现过程方法1.1.安装相关库2.代码实现 关键词 python、excel、DBC、openpyxl 平台说明 项目Valuepython版本3.6 背景 在搭建自动化测试平台的时候经常会提取DBC文件中的信息并保存为excel或者其他文件格式,用于自动化测试。本文…...
Spring Boot 如何配置 log4j2
Log4j2 介绍 Spring Boot 中默认使用 Logback 作为日志框架,接下来我们将学习如何在 Spring Boot 中集成与配置 Log4j2。在配置之前,我们需要知道的是 Log4j2 是 Log4j 的升级版,它在 Log4j 的基础上做了诸多改进: 异步日志&…...
如何安装docker
安装Docker的步骤取决于您使用的操作系统。以下是常见操作系统上安装Docker的基本步骤: 对于Linux: 更新软件包索引: sudo apt-get update安装允许apt通过HTTPS使用仓库的包: sudo apt-get install apt-transport-https ca-certificates cur…...
Linux 之 性能优化
uptime $ uptime -p up 1 week, 1 day, 21 hours, 27 minutes$ uptime12:04:11 up 8 days, 21:27, 1 user, load average: 0.54, 0.32, 0.23“12:04:11” 表示当前时间“up 8 days, 21:27,” 表示运行了多长时间“load average: 0.54, 0.32, 0.23”“1 user” 表示 正在登录…...
用Go汇编实现一个快速排序算法
本代码全网首发,使用Go plan9 windows arm64汇编,实现基础版快速排序算法。 未引入随机因子的快速排序的普通Go代码长这样。 func QuickSort(arr []int) {if len(arr) < 1 {return}base, l, r : arr[0], 0, len(arr)-1for i : 1; i < r; {if arr…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...
