CH03_运算符


本章目标

  • 掌握算术运算符的使用
  • 掌握关系运算符的使用
  • 掌握逻辑运算符的使用
  • 掌握三元运算符的使用
  • 掌握位运算符的使用
  • 掌握运算符的优先级

运算符概述

运算符是每一种编程语言中必备的符号,如果没有运算符,那么编程语言将无法实现任何运算。

运算符主要用于执行程序代码运算,例如加法、减法、大于、小于等。

下面我们将介绍算术运算符、逻辑运算符、比较运算符、三元运算符以及运算符的优先级。

算术运算符

算术运算符是最常用的一类运算符,包括加法、减法、乘法、除法等,

具体的表示符号如下表所示。

​ 这里需要强调的是:

  • 当对两个字符串类型的值使用 + 运算符,代表的是两个字符串值的连接,例如 “123”+”456” 的结果为 “23456” 。
  • 当使用 / 运算符时也要注意操作数的数据类型,如果两个操作数的数据类型都为整数,那么结果相当于取整运算,不包括余数;而两个操作数中如果有一个操作数的数据类型为浮点数,那么结果则是正常的除法运算。
  • 当使用 % 运算符时,如果两个操作都为整数,那么结果相当于取余数。经常使用该运算符来判断某个数是否能被其他的数整除。

案例1: 使用 / 和 % 运算符来取得数字 1234 中的千位、百位、十位、个位的值。

1
2
3
4
5
6
7
8
9
10
class Program
{
static void Main(string[] args)
{
Console.WriteLine("千位" +1234 / 1000);
Console.WriteLine("百位" + 1234 / 100 % 10);
Console.WriteLine("十位" + 1234 / 10 % 10);
Console.WriteLine("个位" + 1234 % 10);
}
}

​ 执行上面的代码,效果如下图所示。

赋值运算符

赋值运算符中最常见的是等号,除了等号以外还有很多赋值运算符,它们通常都是与其他运算符连用起到简化操作的作用。

赋值运算符如下表所示。

需要注意的是,++ 和 – 运算符放在操作数前和操作数后是有区别的,如果放在操作数前,需要先将操作数加 1 或减 1,然后再与其他操作数进行运算;如果放在操作数后,需要先与其他操作数进行运算,然后操作数自身再加 1。

关系运算符

关系运算符也叫比较运算符,是在条件判断中经常使用的一类运算符,包括大于、小于、不等于、大于等于、小于等于等,具体的符号说明如下表所示。

使用比较运算符运算得到的结果是布尔型的值,因此经常将使用比较运算符的表达式用到逻辑运算符的运算中。

案例2:判断 10 是否为偶数。

1
2
3
4
5
6
7
class Program
{
static void Main(string[] args)
{
Console.WriteLine("10是否是偶数:"+(10 % 2 == 0));
}
}

逻辑运算符

逻辑运算符主要包括与、或、非等,它主要用于多个布尔型表达式之间的运算。

具体的表示符号如下表所示。

在使用逻辑运算符时需要注意逻辑运算符两边的表达式返回的结果都必须是布尔型的。

案例3: 判断 2017 年是否为闰年。

1
2
3
4
5
6
7
class Program
{
static void Main(string[] args)
{
Console.WriteLine("2017年是否是闰年:"+((2017 % 4 == 0 && 2017 % 100 != 0) || (2017 % 400 == 0)));
}
}

三元运算符

三元运算符也被称为条件运算符,与后面要学习的 if 条件语句非常类似。

在 C# 语言中三元运算符只有一个,具体的语法形式如下。

1
布尔表达式 ? 表达式 1: 表达式 2

其中:

  • 布尔表达式:判断条件,它是一个结果为布尔型值的表达式。
  • 表达式 1:如果布尔表达式的值为 True,该三元运算符得到的结果就是表达式 1 的运算结果。
  • 表达式 2:如果布尔表达式的值为 False,该三元运算符得到的结果就是表达式 2 的运算结果。

需要注意的是,在三元运算符中表达式 1 和表达式 2 的结果的数据类型要兼容。

案例4:使用三元运算符判断,如果 10 为偶数则输出偶数,否则输出奇数。

1
2
3
4
5
6
7
8
class Program
{
static void Main(string[] args)
{
Console.WriteLine("10为:"+(10 % 2 == 0 ? "偶数":"奇数"));
}
}

位运算符

所谓的位运算,通常是指将数值型的值从十进制转换成二进制后的运算,由于是对二进制数进行运算,所以使用位运算符对操作数进行运算的速度稍快。

位运算包括与、或、 非、左移、右移等,具体的表示符号如下表所示。

在上面列出的运算符中比较常用的是左移运算符和右移运算符,左移 1 位相当于将操作数乘 2,右移 1 位相当于将操作数除 2。

案例5: 使用位运算符计算 2 的立方。

1
2
3
4
5
6
7
8
class Program
{
static void Main(string[] args)
{
Console.WriteLine("2的立方为:"+(2<<2));
}
}

运算符的优先级

前面介绍了 C# 中基本的运算符,在表达式中使用多个运算符进行计算时,运算符的运算有先后顺序。

如果想改变运算符的运算顺序必须依靠括号。运算符的优先级如下表所示,表中显示的内容是按优先级从高到低排序的。

尽管运算符本身已经有了优先级,但在实际应用中还是建议读者尽量在复杂的表达式中多用括号来控制优先级,以增强代码的可读性。

课后作业

1.提示输入长方形的长和宽,然后计算其面积和周长。

2.学校招募篮球队员:提示如数用户的姓名、性别、身高,身高高于180的男生和身高高于170的女生可以报名。

3.提示输入姓名和年龄,使用三元运算符判断是否是成年。

4.根据输入的边长,使用位运算符计算正方体(6个面都是正方形)的体积。