4.2.1算术运算符
+、—、*、/、%
加、减、乘、除、取余
1.加法运算符
static void Main(string[] args)
{
int M1 = 927; //声明整型变量M1,并赋值为927
int M2; //声明整型变量M2
M2 = M1 + M1; //M2的值为M1与M1相加之后的值
Console.WriteLine(M2.ToString());
Console.Read();
}
程序运行结果为1854
M++和++M同C语言
2.减法运算符
static void Main(string[] args)
{
decimal R1 = (decimal)1112.82; //声明整型变量R1,并赋值为1112.82
decimal R2 = (decimal)9270.81; //声明整型变量R2,并赋值为9270.81
decimal R3; //声明整型变量R3
R3 = R2 - R1; //R3的值为R2减去R1得到的值
Console.WriteLine(R3.ToString());
Console.Read();
}
程序运行结果为8157.99
M–和--M同C语言
3.乘法运算符
static void Main(string[] args)
{
int ls1 = 10; //声明整型变量ls1,并赋值为10
int ls2 = 20; //声明整型变量ls2,并赋值为20
int sum; //声明整型变量sum
sum = ls1 * ls2; //使sum的值为ls1和ls2的乘积
Console.WriteLine(sum.ToString());
Console.Read();
}
程序运行结果为200
4.除法运算符
static void Main(string[] args)
{
int shj1 = 45; //声明整型变量shj1,并赋值为45
int shj2 = 5; //声明整型变量shj2,并赋值为5
int ls; //声明整型变量ls
ls = shj1 / shj2; //使ls的值为shj1除以shj2得到的值
Console.WriteLine(ls.ToString());
Console.Read();
}
程序运行结果为9
5.求余运算符
static void Main(string[] args)
{
int I1 = 55; //声明整型变量I1,并赋值为55
int I2 = 10; //声明整型变量I1,并赋值为10
int I3; //声明整型变量I3
I3 = I1 % I2; //使I3等于I1与I2求余运算之后的值
Console.WriteLine(I3.ToString());
Console.Read();
}
程序运行结果为5
在使用Math类的DivRem方法时,可以用Math.DivRem(I1,I2,out I3),
4.2.2赋值运算符
赋值运算符为变量、属性、时间等元素
符号有=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=等
赋值运算符左操作数必须为变量、属性访问、索引器访问或时间访问类型的表达式
例4.8:创建一个控制台应用程序,声明int类型变量i,并初始化为927,通过加赋值运算符改变i的值,增加112
static void Main(string[] args)
{
int i = 927; //声明一个int类型的变量i并初始化为927
i += 112; //使用加赋值运算符
Console.WriteLine("最后i的值为:{0}", i); //输出最后变量i的值
Console.ReadLine();
}
程序运行结果为:1039
4.2.3关系运算符
==、>、<、!=、>=、<=、
1.等于运算符
static void Main(string[] args)
{
decimal L1 = 1981.00m; //声明decimal类型变量L1
decimal L2 = 1982.00m; //声明decimal类型变量L2
bool result; //声明bool类型变量result
//使result等于L1和L2进行相等运算后的返回值
result = L1 == L2;
Console.WriteLine(result); //输出运行结果
Console.ReadLine();
}
程序运行结果为false
2.不等运算符
static void Main(string[] args)
{
decimal S1 = 1981.00m; //声明decimal类型变量S1
decimal S2 = 1982.00m; //声明decimal类型变量S2
bool result; //声明bool类型变量result
bool result1; //声明bool类型变量result1
result = S1 != S2; //获取不等运算返回值第一种方法
result1 = !(S1 == S2); //获取不等运算返回值第二种方法
Console.WriteLine(result); //输出结果
Console.WriteLine(result1); //输出结果
Console.ReadLine();
}
程序运行结果为
true
true
3.小于运算符
static void Main(string[] args)
{
int U1 = 1112; //声明整型变量U1
int U2 = 927; //声明整型变量U2
bool result; //声明bool型变量result
//使result等于U1和U2进行小于运算的返回值
result = U1 < U2;
Console.WriteLine(result); //输出结果
Console.ReadLine();
}
程序运行结果为false
4.大于运算符
static void Main(string[] args)
{
int F1 = 18; //声明整型变量F1
int F2 = 8; //声明整型变量F2
bool result; //声明bool型变量result
//使result等于F1和F2进行大于运算的返回值
result = F1 > F2;
Console.WriteLine(result); //输出结果
Console.ReadLine();
}
程序运行结果为true
5.小于等于运算符
static void Main(string[] args)
{
int X1 = 12; //声明整型变量X1
int X2 = 9; //声明整型变量X2
bool result; //声明bool型变量result
//使result等于X1和X2进行小于或等于运算的返回值
result = X2 <= X1;
Console.WriteLine(result); //输出结果
Console.ReadLine();
}
程序运行结果为true
6.大于等于运算符
static void Main(string[] args)
{
int T1 = 1112; //声明整型变量T1
int T2 = 927; //声明整型变量T2
bool result; //声明bool型变量result
//使result等于T1和T2进行大于或等于运算的返回值
result = T2 >= T1;
Console.WriteLine(result); //输出结果
Console.ReadLine();
}
程序运行结果为false
4.2.4逻辑运算符
对两个表达式执行布尔逻辑运算
分为按位逻辑运算符和布尔逻辑运算符
按位逻辑运算符是对两个整数表达式的相应位执行布尔逻辑运算,有效的整数型是有符号或者无符号的int和long类型
布尔逻辑运算符是对两个布尔表达式执行布尔逻辑运算
- 按位“与”运算符
static void Main(string[] args)
{
int num1 = 1; //声明一个整型的变量num1 00000001
int num2 = 85; //声明一个整型的变量num2 01010101
//00000001
bool iseven; //声明一个bool类型的变量iseven
iseven = (num1 & num2) == 0; //获取两个变量“与”运算后的返回值
Console.WriteLine(iseven); //输出结果
Console.ReadLine();
}
程序运行结果为false
2. 按位“或”运算符
static void Main(string[] args
{
int num1 = 1; //声明一个整型的变量num1
int num2 = 85; //声明一个整型的变量num2
int iseven; //声明一个整型的变量iseven
iseven = (num1 | num2); //获取两个变量“或”运算后的返回值
Console.WriteLine(iseven); //输出结果
Console.ReadLine();
}
程序运行结果为85
3. 按位“异或”运算符
static void Main(string[] args)
{
int num1 = 1; //声明一个整型的变量num1
int num2 = 85; //声明一个整型的变量num2
int iseven; //声明一个整型的变量iseven
//获取两个变量“异或”运算后的返回值
iseven = (num1 ^ num2);
Console.WriteLine(iseven); //输出结果
Console.ReadLine();
}
程序运行结果为84
4. 布尔“与”运算符
static void Main(string[] args)
{
bool Bls = false; //声明一个bool类型变量Bls
int Inum = 20; //声明一个整型变量Inum
bool result; //声明一个bool类型变量result
result = Bls & (Inum < 30); //获取布尔“与”运算后的返回值
Console.WriteLine(result); //输出结果
Console.ReadLine();
}
程序运行结果为false
- 布尔“或”运算符
static void Main(string[] args)
{
bool Bls = false; //声明一个bool类型变量Bls
int Inum = 20; //声明一个整型变量Inum
bool result;
//声明一个bool类型变量result
result = Bls | (Inum < 30); //获取布尔“或”运算后的返回值
Console.WriteLine(result); //输出结果
Console.ReadLine();
}
程序运行结果为true
6. 布尔“异或”运算符
static void Main(string[] args)
{
bool Bls = true; //声明一个bool类型变量Bls
int Inum = 20; //声明一个整型变量Inum
bool result; //声明一个bool类型变量result
result = Bls ^ (Inum < 30); //获取布尔“异或”运算后的返回值
Console.WriteLine(result); //输出结果
Console.ReadLine();
}
程序运行结果为false
4.2.5移位运算符
- 左移运算符
用来将一个数的各二进制位全部左移若干位,高次位缺失,低次位以0来填充
static void Main(string[] args)
{
uint intmax = 4294967295; //声明uint类型变量intmax
uint bytemask; //声明uint类型变量bytemask
bytemask = intmax << 8; //使intmax左移8次
Console.WriteLine(bytemask); //输出结果
Console.ReadLine();
}
程序运行结果为:4294967040
过程如下:4294967295换算为二进制为11111111111111111111111111111111,左移8位后变成11111111111111111111111100000000,转换为10进制为4294967040
2. 右移运算符
用来将一个数的各二进制位全部右移若干位
static void Main(string[] args)
{
uint intmax = 4294967295; //声明uint类型变量intmax
uint bytemask; //声明uint类型变量bytemask
bytemask = intmax >> 16; //使intmax右移16次
Console.WriteLine(bytemask); //输出结果
Console.ReadLine();
}
程序运行结果为:65535
过程如下:4294967295换算为二进制为11111111111111111111111111111111,右移16位后变成1111111111111111,转换为10进制为65535
4.2.6其他特殊运算符
1.is运算符
用于检查变量是否为指定变量,如果是,返回真;如果不是,返回假
static void Main(string[] args)
{
int i = 0; //声明整型变量i
bool result = i is int; //判断i是否为整型
Console.WriteLine(result); //输出结果
Console.ReadLine();
}
程序运行结果为false
2.条件运算符 (?:)
根据布尔型表达式的值返回两个值中的一个:
如果条件为true,则计算第一个表达式并以他的计算结果为准;
如果条件为false,则计算第二个表达式并以他的计算结果为准
例4.24创建控制台应用程序,判断a/b的值是否为2,若等于2则返回true,不是则返回false
static void Main(string[] args)
{
Console.Write("请输入一个年份:"); //屏幕输入提示字符串
string str = Console.ReadLine(); //获取用户输入的年份
int year = Int32.Parse(str); //将输入的年份转换成int类型
//计算输入的年份是否为闰年
bool isleapyear = ((year % 400) == 0) || (((year % 4) == 0) && ((year % 100) != 0));
//利用条件运算符输入“是”或者“不是”
string yesno = isleapyear ? "是" : "不是";
Console.WriteLine("{0}年{1}闰年", year, yesno); //输出结果
Console.ReadLine();
}
输入2019,程序运行结果为false
3.new运算符
创建一个新的类型实例:
对象创建表达式,用于创建一个类类型或者值类型的实例
数组创建表达式,用于创建一个数组类型的实例
代表创建表达式,用于创建一个新的代表类型的实例
例4.25:创建一个控制台应用程序,用new运算符创建一个数组,向数组中添加项目,然后输出数组中的项
static void Main(string[] args)
{
string[] ls = new string[5]; //创建具有5个项目的string类型数组
ls[0] = "ls1"; //为数组第一项赋值
ls[1] = "ls2"; //为数组第二项赋值
ls[2] = "ls3"; //为数组第三项赋值
ls[3] = "ls4"; //为数组第四项赋值
ls[4] = "ls5"; //为数组第五项赋值
Console.WriteLine(ls[0]); //输出数组第一项
Console.WriteLine(ls[1]); //输出数组第二项
Console.WriteLine(ls[2]); //输出数组第三项
Console.WriteLine(ls[3]); //输出数组第四项
Console.WriteLine(ls[4]); //输出数组第五项
Console.ReadLine();
}
程序运行结果为:
Ls1
Ls2
Ls3
Ls4
Ls5
4.typeof运算符
用于获得系统原型对象的类型,就是type对象。Type类包括关于值类型和引用类型的信息。
例4.26创建一个控制台应用程序,利用typeof运算符来获取引用整型的信息,并输出结果
static void Main(string[] args)
{
Type mytype = typeof(string); //获取引用类型的信息
Console.WriteLine("类型:{0}", mytype); //输出结果
Console.ReadLine();
}
程序运行结果为:
类型:System.Int32