第三章:运算符
第三章:运算符
本章目标
- 算术运算符
- 关系运算符
- 逻辑运算符
- 赋值运算符
- 三元运算符
- 位运算符
本章内容
1、算术运算符
概念:算术运算符即完成特定算术运算的符号,C# 中支持的算术运算符如下表所示:(假设变量 A = 10,变量 B = 20)
案例:
1
2
3
4
5
6
7
8
9
10
11
12int num1 = 10, num2 = 2;
int jia = num1 + num2;
int jian = num1 - num2;
int cheng = num1 * num2;
int chu = num1 / num2;
int yu = num1 % num2;
Console.WriteLine("{0}+{1}={2}", num1, num2, jia);
Console.WriteLine("{0}-{1}={2}", num1, num2, jian);
Console.WriteLine("{0}*{1}={2}", num1, num2, cheng);
Console.WriteLine("{0}/{1}={2}", num1, num2, chu);
Console.WriteLine("{0}%{1}={2}", num1, num2, yu);注意事项:
除数不能为0,当除数为0时,会出现异常。
++,–运算符
++运算符
概念:递增运算符,每次加1
注意事项:++在变量名前后作用不同
++在变量前:先运算,再操作
1
2
3int a=10;
int b=++a;
Console.WriteLine("a:{0},b:{1}",a,b);//输出结果为->a:11,b:11,可见a自动加1++在变量后:先操作,再运算
1
2
3int a = 10;
int b = a++;
Console.WriteLine("a:{0},b:{1}", a, b);////输出结果为->a:11,b:10,可见a自动加1,但是在赋值时a的值不变,则为先赋完值,a的值才+1
–运算符与++运算符原理类似,讲解略
2、关系运算符
概念:比较运算符在逻辑语句中使用,以测定变量或值是否相等,返回结果肯定是bool类型 。假设变量 A 的值为 10,变量 B 的值为 20,则:
案例:
1
2
3
4
5
6
7
8
9int a = 10;
int b = 20;
bool isResult = a > b;
bool isResult2 = a < b;
bool isResult3 = a == b;
Console.WriteLine("isResult1:{0},isResult2:{1},isResult3:{2}", isResult, isResult2, isResult3);//输出结果:isResult1:False,isResult2:True,isResult3:False注意事项:
通常情况下,关系运算符是用在选择结构或循环结构中作为条件使用
3、逻辑运算符
概念:逻辑运算符用于判定变量或值之间的逻辑。也是将多个比较运算结果组合成新的条件结果。 假设变量 A 为布尔值 true,变量 B 为布尔值 false,则:
详细讲解:
&&逻辑与运算符:
多个条件全部为true,则为true,只要有一个条件不满足为false,则后面的所有条件都不会判断,直接返回false。
简单说:全部为true返回结果为true
案例1:
1
2
3
4int a=10,b=20;
bool isRes1=a>10 && b>10;//结果为false,a>10为false,则后面的条件b>10不会执行,直接返回false
bool isRes2=a>=10 && b>10;//结果为true,a>=10为true,后面条件继续判断b>10也为true,则返回true思考如下题目,且分析:
题目一:如下代码,请问isTrue为true还是false,变量a,b,c的值分别是多少?为什么?
1
2
3
4
5
6
7
8int a = 10;
int b = 11;
int c = 11;
int isTrue = a++ >= b && ++b > c--;
Console.WriteLine("isTrue:" + isTrue + ",a=" + a + ",b=" + b + ",c=" + c);
Console.ReadLine();题目二:如下代码,将a++变成了++a,请问isTrue为true还是false,变量a,b,c的值分别是多少?为什么?
1
2
3
4
5
6
7int a = 10;
int b = 11;
int c = 11;
bool isTrue = ++a >= b && ++b > c--;//将++放在a前面,结果又是什么?
Console.WriteLine("isTrue:" + isTrue + ",a=" + a + ",b=" + b + ",c=" + c);||逻辑或运算符:
只要满足一个条件为true,则结果就为true,所有条件为false才能为false,在比较过程,只要有一个条件满足为true,则后面的条件不再进行比较。
简单说:全部条件为false,才能是false
案例:
1
2
3
4
5
6
7
8案例1:
int a=10;
int b=11;
bool isTrue=a>10 || b>10;//返回结果为true,因为b>10返回为true,结果则为true
案例2:
int a=10;
int b=11;
bool isTrue=a>10 || b<10;//返回结果为false,两个比较都返回为false,则结果为false思考如下题目,且分析:
题目一:如下代码,请问isTrue为true还是false,变量a,b,c的值分别是多少?为什么?
1
2
3
4
5
6
7
8int a = 10;
int b = 11;
int c = 11;
int isTrue = a++ >= b || ++b > c--;
Console.WriteLine("isTrue:" + isTrue + ",a=" + a + ",b=" + b + ",c=" + c);
Console.ReadLine();题目二:如下代码,将a++变成了++a,请问isTrue为true还是false,变量a,b,c的值分别是多少?为什么?
1
2
3
4
5
6
7int a = 10;
int b = 11;
int c = 11;
bool isTrue = ++a >= b || ++b > c--;//将++放在a前面,结果又是什么?
Console.WriteLine("isTrue:" + isTrue + ",a=" + a + ",b=" + b + ",c=" + c);
!逻辑非运算符:
理解:比较结果为true,则返回最终结果为false,比较结果为false,则返回最终结果为true
简单理解:取反
1
2
3
4int a=10;
int b=11;
bool isTrue=!(a>b);//结果为true
bool isTrue2=!(a<b);//结果为false
4、赋值运算符
概念:赋值运算符顾名思义就是用来为变量赋值的,下表列举了 C# 中支持的赋值运算符:
案例:
1
2
3
4
5
6
7
8
9
10
11
12int a = 10, b = 2;
b += a;//相当于b=b+a;
Console.WriteLine("b+=a->b={0}", b);
b -= a;
Console.WriteLine("b-=a->b={0}", b);
b *= a;
Console.WriteLine("b*=a->b={0}", b);
b /= a;
Console.WriteLine("b/=a->b={0}", b);
b %= a;
Console.WriteLine("b%=a->b={0}", b);
Console.ReadLine();
5、三元运算符
语法:
1
条件?表达式1:表达式2
当条件成立为true,则返回表达式1,否则返回表达式2。
案例:
1
2
3
4
5int score = 90;
string res = score >= 90 ? "优秀" : "继续努力";
Console.WriteLine(res);//score>=90为true,则输出“优秀”
Console.ReadLine();
6、位运算符(选学)
概念:位运算符用来对二进制位进行操作,学习之前必须弄懂二进制,&、| 和 ^ 的真值表如下:
案例:假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:
A = 0011 1100
B = 0000 1101
1
2
3
4
5
6
7A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011下表列出了 C# 支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:
位与运算符:&
将两个数的比特位进行合并,返回一个新数。只有这两个数相同比特位都是 1 的时候才能返回1。
位或运算符:|
将两个数的比特位进行合并,返回一个新数。这两个数相同比特位只要有一个是 1 就返回1。
位异或运算符:^
将两个数的比特位进行合并,返回一个新数。这两个数相同比特位不同时就返回 1。
位取反运算符:~
对所有位的数字进行取反操作。即原来位是 0 则变为 1,原来位是 1 则变为 0。
位左移运算符:<<
将一个数左移一位,相当于把这个数翻倍。
位右移运算符:>>
一个数右移一位,相当于把这个数减半。
案例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
Console.WriteLine("Line 1 - c 的值是 {0}", c);
c = a | b; /* 61 = 0011 1101 */
Console.WriteLine("Line 2 - c 的值是 {0}", c);
c = a ^ b; /* 49 = 0011 0001 */
Console.WriteLine("Line 3 - c 的值是 {0}", c);
c = ~a; /*-61 = 1100 0011 */
Console.WriteLine("Line 4 - c 的值是 {0}", c);
c = a << 2; /* 240 = 1111 0000 */
Console.WriteLine("Line 5 - c 的值是 {0}", c);
c = a >> 2; /* 15 = 0000 1111 */
Console.WriteLine("Line 6 - c 的值是 {0}", c);
Console.ReadLine();当前代码执行的最终结果为:
1
2
3
4
5
6Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15
本章总结
- 算术运算符有哪些?其中注意事项有哪些?
- 请列出关系运算符的全部符号?
- 逻辑运算符的三种符号分别是,每种符号需要注意的事项有哪些?
- 赋值运算符有哪些?
- 三元运算符的语法是什么?
- 位运算符
课后作业
1.已知圆周率pi为3.14,请输入圆的半径,然后计算圆的周长和面积。
2.请输入长方形的长和宽,然后计算其周长和面积。
3.请输入长方体的长、宽、高,然后计算其周长和体积。
4.已知圆周率pi为3.14,请输入圆的半径和圆柱体的高,然后计算其总面积和体积。
5.请输入某同学的姓名和年龄,然后输出其是否成年。
6.请输入张三同学的身高和体重,然后判断其BMI是否正常(BMI计算公式如下)。