一、概念
1. 常见运算符
算术运算符、赋值运算符、关系运算符、逻辑运算符、布尔逻辑运算符、移位运算符
1)算术运算符:主要包括:+、-、*、/、%(取余或者模),使用运算符的时候也要遵循数学中的一些条件,比如表达式中除数不能为“0”;
2)赋值运算符:用来为变量、属性和事件等元素赋值,主要包括=、+=、-=、*=、/=、%=、&=(位与赋值)、|=(位或赋值)、^=(异或赋值)、<<=(左移赋值)、>>=(右移赋值 x=x>>y)等运算符;
3)关系运算符:可以实现对两个值的比较运算,并且在比较运算之后会返回一个代表运算结果的布尔值;
public static void test3()
{
int x1 = 22;
int x2 = 33;
bool result;
// 使result等于x1和x2进行小于或者等于运算的返回值
result = x2 > x1;
Console.WriteLine(result);
Console.ReadKey(); // True
}
4)逻辑运算符:用于对两个表达式执行布尔逻辑运算。C#中逻辑运算符大体可以分为按位逻辑运算符和布尔逻辑运算符
按位逻辑运算符:按位“与”运算符&、 按位“或”运算符|、按位“异或”运算符^(前者一假即假,后者一真则真、再者异真同假)1真 0假
布尔逻辑运算符:布尔“与”运算符&、 布尔“或”运算符|、布尔“异或”运算符^(前者一假即假,后者一真则真、再者异真同假)1真 0假
案例:
public static void test4()
{
// 按位运算符案例
int nu = 1; // 1对应的二进制是 0000 0001
int nu2 = 85; // 85对应的二进制是 0101 0101
bool iseven;
iseven = (nu & nu2) == 0; // 1&85 0000 0001 十进制结果就是1
Console.WriteLine(iseven); // 1 == 0 false
Console.WriteLine();
// 布尔运算符案例
bool Bls = true;
int num = 20;
bool result, result2, result3;
result = Bls | (num < 30);
result2 = Bls & (num < 30);
result3 = Bls ^ (num < 30);
Console.WriteLine("result的结果是{0},result1的结果是{1},result2的结果是{2}", result, result2,result3);
Console.ReadKey();
}
5)移位运算符:用于执行移位运算,分别称作左移位运算符和右移位运算符。对于X<<N:意思就是讲X向左移动N位,得到的结果类型与X相同,在此种X的类型只能是int、uint、long或者ulong类型,N只能是int类型。或者转换为这些类型之一,否则编译程序时会出现错误。
遵循:(左移运算符)高位溢出,低位补充0 (右移运算符)高位补0,低位舍弃
案例:
public static void test5()
{
int a = 0x16; // 转化为二进制是: 00000000 00010110
a <<= 4; // 舍弃高位0000 补上低位0000 最终就是00000001 01100000
Console.WriteLine(a); // 352
}
2. 特殊的运算符
is运算符、 条件运算符
1)is运算符:用于检查变量是否为指定类型,如果是,返回真;如果不是,返回假;
public static void test5()
{
int a = 0x16; // 转化为二进制是: 00000000 00010110
a <<= 4; // 舍弃高位0000 补上低位0000 最终就是00000001 01100000
Console.WriteLine(a); // 352
Console.WriteLine();
int i = 0;
bool result = i is int;
Console.WriteLine(result); // true
Console.ReadKey();
}
2)条件运算符?(三元运算符):根据布尔表达式的值返回两个值中的一个。如果是True,则计算第一个表达式并以它的计算结果为准(反之亦然)
public static void test5()
{
int j = 22;
int jj = 33;
int jjj = j > jj ? 44 : 55;
Console.WriteLine(jjj); // 55
}
3. 运算符之间的优先级
算术运算符(一元、四则) > 移位运算符 > 关系运算符 > 逻辑运算符 > 条件运算符 > 赋值运算符 各运算符内部又按照一定的顺序。
二、 运算符的说明
1. 自增自减运算符
案例:(自减意思一样)
int _age = 33;
int _age2 = 43;
int _sum = _age++ - 10;
int _sum2 = ++_age2 - 10;
Console.WriteLine("age = {0}", _age); // 34
Console.WriteLine("sum = {0}", _sum); // 23
Console.WriteLine("age2 = {0}", _age2); // 44
Console.WriteLine("sum2 = {0}", _sum2); // 34
Console.ReadKey();
2. 逻辑运算符
案例:
int _age = 12;
int num = 23;
bool result = _age > num;
Console.WriteLine(result);
Console.ReadKey();