(4)C# 基础 ——运算符的使用
2018年08月13日 17:05:25 编程菜鸟0604号 阅读数 1067
.NET C# Web开发学习之路——运算符的使用
运算符针对操作数进行,同时产生计算结果。运算符是一种专门用来处理数据运算的特殊符号,数据变量结构运算符形成完整的程序运算语句。
1. 算术运算符
“+”,“-”,“/”,“*”,“%”运算符都称为算数运算符,他们分别进行加、减、除、乘、取余运算。
//加法运算符 +
int m1 = 927;
int m2;
m2 = m1 + m1;
Console.WriteLine("加法运算符 + :{0}", m2.ToString());
//减法运算符 -
decimal r1 = (decimal)1112.82;
decimal r2 = (decimal)9270.81;
decimal r3;
r3 = r2 - r1;
Console.WriteLine("减法运算符 - :{0}", r3.ToString());
//乘法运算符 *
int int1 = 10;
int int2 = 20;
int intMul = 0;
intMul = int1 * int2;
Console.WriteLine("乘法运算符 * :{0}", intMul.ToString());
//除法运算符 /
int chushu1 = 45;
int chushu2 = 5;
int shang;
shang = chushu1 / chushu2;//这里省略了 对除数是否为0的判断
Console.WriteLine("除法运算符 /:{0}", shang.ToString());
//求余运算符 %
int l1 = 45;
int l2 = 10;
int l3;
l3 = l1 % l2;
Console.WriteLine("求余运算符 %:{0}", l3.ToString());
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
程序运算结果:
加法运算符 + :1854
减法运算符 - :8157.99
乘法运算符 :200*
除法运算符 /:9
求余运算符 %:5
2. 赋值运算符
赋值运算符用来为变量、属性和事件等元素赋值,包括“=”,“!=”,“+=”,“-=”,“*=”,“/=”,“%=”。“&=”,“|=”,“&=”,“<<=”,“<<=”等运算符。赋值运算符的左操作数必须是变量、属性、索引器或事件类型的表达式,如果赋值运算符两边操作数类型不一致,急需要首先进行类型转换,然后在赋值。
在使用赋值运算符是,右操作数表达式所属的类型必须可隐式转换为左操作数所属的类型,运算时将右操作数的值赋给左操作数制定的变量、属性或索引器元素。
名称 | 运算符 | 运算规则 | 意义 |
---|---|---|---|
赋值 | = | 将表达式赋值给变量 | 将右边的值给左边 |
加赋值 | += | x+=y | x=x+y |
减赋值 | -= | x-=y | x=x-y |
除赋值 | /= | x/=y | x=x/y |
乘赋值 | *= | x*=y | x=x*y |
模赋值 | %= | x%=y | x=x%y |
位与赋值 | &= | x&=y | x=x&y |
位或赋值 | I= | x I= y | x=x I y |
右移赋值 | .>>= | x >>= y | x=x >> y |
左移赋值 | <<= | x <<= y | x=x << y |
异或赋值 | ^= | x ^= y | x=x ^ y |
//赋值运算符 +=
int i = 927;
i += 112;
Console.WriteLine("赋值运算符+=:{0}", i.ToString());
- 1
- 2
- 3
- 4
程序运行结果为:
赋值运算符+=:1039
3. 关系运算符
关系运算符可以实现两个值的比较运算,并且在比较之后会返回一个代表运算结果的布尔值。
关系运算符 | 运算符 | 关系运算符 | 说明 |
---|---|---|---|
== | 等于 | != | 不等于 |
> | 大于 | .>= | 大于等于 |
< | 小于 | <= | 小于等于 |
//==
decimal Q1 = 1981.00m;
decimal Q2 = 1982.00m;
bool result1;
result1 = Q1 == Q2;
Console.WriteLine(result1);
// !=
decimal S1 = 1981.00m;
decimal S2 = 1982.00m;
bool result2;
bool result3;
result2 = S1 != S2;
result3 = !(S1 == S2);
Console.WriteLine(result2);
Console.WriteLine(result3);
//<
int U1 = 1112;
int U2 = 927;
bool result4;
result4 = U1 < U2;
Console.WriteLine(result4);
//>
int F1= 18;
int F2 = 8;
bool result5;
result5 = F1 > F2;
Console.WriteLine(result5);
//<=
int X1 = 12;
int X2 = 9;
bool result6;
result6 = X1 <= X2;
Console.WriteLine(result6);
//>=
int T1 = 1112;
int T2 = 927;
bool result7;
result7 = T1 >= T2;
Console.WriteLine(result7);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
程序运行结果为:
False
True
True
False
True
False
True
4.逻辑运算符
逻辑运算符用于对两个表达式执行布尔逻辑运算。C#中逻辑运算符大体可以分为按位逻辑运算符和布尔逻辑运算符两种。
按位逻辑运算符是对两个正数表达式的相应位执行位逻辑运算,二布尔逻辑运算符是对两个布尔表达式执行布尔逻辑运算。
4.1 按位“与”运算符 &
用于比较两个整数的相应位。执行位“与”运算时,如果两个数的对应为都是1,返回相应的结果为是1;如果两个整数的相应位都是0或者其中一个是0,则返回相应的结果为是0。
4.2 按位“或”运算符 |
用于比较两个整数的相应位。执行位“或”运算时,如果两个整数的对应为有一个是1或者都是1,返回相应的结果为是1;如果两个整数的对应为都是0,则返回相应的结果为是0;
4.3 按位“异或”运算符 ^
用于比较两个整数的相应位。执行位“异或”运算时,如果两个整数的对应位有一个是1而另外一个是0,返回相应的结果为是1;如果两个整数的对应为都是0或者1,则返回相应的结果为是0;
4.4 布尔“与”运算符 &&
当两个布尔表达式的结果都为真是,则返回结果为真;否则返回结果为假。
4.5 布尔“或”运算符 ||
当两个布尔表达式当中有一个表达式计算结果为真是,则结果为真。当两个布尔表达式的返回计算结果都为假是,则结果为假。
4.6 布尔“异或”运算符 ^
只有当其中一个表达式为真,而另一个表达式为假时,该表达式返回的结果为真;当两个布尔表达式的计算结果都为假或都为真是,则返回结果为假 。
//按位“与”运算符 &
int num1 = 1;
int num2 = 85;
bool iseven;
iseven = (num1 & num2)==0;
Console.WriteLine(iseven);
//分析:首先十进制是1对应的二进制数为00000001,十进制85对应的二进制数为01010101,根据规则得出(1&85)=0,
//而上述代码使(1&85)=0,所以返回false;
//按位“或”运算符 |
int iseven2;
iseven2 = (num1 | num2);
Console.WriteLine(iseven2);
//分析:首先十进制是1对应的二进制数为00000001,十进制85对应的二进制数为01010101,根据规则得出(1|85)=85
//按位“异或”运算符 ^
int iseven3;
iseven3 = (num1 ^ num2);
Console.WriteLine(iseven3);
//分析:首先十进制是1对应的二进制数为00000001,十进制85对应的二进制数为01010101,根据规则得出(1^85)=84
//布尔“与”运算符 &
bool bls = false;
int Lnum = 20;
bool result8;
result8 = bls & (Lnum < 30);
Console.WriteLine(result8);
//布尔“或”运算符 |
bool result9;
result9 = bls | (Lnum < 30);
Console.WriteLine(result9);
//布尔“异或”运算符 ^
bool result10;
result10 = bls ^ (Lnum < 30);
Console.WriteLine(result10);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
程序运行结果为:
False
85
84
False
True
True
5.移位运算符
对于 X>>N 或X<<.N形式的运算,含义是将X向右或者向左移动N位,得到结果的类型与X相同。在此,X的类型只能是int、uint、long、ulong,N的类型只能是int,或者显式转换为这些类型之一没否则编译程序时会出现错误。
5.1 左移运算符<<
使用左移位运算符可以将数想左移位,其作用是所有的胃都向左移动指定的次数,高位自动丢失,地位以0填充。
5.2 右移运算符>>
使用右移位运算符和左移位相反,低位自动丢失,高位以0填充。
// >> 右移位运算符
uint intMax = 4294967295;
uint bytemask = intMax >> 16;
Console.WriteLine(bytemask);
//<<左移位运算符
uint bytemask2 = intMax << 8;
Console.WriteLine(bytemask2);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
程序运行结果为:
65535
4294967040
6.其他特殊运算符
6.1 is 运算符
is运算符用于检查变量是否为指定的类型。如果是,返回真,否则,返回假。
6.2 as 运算符
as运算符用于在兼容的引用类型之间执行转换。
6.3 条件运算符 ?:
条件运算符是来根据布尔型表达式的值返回两个值中的一个。如果条件为True,则返回第一个表达式并以其计算结果为准;如果为False,则计算第二个表达式并以其计算结果为准
6.4 new运算符
new运算符用于创建一个新的类型实例,具有以下三种形式:
- 对象创建表达式,用于创建一个类类型或者值类型的实例。
- 数组创建表达式,用于创建一个数组类型的实例。
- 代表创建表达式,用于创建一个新的代表类型实例。
6.5 typeof运算符
用于获得系统原型对象的类型,也就是Type对象,Type对象包含关于值类型和引用类型的信息。
//is 运算符
int a = 0;
bool result11 = a is int;
Console.WriteLine(result11);
//as 运算符
object obj = "123你好";
string b = obj as string;
Console.WriteLine(b);
//条件运算符 ?:
//判断2018是不是闰年
int year = 2018;
bool isleapyear = ((year % 400) == 0 || ((year % 4) == 0 && ((year % 100) != 0)));
string yesno = isleapyear ? "Yes" : "No";
Console.WriteLine(yesno);
//new 运算符
string[] strs = new string[2];
strs[0] = "hello";
strs[1] = "world";
for (int j = 0; j < strs.Length; j++)
{
Console.WriteLine(strs[j]);
}
//typeof 运算符
Type mytype = typeof(int);
Console.WriteLine("类型:{0}",mytype);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
程序运行结果为:
True
123你好
No
hello
world
类型:System.Int32
7.运算符的优先级
分类 | 运算符 | 优先级 |
---|---|---|
基本 | x.y、f(x)、a[x]、x++、x–、new、typeof、checked、unchecked | 1 |
一元 | +、-、!、~、++、–、(T)x、~ | 2 |
乘除 | *、/、% | 3 |
加减 | +、- | 4 |
移位 | <<、>> | 5 |
比较 | <、>、<=、>=、as、is | 6 |
相等 | ==、!= | 7 |
位与 | & | 8 |
位异或 | ^ | 9 |
位或 | I | 10 |
逻辑与 | && | 11 |
逻辑或 | II | 12 |
条件 | ?: | 13 |
赋值 | =、+=、-=、*=、/=、%=、&=、I=、^=、<<=、>>= | 14 |