C#教程5:操作算子(1)
一、C# 操作
表达式由操作数和运算符构成。表达式的运算符指示将哪些操作应用于操作数。表达式中运算符的求值顺序由运算符的优先级和关联性决定
操作符是一个特殊符号,表示执行了某个过程。编程语言中的运算符取自数学。程序员处理数据。运算符用于处理数据。操作数是运算符的输入(参数)之一。
二、C# 操作列表
下表显示了 C# 语言中使用的一组运算符。
Category | Symbol |
---|---|
Sign operators |
+ -
|
Arithmetic |
+ - * / %
|
Logical (boolean and bitwise) |
& | ^ ! ~ && || true false
|
String concatenation |
+
|
Increment, decrement |
++ --
|
Shift |
<< >>
|
Relational |
== != < > <= >=
|
Assignment |
= += -= *= /= %= &= |= ^= ??= <<= >>=
|
Member access |
. ?.
|
Indexing |
[] ?[]
|
Cast | |
Ternary |
?:
|
Delegate concatenation and removal |
+ -
|
Object creation |
new
|
Type information |
as is sizeof typeof
|
Overflow exception control |
checked unchecked
|
Indirection and address |
* -> [] &
|
Lambda |
=>
|
一个运算符通常有一个或两个操作数。那些只使用一个操作数的运算符称为一元运算符。使用两个操作数的那些称为二元运算符。还有一个三元运算符?:,它与三个操作数一起使用。
某些运算符可能会在不同的上下文中使用。例如 + 运算符。从上表我们可以看出它在不同的情况下使用。它添加数字、连接字符串或委托;表示数字的符号。我们说运算符超载。
三 C# 一元运算符
C# 一元运算符包括:+、-、++、-、强制转换运算符 () 和否定!。
3.1 C# 符号操作
有两个符号运算符:+ 和 -。它们用于指示或更改值的符号。
Program.cs
Console.WriteLine(2); Console.WriteLine(+2); Console.WriteLine(-2);
+ 和 - 符号表示值的符号。加号可以用来表示我们有一个正数。它可以省略,而且大部分都是这样做的。
Program.cs
int a = 1; Console.WriteLine(-a); Console.WriteLine(-(-a));
减号更改值的符号。
$ dotnet run -1 1
3.2 C# 增和减操作
将值递增或递减 1 是编程中的常见任务。 C# 有两个方便的运算符:++ 和 --。
x++; x = x + 1; ... y--; y = y - 1;
上述两对表达式的作用相同。
Program.cs
int x = 6;x++; x++;Console.WriteLine(x);x--; Console.WriteLine(x);
在上面的示例中,我们演示了这两个运算符的用法。
int x = 6;x++; x++;
我们将 x 变量初始化为 6。然后我们将 x 增加两次。现在变量等于 8。
x--;
我们使用递减运算符。现在变量等于 7。
$ dotnet run 8 7
3.3 C# 显式转换运算符
显式转换运算符 () 可用于将类型转换为另一种类型。请注意,此运算符仅适用于某些类型。
Program.cs
float val = 3.2f; int num = (int) val;Console.WriteLine(num);
在示例中,我们将浮点类型显式转换为 int。
3.4 否定运算符
否定运算符 (!) 反转其操作数的含义。
Program.cs
var isValid = false;if (!isValid) {Console.WriteLine("The option is not valid"); }
在示例中,我们构建了一个否定条件:如果表达式的逆表达式有效,则执行该条件。
四、C# 赋值运算符
赋值运算符 = 为变量赋值。变量是值的占位符。在数学中,= 运算符具有不同的含义。在等式中,= 运算符是等式运算符。等式的左边等于右边。
int x = 1;
在这里,我们为 x 变量分配了一个数字。
x = x + 1;
前面的表达式在数学中没有意义。但在编程中是合法的。该表达式将 1 添加到 x 变量。右侧等于 2,并且 2 分配给 x。
3 = x;
此代码示例导致语法错误。我们不能为文字赋值。
五、C# 连接字符串
+ 运算符也用于连接字符串。
Program.cs
Console.WriteLine("Return " + "of " + "the king.");
我们使用字符串连接运算符将三个字符串连接在一起。
$ dotnet run Return of the king.
六、C# 算术运算符
以下是 C# 中的算术运算符表。
Symbol | Name |
---|---|
+
|
Addition |
-
|
Subtraction |
*
|
Multiplication |
/ | Division |
%
|
Remainder |
以下示例显示算术运算。
Project.cs
int a = 10; int b = 11; int c = 12;int add = a + b + c; int sb = c - a; int mult = a * b; int div = c / 3; int rem = c % a;Console.WriteLine(add); Console.WriteLine(sb); Console.WriteLine(mult); Console.WriteLine(div); Console.WriteLine(rem);
在前面的示例中,我们使用了加法、减法、乘法、除法和余数运算。这在数学上都很熟悉。
int rem = c % a;
% 运算符称为余数或模运算符。它找到一个数字除以另一个数字的余数。例如,9 % 4, 9 模 4 为 1,因为 4 进入 9 两次,余数为 1。
$ dotnet run 33 2 110 4 2
接下来我们展示整数除法和浮点除法之间的区别。
Program.cs
int c = 5 / 2; Console.WriteLine(c);double d = 5 / 2.0; Console.WriteLine(d);
在前面的示例中,我们将两个数字相除。
int c = 5 / 2; Console.WriteLine(c);
在这段代码中,我们完成了整数除法。除法运算的返回值是一个整数。当我们将两个整数相除时,结果是一个整数。
double d = 5 / 2.0; Console.WriteLine(d);
如果其中一个值是双精度或浮点数,我们执行浮点除法。在我们的例子中,第二个操作数是一个双精度数,所以结果是一个双精度数。
$ dotnet run 2 2.5
七、 C# 布尔操作
在 C# 中,我们有三个逻辑运算符。 bool 关键字用于声明布尔值。
Symbol | Name |
---|---|
&&
|
logical and |
||
|
logical or |
!
|
negation |
布尔运算符也称为逻辑运算符。
Program.cs
int x = 3; int y = 8;Console.WriteLine(x == y); Console.WriteLine(y > x);if (y > x) {Console.WriteLine("y is greater than x"); }
许多表达式产生一个布尔值。布尔值用于条件语句。
Console.WriteLine(x == y); Console.WriteLine(y > x);
关系运算符总是产生一个布尔值。这两行打印 false 和 true。
if (y > x) {Console.WriteLine("y is greater than x"); }
仅当满足括号内的条件时,才会执行 if 语句的主体。 y > x 返回 true,因此将消息“y 大于 x”打印到终端。
true 和 false 关键字表示 C# 中的布尔文字。
Program.cs
bool a = true && true; bool b = true && false; bool c = false && true; bool d = false && false;Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c); Console.WriteLine(d);
示例显示了逻辑和运算符。只有当两个操作数都为真时,它才会计算为真。
$ dotnet run True False False False
只有一个表达式的结果为 True。
逻辑或 ||如果任一操作数为真,则运算符的计算结果为真。
Program.cs
bool a = true || true; bool b = true || false; bool c = false || true; bool d = false || false;Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c); Console.WriteLine(d);
如果运算符的一侧为真,则运算结果为真。
$ dotnet run True True True False
四个表达式中的三个结果为真。
否定运算符!使真为假,使假为真。
Program.cs
Console.WriteLine(!true); Console.WriteLine(!false); Console.WriteLine(!(4 < 3));
该示例显示了否定运算符的作用。
$ dotnet run False True True
|| 和 && 运算符进行短路评估。短路求值是指仅在第一个参数不足以确定表达式的值时才对第二个参数进行求值:当第一个参数的逻辑和求值为假时,整体值必须为假;并且当逻辑或的第一个参数评估为真时,整体值必须为真。短路评估主要用于提高性能。
一个例子可以更清楚地说明这一点。
Program.cs
Console.WriteLine("Short circuit");if (One() && Two()) {Console.WriteLine("Pass"); }Console.WriteLine("#############");if (Two() || One()) {Console.WriteLine("Pass"); }bool One() {Console.WriteLine("Inside one");return false; }bool Two() {Console.WriteLine("Inside two");return true; }
我们在示例中有两种方法。它们用作布尔表达式中的操作数。
if (One() && Two()) {Console.WriteLine("Pass"); }
One 方法返回 false。短路 && 不评估第二种方法。没有必要。一旦操作数为假,逻辑结论的结果始终为假。只有“Inside one”只打印到控制台
.
Console.WriteLine("#############");if (Two() || One()) {Console.WriteLine("Pass"); }
在第二种情况下,我们使用 ||运算符并使用 Two 方法作为第一个操作数。在这种情况下,“Inside two”和“Pass”字符串被打印到终端。再次没有必要评估第二个操作数,因为一旦第一个操作数评估为真,逻辑或始终为真。
$ dotnet run Short circuit Inside one ############# Inside two Pass
八、C# 不等关系
关系运算符用于比较值。这些运算符总是产生布尔值。
Symbol | Meaning |
---|---|
<
|
less than |
<=
|
less than or equal to |
>
|
greater than |
>=
|
greater than or equal to |
==
|
equal to |
!=
|
not equal to |
关系运算符也称为比较运算符。
Program.cs
Console.WriteLine(3 < 4); Console.WriteLine(3 == 4); Console.WriteLine(4 >= 3); Console.WriteLine(4 != 3);
在代码示例中,我们有四个表达式。这些表达式比较整数值。每个表达式的结果要么为真,要么为假。在 C# 中,我们使用 == 来比较数字。某些语言(如 Ada、Visual Basic 或 Pascal)使用 = 来比较数字。
九 C#二元运算
十进制数对人类来说是很自然的。二进制数是计算机固有的。二进制、八进制、十进制或十六进制符号只是相同数字的符号。位运算符使用二进制数的位。位运算符很少在 C# 等高级语言中使用。
Symbol | Meaning |
---|---|
~
|
bitwise negation |
^
|
bitwise exclusive or |
&
|
bitwise and |
|
|
bitwise or |
按位取反运算符将每个 1 更改为 0 并将 0 更改为 1。
Console.WriteLine(~ 7); // prints -8 Console.WriteLine(~ -8); // prints 7
运算符将数字 7 的所有位还原。其中一位还确定该数字是否为负数。如果我们再一次否定所有位,我们再次得到数字 7。
按位和运算符在两个数字之间执行逐位比较。仅当操作数中的两个对应位均为 1 时,位位置的结果才为 1。
00110& 00011= 00010
第一个数字是二进制的 6,第二个是 3,结果是 2。
Console.WriteLine(6 & 3); // prints 2 Console.WriteLine(3 & 6); // prints 2
按位或运算符在两个数字之间执行逐位比较。如果操作数中的任一对应位为 1,则位位置的结果为 1。
00110| 00011= 00111
The result is 00110
or decimal 7.
Console.WriteLine(6 | 3); // prints 7 Console.WriteLine(3 | 6); // prints 7
按位异或运算符在两个数字之间执行逐位比较。如果操作数中相应位的一个或另一个(但不是两个)为 1,则位位置的结果为 1。
00110^ 00011= 00101
The result is 00101
or decimal 5.
Console.WriteLine(6 ^ 3); // prints 5 Console.WriteLine(3 ^ 6); // prints 5
C#教程5:操作算子(1)相关推荐
- pyqt5 发送键盘信号_Python教程 | Pyqt5实战教程之操作交互处理,原来这么简单!...
PyQt5用来编写Python脚本的应用界面.本文详细介绍PyQt5教程之操作交互处理,并通过丰富的实战提高文章的可读性.在教程后面会附带PyQt5操作交互处理常见问题. 一.前言: 不管在PyQt还 ...
- js系列教程7-DOM操作全解
全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...
- js系列教程6-BOM操作全解
全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...
- jquery系列教程3-DOM操作全解
全栈工程师开发手册 (作者:栾鹏) 快捷链接: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件 ...
- Apifox 生成接口文档 教程与操作步骤
接口文档自动生成 本文主要介绍使用 apifox 如何生成接口文档,附上详细的使用教程和操作步骤. 使用Apifox 的可以自动生成接口文档.本文会给大家介绍下如何使用Apifox 来自动生成所需的接 ...
- python教程自带数据库_Python入门进阶教程-数据库操作
Python数据库操作Python版本3.8.0,开发工具:Pycharm 建议本节在掌握了数据库相关操作后再进行学习 MySQL 是最流行的关系型数据库管理系统.本小节通过Python对MySQL数 ...
- synopsys破解教程具体操作
synopsys破解教程具体操作 本破解已经验证适用2012.03以上各个版本,包括2015.06 下载对应版本的安装包 安装Installer_v3.2 并进入对应的文件夹,运行./setup.sh ...
- Selenium教程(4)操作选择框
目录 Selenium教程(1)选择和查找基本元素 Selenium教程(2)CSS元素操作 Selenium教程(3)IFrame切换/窗口切换 Selenium教程(4)操作选择框 1.选择框操作 ...
- 计算机应用基础与操作,计算机应用基础教程与操作实例(Windows7+Office2010)/21世纪高等职业教育规划教材·计算机公共课系列...
<计算机应用基础教程与操作实例(Windows7+Office2010)/21世纪高等职业教育规划教材·计算机公共课系列>结合高等职业教育培养高技能型人才的特点,根据教育部新制定的< ...
- 安装 MySql5.7 详细教程,操作简单(Windows版本)
文章目录 安装 MySql5.7 (解压版) 详细教程,操作简单(Windows版本) 1.官网下载MySql 2.解压,安装 3.环境变量 4.初始化数据库 5.安装MySql 6.启动或者停止服务 ...
最新文章
- appium: adb server is out of date.killing
- class 第一个元素_第二章(第3节):网页元素定位和操作
- Oracle RMAN Recover中使用BBED 跳过缺失的归档 继续 Recover 的测试
- 欧几里得算法(即辗转相除法)的时间复杂度
- jdk8 calendar_JDK 8的Calendar.Builder
- LeetCode 317. 离建筑物最近的距离(逆向BFS)*
- 大数据_Flink_数据处理_运行时架构7_程序结构和数据流图---Flink工作笔记0022
- 变性、衰老、染发后长啥样?简易版StarGAN全知道 | 代码
- Android图形系统之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的联系
- 【计算机组成原理】计算机系统概述 —— 计算机硬件组成与性能指标
- idea各工作区背景颜色设置
- 【蓝桥杯单片机组模块】15、PWM学习(总结版)
- PhotoShop简单案例(3)——利用ps实现多图合成(多张小图片拼成一张大图片)
- sqlserver中查询(升序、降序、top、百分比)
- 2021年安全生产模拟考试(全国特种作业操作证电工作业-继电保护模拟考试题库一)安考星
- 计算机专业英语材料,计算机专业英语复习资料
- foo java_Java的类型参数通配符到底意味着什么? Foo和Foo ?之间的真正区别是什么?...
- 【学习笔记】无限极分类学习
- 为什么我的单片机不是“跑车”而是“牛车”,过来人告诉你。
- AI基础——一阶谓词逻辑表示法