C#入门系列 -- 运算符

举报
陈言必行 发表于 2022/03/05 14:54:36 2022/03/05
【摘要】 在C#中,运算符是术语或符号,用以表明数值或者表达式的运算规则。运算符所操作的数值或表达式称为操作数。

一,运算符概念

在C#中,运算符是术语或符号,用以表明数值或者表达式的运算规则。

运算符所操作的数值或表达式称为操作数。

接受一个操作数的运算符称作一元运算符,例如取负运算符-、自增运算符++。

接受两个操作数的运算符称作二元运算符,例如算术运算符+、-、*、/。

条件运算符?:接受三个操作数,是C#中唯一的三元运算符。

C#运算符对操作数的形式和数据类型都有要求,

如二元运算符一般要求其两个操作数类型相同,或两个操作数类型能隐式转换为同一类型、逻辑运算的操作数只能为bool类型等。

根据运算的类型,可把运算符分为:

  • 算术运算符
  • 赋值运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 其他运算符

二,算数运算符

算数运算符包括:+,-,x,/,%,++,–

运算符 描述 实例
+ 把两个操作数相加 10 + 20 结果: 30
- 从第一个操作数中减去第二个操作数 10 - 20 结果: -10
* 把两个操作数相乘 10 * 20 结果: 200
/ 分子除以分母 20 / 10 结果: 2
% 取模运算符,整除后的余数 20 % 10 结果: 0
++ 自增运算符,整数值增加 1 10++ 结果: 11
自减运算符,整数值减少 1 10-- 结果: 9

三,赋值运算符

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

示例:

class Program
{
    static void Main(string[] args)
    {
        int a = 21;
        int b;

        b = a;
        Console.WriteLine(" = b 的值 = " + b);
        //输出: = b 的值 = 21
        b += a;
        Console.WriteLine(" += b 的值 = " + b);
        //输出: += b 的值 = 42

        b -= a;
        Console.WriteLine(" -= b 的值 = " + b);
        //输出: -= b 的值 = 21

        b *= a;
        Console.WriteLine(" *= b 的值 = " + b);
        //输出: *= b 的值 = 441

        b /= a;
        Console.WriteLine(" /= b 的值 = " + b);
        //输出: /= b 的值 = 21

        b = 200;
        b %= a;
        Console.WriteLine(" %= b 的值 = " + b);
        //输出: %= b 的值 = 11

        b <<= 2;
        Console.WriteLine(" <<= b 的值 = " + b);
        //输出: <<= b 的值 = 44

        b >>= 2;
        Console.WriteLine(" >>= b 的值 = " + b);
        //输出: >>= b 的值 = 11

        b &= 2;
        Console.WriteLine(" &= b 的值 = " + b);
        //输出: &= b 的值 = 2

        b ^= 2;
        Console.WriteLine("^= b 的值 = " + b);
        //输出: ^= b 的值 = 0

        b |= 2;
        Console.WriteLine("|= b 的值 = " +  b);
        //输出: |= b 的值 = 2

        Console.ReadLine();
    }
}

四,关系运算符

运算符 描述
== 检查两个操作数的值是否相等,如果相等则条件为真。
!= 检查两个操作数的值是否相等,如果不相等则条件为真。
> 检查左操作数的值是否大于右操作数的值,如果是则条件为真。
< 检查左操作数的值是否小于右操作数的值,如果是则条件为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。

五,逻辑运算符

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

六,位运算符

位运算符
位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:

运算符 描述 实例
& 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。
| 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。
^ 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。
~ 按位取反运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0,包括符号位。
<< 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。
>> 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。

示例:

class Program
{
    static void Main(string[] args)
    {
        int a = 60;  // 60 = 0011 1100
        int b = 13;  // 13 = 0000 1101
        int c = 0;

        c = a & b;   //结果:12 = 0000 1100
        Console.WriteLine(" & 结果是: " +  c);

        c = a | b;   //结果:61 = 0011 1101
        Console.WriteLine(" | 结果是: " + c);

        c = a ^ b;   //结果:49 = 0011 0001
        Console.WriteLine(" ^ 结果是: " + c);

        c = ~a;      //结果:  -61 = 1100 0011
        Console.WriteLine(" ~  结果是: " + c);

        c = a << 2;  //结果:240 = 1111 0000
        Console.WriteLine(" << 结果是: " + c);

        c = a >> 2;  //结果:15 = 0000 1111
        Console.WriteLine(" >> 结果是: " + c);

        Console.ReadLine();
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。