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秒是146小时27分种35

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

✺ch5——纹理贴图

目录 加载纹理图像文件纹理坐标在着色器中使用纹理&#xff1a;采样器变量和纹理单元纹理贴图&#xff1a;示例程序多级渐远纹理贴图各向异性过滤环绕和平铺透视变形材质——更多OpenGL细节补充说明 纹理贴图是在栅格化的模型表面上覆盖图像的技术。 它是为渲染场景添加真实感的…

宏基因组学Metagenome-磷循环Pcycle功能基因分析-从分析过程到代码及结果演示-超详细保姆级流程

大背景介绍 生信分析,凡事先看论文,有了论文就有了参考,后续分析就有底了,直接上硬菜开干: PCycDB: a comprehensive and accurate database for fast analysis of phosphorus cycling genes - PubMed 数据库及部分分析代码github库: GitHub - ZengJiaxiong/Phospho…

docker 与 ffmpeg

创建容器 docker run -it -v /mnt/f/ffmpeg:/mnt/f/ffmpeg --name ffmpeg 49a981f2b85f /bin/bash 在 Linux 上编译 FFmpeg&#xff1a; 安装依赖库&#xff1a; sudo apt-get update sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget下…

SpringCloud-高级篇(八)

&#xff08;1&#xff09;TCC模式 前面学了XA和AT模式&#xff0c;这两种模式最终都能实现一致性&#xff0c;和隔离性&#xff0c;XA是强一致&#xff0c;AT是最终一致&#xff0c;隔离性呢XA是在第一阶段不提交&#xff0c;基于事务本身的特性来完成隔离&#xff0c;AT则是…

Python都有什么特性,为什么适合每个人学习?详细解读来了

Python编程语言简介 Python&#xff0c;一种高层次的、解释型的编程语言&#xff0c;以其跨平台性、易读性和灵活性在全球编程界占据了重要的地位。自1991年首次发布以来&#xff0c;Python已经成为了无数程序员和企业的首选语言&#xff0c;尤其是在快速开发和原型设计方面。 …

Ansible:模块1

Ansible&#xff1a; 远程操作主机功能 自动化运维&#xff08;playbook 剧本 yaml&#xff09; 是基于python开发的配置管理和应用部署工具。在自动化运维中&#xff0c;现在是一军突起。 Ansible能批量配置&#xff0c;部署&#xff0c;管理上千台主机。类似于xshell的一…

MFC 程序执行流程

目录 MFC 程序启动 MFC 入口函数 程序执行流程总结 在Win32课程中WinMain由程序员自己实现&#xff0c;那么流程是程序员安排&#xff0c;但到了MFC中&#xff0c;由于MFC库实现WinMain&#xff0c;也就意味着MFC负责安排程序的流程。 MFC 程序启动 程序的启动&#xff0c;…

红枣期货个股(红枣期货个股:投资方向分析)

红枣期货个股介绍 红枣是我国传统的绿色健康食品&#xff0c;具有营养丰富、味道独特的特点&#xff0c;深受消费者喜爱。红枣产业链较长&#xff0c;包括种植、采摘、加工、销售等环节&#xff0c;其中期货是红枣产业不可或缺的一环。红枣期货个股作为期货交易市场上的重要投…

mybatis中oracle的sql没走索引导致特别慢(未加jdbcType的)

如果直接跑sql是能走索引很快&#xff0c;在mybatis中不能&#xff0c;可能就是jdbcType的原因。 比如&#xff0c;我有一个属性A&#xff0c;在表里面是VARCHAR2类型&#xff0c;但是在mybatis中的sql是#{a}&#xff0c;缺少jdbcTypeJdbcType.VARCHAR&#xff0c;就会导致myba…

risc-v system instruction

ECALL ecall 指令以前叫做 scall&#xff0c;用于执行环境的变更&#xff0c;它会根据当前所处模式触发不同的执行环境切换异常, 用来执行需要更高权限才能执行的功能;简单来说&#xff0c;ecall 指令将权限提升到内核模式并将程序跳转到指定的地址。操作系统内核和应用程序其实…

AD采集卡设计方案:630-基于PCIe的高速模拟AD采集卡

基于PCIe的高速模拟AD采集卡 一、产品概述 基于PCIe的一款分布式高速数据采集系统&#xff0c;实现多路AD的数据采集&#xff0c;并通过PCIe传输到存储计算服务器&#xff0c;实现信号的分析、存储。 北京太速科技&#xff0c;产品固化FPGA逻辑&#xff0c;适配2路…

ShardingSphere-JDBC 和 ShardingSphere-Proxy,你选择哪一个

参考文章 总结&#xff1a; 只使用Java&#xff0c;ShardingSphere-JDBC更好有异构语言的话&#xff0c;ShardingSphere-Proxy 更好混用也挺香

Flink系列之:监控Checkpoint

Flink系列之&#xff1a;监控Checkpoint 一、概览二、概览&#xff08;Overview&#xff09;选项卡三、历史记录&#xff08;History&#xff09;选项卡四、历史记录数量配置五、摘要信息&#xff08;Summary&#xff09;选项卡六、配置信息&#xff08;Configuration&#xff…

100GPTS计划-AI动漫AnimeArtisan

地址 https://poe.com/AnimeArtisan https://chat.openai.com/g/g-LM6ObVhfF-anime-artisan 测试 风景类: 阳光、蓝天、白云、大海、海滩、森林、瀑布、山峰、雪山 日常类: 睡觉、跑步、学习、工作、做家务、看书、听音乐、运动、购物、煮饭 人物类: 女孩、男孩、老人、儿童…

『 Linux 』重新理解挂起状态

文章目录 &#x1f984; 前言新建状态 &#x1f40b;挂起状态 &#x1f40b;唤入唤出 &#x1f40b;进程与操作系统间的联系 &#x1f40b; &#x1f984; 前言 『 Linux 』使用fork函数创建进程与进程状态的查看中提到了对挂起状态的一个理解&#xff1b; ​ 挂起状态相比于其…

爬虫练习-获取imooc课程目录

代码&#xff1a; from bs4 import BeautifulSoup import requests headers{ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0, }id371 #课程id htmlrequests.get(https://coding.imooc.com/class/chapter/id.html#Anchor,head…

kubernetes 学习笔记

1. Kubernetes 介绍 1.1 应用部署方式的演变 在部署应用程序的方式上&#xff0c;主要经理了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上。虚拟化部署&#xff1a;可以在一台物理机上运行多个虚拟机&#xff0c;每个虚…

高可用接入层技术演化及集群概述

集群概述 集群的介绍及优势 集群&#xff1a;将多台服务器通过硬件或软件的方式组合起来&#xff0c;完成特定的任务&#xff0c;而这些服务器对外表现为一个整体。集群的优势 高可靠性&#xff1a;利用集群管理软件&#xff0c;当主服务器故障时&#xff0c;备份服务器能够自…

Cesium 加载 Geoserver WMS 图层以及条件查询和切换图层样式

Cesium 加载 Geoserver WMS 图层以及条件查询和切换图层样式 图层样式核心代码完整代码&#xff1a;在线示例 Cesium 加载 Geoserver WMS 图层&#xff0c;在实际项目中常常会遇到&#xff0c;需要对图层进行过滤&#xff0c;这里介绍一下过滤方法。 Cesium Geoserver 图层条件…

AirPodsPro3爆料汇总,2025年发布?

不止是iPhone&#xff0c;苹果的AirPods Pro系列耳机也是非常受用户青睐的一款产品&#xff0c;相信不少果粉都非常期待它的升级换代。 第一代AirPods Pro于2019年10月发布&#xff0c;第二代AirPods Pro于2022年9月发布&#xff0c;按照这个时间线来看的话&#xff0c;第三代A…