2023-01-20
自我提升
0

目录

数学运算符(算术运算符)
赋值运算符
⾃增 ⾃减运算符
关系运算符

数学运算符(算术运算符)

假设变量 A 的值为 10,变量 B 的值为 20,则:

运算符描述实例
+把两个操作数相加A + B 将得到 30
-从第一个操作数中减去第二个操作数A - B 将得到 -10
*把两个操作数相乘A * B 将得到 200
/分子除以分母B / A 将得到 2
%取模运算符,整除后的余数B % A 将得到 0
++自增运算符,整数值增加 1A++ 将得到 11
--自减运算符,整数值减少 1A-- 将得到 9
c#
int a = 23 + 23; int b = 2 - 10; int c = 4 * 23; int d = 45 / 10; int e = 45 % 10; double f = 45 / 10.0; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c); Console.WriteLine(d); Console.WriteLine(e); Console.WriteLine(f);

取模(求余) % (注意⽤于整数,⽤于⼩数的时候 容易出现不精确的问题 4.3%1)

✍问题? 设计⼀个算法,可以把任意⼀个两位数分离它的个位和⼗位上⾯的数字。
⽐如 78,它的个位是8,⼗位是7。

c#
int num = 39; int ge = num % 10; int shi = num / 10; Console.WriteLine("个位是{0},十位数是{1}",ge, shi);

赋值运算符

c#
int a = 0; a += 10;//a = a+10; Console.WriteLine(a); a -= 5;//5 Console.WriteLine(a); a *= 3;//15 Console.WriteLine(a); a /= 6;//2 Console.WriteLine(a); a %= 2;//0 Console.WriteLine(a);

下⾯两种情况的结果

情况1:
int a = 0;
a += 1;
Console.WriteLine(a); 〓0

情况2
int a = 0;
a = a + 1;
Console.WriteLine(a);〓1

⾃增 ⾃减运算符

++ —

⽰例:
a— a++
—a ++a
放在前⾯和后⾯的区别 - 在于放在表达式⾥⾯的时候

  • c = a++: 先将 a 赋值给 c,再对 a 进行自增运算。
  • c = ++a: 先将 a 进行自增运算,再将 a 赋值给 c 。
  • c = a--: 先将 a 赋值给 c,再对 a 进行自减运算。
  • c = --a: 先将 a 进行自减运算,再将 a 赋值给 c 。

情况1
int a = 3;
int b = a++;
Console.WriteLine(b); 〓3

情况2
int a = 3;
int b = ++a;
Console.WriteLine(b); 〓4

关系运算符

(⽐较运算符 - ⽐较两个数字的⼤⼩)
结果
满⾜条件 = 真 = 1
不满⾜条件 = 假 = 0

符号条件
==判断左边是否等于右边
>判断左边是否⼤于右边
<判断左边是否⼩右边
>=判断左边是否⼤于或等于右边
<=判断左边是否⼩于或等于右边
!=判断左边是否不等于右边

布尔类型
bool isRight;
真 = true = 1 = 满⾜
假 = false = 0 = 不满⾜

c#
bool a = 45 == 67; bool b = 45 < 67; bool c = 45 <= 45; bool d = 45 > 67; bool e = 45 >= 67; bool f = 45 != 67; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c); Console.WriteLine(d); Console.WriteLine(e); Console.WriteLine(f);

判断下⾯的结果(两边可以是数字,也可以是变量)
3==4
3!=4 ✔
5<6 ✔
5< = 5 ✔
6>5 ✔
6> = 7

逻辑运算符
下表显示了 C# 支持的所有逻辑运算符。假设变量 A 为布尔值 true,变量 B 为布尔值 false,则:

运算符描述实例
&&称为逻辑与运算符。如果两个操作数都非零,则条件为真。(A && B) 为假
称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。(A ‖ B) 为真
!称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。!(A && B) 为真

A B必须是⼀个布尔值,或者布尔表达式

c#
&&和 ||或 !非 bool a = (3 < 4) && (9 < 10);// true && false bool a = true && true;// true && false bool b = (3 < 2) && (9 < 7); bool c = !(4 < 7); bool c = !true;//取反 Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);

✍问题?
输⼊⼀个⼈的年龄,判断这个是是否是⻘年,⻘年标准是18-60岁。

c#
int age = Convert.ToInt32(Console.ReadLine()); bool isYoung = (age >= 18) && (age <= 60); Console.WriteLine(isYoung);

赋值运算符 - 简写
下表列出了 C# 支持的赋值运算符:

运算符描述实例
=简单的赋值运算符,把右边操作数的值赋给左边操作数C = A + B 将把 A + B 的值赋给 C
+=加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数C += A 相当于 C = C + A
-=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数C -= A 相当于 C = C - A
*=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数C *= A 相当于 C = C * A
/=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数C /= A 相当于 C = C / A
%=求模且赋值运算符,求两个操作数的模赋值给左边操作数C %= A 相当于 C = C % A
<<=左移且赋值运算符C <<= 2 等同于 C = C << 2
>>=右移且赋值运算符C >>= 2 等同于 C = C >> 2
&=按位与且赋值运算符C &= 2 等同于 C = C & 2
^=按位异或且赋值运算符C ^= 2 等同于 C = C ^ 2
|=按位或且赋值运算符C |= 2 等同于 C = C | 2

运算符的优先级
⽰例
3 * 3+4 * 2的结果
17

下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

优先级简易概括:有括号先括号,后乘除在加减,然后位移再关系,逻辑完后条件,最后一个逗号 , 。

类别运算符结合性
后缀() [] -> . ++ - -从左到右
一元+ - ! ~ ++ - - (type)* & sizeof从右到左
乘除* / %从左到右
加减+ -从左到右
移位<< >>从左到右
关系< <= > >=从左到右
相等== !=从左到右
位与 AND&从左到右
位异或XOR^从左到右
位或OR从左到右
逻辑与AND&&从左到右
逻辑或OR从左到右
条件?:从右到左
赋值= += -= *= /= %=>>= <<= &= ^= |=从右到左
逗号,从左到右

不需要记忆,通过()控制优先级