C#开发之——运算符(2.2)

一 概述

运算符是每一种编程语言中必备的符号,如果没有运算符,那么编程语言将无法实现任何运算。 运算符主要用于在执行程序代码运算,例如:加法、减法、大于、小于等 。下面介绍:

  • 算术原算符
  • 逻辑运算符
  • 比较运算符
  • 三元运算符
  • 运算符的优先级

二 算术运算符

2.1 概念

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

  • 具体的表示符号

    运算符 说明
    + 对两个操作数做加法运算
    - 对两个操作数做减法运算
    * 对两个操作数做乘法运算
    / 对两个操作数做除法运算
    对两个操作数做取余运算

2.2 强调

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

2.3 示例 使用 / 和 % 运算符来取得数字 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);
}
}

三 逻辑运算符

3.1 概念

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

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

  • 具体的表示符号如下:

    运算符 含义 说明
    && 逻辑与 如果运算符两边都为True,则整个表达式为True,否则为False
    || 逻辑或 如果运算符两边有一个或两个为 True,整个表达式为 True,否则为 False
    逻辑非 表示和原来的逻辑相反的逻辑

3.2 示例 判断2020年是否为瑞年

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)));
}
}

四 比较运算符

4.1 概念

  • 比较运算符是在条件判断中经常使用的一类运算符,包括:大于、小于、不等于、大于等于、小于等于等

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

    运算符 说明
    == 表示两边表达式运算的结果相等
    != 表示两边表达式运算的结果不相等
    > 表示左边表达式的值大于右边表达式的值
    < 表示左边表达式的值小于右边表达式的值
    >= 表示左边表达式的值大于等于右边表达式的值
    <= 表示左边表达式的值小于等于右边表达式的值

4.2 示例 判断10是否为偶数

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

五 位运算符

5.1 概念

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

  • 左移1位相当于将操作数乘2,右移1位相当于将操作数除2

  • 位运算符包括:与、或、非、左移、右移

    运算符 说明
    & 按位与。两个运算数都是1,则整个表达式为1,否则为0;也可以对布尔型的值进行比较,相当于"与"运算,但不是短路运算
    | 按位或。两个运算数都为0,则整个表达式为0,否则为1;也可以对布尔型的值进行比较,相当于"或"运算,但不是短路运算
    ~ 按位非。当被运算的值为1时,运算的结构为0;当被运算的值为0时,运算结果为1.该操作符不能用于布尔型。对正整数取反,则在原来的数上加1,然后取负数;对负整数取反,则在原来的数上加1,然后取绝对值
    ^ 按位异或。只有运算的两个不同结果才为1,否则为0
    << 左移。把运算符左边的操作数向左移动运算符右边指定的位数,右边因移动空出的部分补0
    >> 有符号右移。把运算符左边的操作数向右移动运算符右边指定的位数。如果是正值,左侧因移动空出的部分补0;如果是负值,左侧因移动空出的部分补1
    >>> 无符号右移。和>>的移动方式一样,只是不管正负,因移动空出的部分都补0

    5.2 示例 使用位运算符计算2的立方

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

六 三元运算符

6.1 概念

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

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

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

    其中:

    • 布尔表达式:判断条件,它是一个结果为布尔型值的表达式
    • 表达式1:如果布尔型表达式的值为True,该三元运算得到的结果就是表达式1的运算结果
    • 表达式2:如果布尔表达式的值为False,该三元运算符得到的结果就是表达式2的运算结果
    • 在三元表达式中表达式1和表达式2的结果的数据类型要兼容

6.2 实例 使用三元运算符判断,如果10位偶数则输出偶数,否则输出奇数

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

七 赋值运算符

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

  • 常用赋值运算符

    运算符 说 明
    = x=y,等号右边的值给等号左边的变量,即把变量y的值赋给变量x
    += x+=y,等同于x=x+y
    -= x-=y,等同于x=x-y
    *= x*=y,等同于x=x*y
    /= x/=y,等同于x=x/y
    %= x%=y,等同于x=x%y,表示求x除以y的余数
    ++ x++或++x,等同于x=x+1
    x--或--x,等同于x=x-1
  • 需要注意的是:++和--运算符放在操作数前和操作数后是由区别的,如果放在操作数前,需要现将操作数加1或减1,然后再与其他操作数进行运算;如果放在操作数后,需要先与其他操作数进行运算,然后操作数自身再加1

八 运算符的优先级

  • 在C#中基本的运算符,在表达式中使用多个运算符进行计算时,运算符的运算有先后顺序

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

    运算符 结合性
    .(点)、()(小括号)、[](中括号) 从左到右
    +(正)、-(负)、++(自增)、--(自减)、~(按位非)、!(逻辑非) 从右到左
    *(乘)、/(除)、%(取余) 从左到右
    +(加)、-(减) 从左到右
    <<、>>、>>> 从左到右
    <、<=、>、>= 从左到右
    ==、!= 从左到右
    & 从左到右
    | 从左到右
    ^ 从左到右
    && 从左到右
    || 从左到右
    ?: 从右到左
    =、+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、>>=、>>>= 从右到左