一、算数运算符:
在C#里算术运算符常用的有:加(+)、减(-)、乘(*)、除(/)和取余(%)。
1、加法运算符(+)就是把两个值进行相加处理
int a = 11;
int b = 2;
Console.WriteLine(a + b); // 13
2、减法运算符(-)就是把两个值进行相减处理
int a = 11;
int b = 2;
Console.WriteLine(a - b); // 9
3、乘法运算符(*)就是把两个值进行相乘处理
int a = 11;
int b = 2;
Console.WriteLine(a * b); // 22
4、除法运算符(/)就是把两个值进行相除处理 ,但是与数学算法有点区别:他要根据操作数的数据类型计算。如果数据类型不一样的时候,要先统一类型再计算值。
// / 除法和数学有一点区别,需要看操作数的数据类型。
int a = 11;
int b = 2;
int c = a / b;
Console.WriteLine(c);
float f1 = 11F;
float f2 = 2F;
float f3 = f1 / f2;
Console.WriteLine(f3);
// 当数据类型不一致时,建议:先统一类型,再计算。
double f11 = 11D;
float f22 = 2F;
float f33 = (float)f11 / f22;
Console.WriteLine(f33);
5、取余运算符(%)就是求两个操作数相除的余数
int a = 11;
int b = 2;
Console.WriteLine(a % b); // 1
二、关系运算符:
在C#中,关系运算符用于比较两个值之间的关系,并返回一个布尔值(0表示假,非0表示真)。
1、相等(==):判断两个操作数是否相等。
2、不等(!=):判断两个操作数是否不相等。
3、大于(>):判断第一个操作数是否大于第二个操作数。
4、小于(<):判断第一个操作数是否小于第二个操作数。
5、大于等于(>=):判断第一个操作数是否大于等于第二个操作数。
6、小于等于(<=):判断第一个操作数是否小于等于第二个操作数。
int a = 5;
int b = 3;
if (a == b) {
// 执行代码块,当a等于b时
}
if (a != b) {
// 执行代码块,当a不等于b时
}
if (a > b) {
// 执行代码块,当a大于b时
}
if (a < b) {
// 执行代码块,当a小于b时
}
if (a >= b) {
// 执行代码块,当a大于等于b时
}
if (a <= b) {
// 执行代码块,当a小于等于b时
}
三、逻辑运算符:
在C#中,逻辑运算符用于对布尔表达式进行操作,常用的逻辑运算符有三种:与(&&)、或(||)和非(!)。
1、与(&&):当两个操作数都为真时,结果才为真。如果任何一个操作数为假,那么结果就为假。
2、或(||):只要有一个操作数为真,结果就为真。只有当两个操作数都为假时,结果才为假。
3、非(!):用于对操作数取反,如果操作数为真,则结果为假;如果操作数为假,则结果为真。
逻辑运算符通常用于条件判断语句中,例如if语句、while循环等,用于组合多个条件,以便根据这些条件确定程序的执行流程。
int a = 5, b = 3, c = 7;
if (a > b && b > c) {
Console.WriteLine("a大于b且b大于c\n");
} else if (a > b || b > c) {
Console.WriteLine("a大于b或者b大于c\n");
} else if (!(a > b)) {
Console.WriteLine("a不大于b\n");
}
四、位运算符:
在C#中,位运算符用于对整数的二进制位进行操作。常用的位运算符包括与(&)、或(|)、异或(^)、取反(~)、左移(<<)和右移(>>)。
1、与(&):对两个操作数的每一个位执行逻辑与操作,如果两个对应位都为1,则结果为1,否则为0。
2、或(|):对两个操作数的每一个位执行逻辑或操作,如果两个对应位任一为1,则结果为1,否则为0。
3、异或(^):对两个操作数的每一个位执行异或操作,如果两个对应位不相同,则结果为1,否则为0。
4、取反(~):对操作数的每一个位执行取反操作,即将0变为1,将1变为0。
5、左移(<<):将一个数的各二进制位全部左移若干位,高位丢弃,低位补0。
6、右移(>>):将一个数的各二进制位全部右移若干位,对无符号数,高位补0;对有符号数,采用符号位的扩展。
int a = 5; //0000 0101
int b = 3; //0000 0011
int c = a & b; // 0000 0001 &按位与 都为1,才为1
int d = a | b; // 0000 0111 |按位或 只要有一个为1,就是为1
int e = a ^ b; // 0000 0110 ^按位异或 有一个为1的为1
int f = ~a; // ~按位取反 每一位取反(难) 补码1111 1010==原码0000 0110
// 补码转换回原码的规则是取反加1,补码的最高位表示符号位 0正数 1负数
int h = ~b; // 补码1111 1100==原码0000 0100
int i = a << 4; // 左移4位 0101 0000
int j = b >> 4; // 右移4位 0000 0000
int octalNumber1 = 0123; // 八进制数123对应十进制数83
int octalNumber2 = 0127; // 八进制数127对应十进制数79
int octalNumber3 = 0777; // 八进制数777对应十进制数511
Console.WriteLine(octalNumber1); // 输出83
Console.WriteLine(octalNumber2); // 输出79
Console.WriteLine(octalNumber3); // 输出511