(4)C# 基础 ——运算符的使用

.NET C# Web开发学习之路——运算符的使用

运算符针对操作数进行,同时产生计算结果。运算符是一种专门用来处理数据运算的特殊符号,数据变量结构运算符形成完整的程序运算语句。

1. 算术运算符

“+”,“-”,“/”,“*”,“%”运算符都称为算数运算符,他们分别进行加、减、除、乘、取余运算。

        //加法运算符 +
        int m1 = 927;
        int m2;
        m2 = m1 + m1;
        Console.WriteLine("加法运算符 + :{0}", m2.ToString());

        //减法运算符 -
        decimal r1 = (decimal)1112.82;
        decimal r2 = (decimal)9270.81;
        decimal r3;
        r3 = r2 - r1;
        Console.WriteLine("减法运算符 - :{0}", r3.ToString());

        //乘法运算符 *
        int int1 = 10;
        int int2 = 20;
        int intMul = 0;
        intMul = int1 * int2;
        Console.WriteLine("乘法运算符 * :{0}", intMul.ToString());

        //除法运算符 /
        int chushu1 = 45;
        int chushu2 = 5;
        int shang;
        shang = chushu1 / chushu2;//这里省略了 对除数是否为0的判断
        Console.WriteLine("除法运算符 /:{0}", shang.ToString());

        //求余运算符 %
        int l1 = 45;
        int l2 = 10;
        int l3;
        l3 = l1 % l2;
        Console.WriteLine("求余运算符 %:{0}", l3.ToString());

程序运算结果:
加法运算符 + :1854
减法运算符 - :8157.99
乘法运算符 :200*
除法运算符 /:9
求余运算符 %:5


2. 赋值运算符

赋值运算符用来为变量、属性和事件等元素赋值,包括“=”,“!=”,“+=”,“-=”,“*=”,“/=”,“%=”。“&=”,“|=”,“&=”,“<<=”,“<<=”等运算符。赋值运算符的左操作数必须是变量、属性、索引器或事件类型的表达式,如果赋值运算符两边操作数类型不一致,急需要首先进行类型转换,然后在赋值。

在使用赋值运算符是,右操作数表达式所属的类型必须可隐式转换为左操作数所属的类型,运算时将右操作数的值赋给左操作数制定的变量、属性或索引器元素。

名称运算符运算规则意义
赋值=将表达式赋值给变量将右边的值给左边
加赋值+=x+=yx=x+y
减赋值-=x-=yx=x-y
除赋值/=x/=yx=x/y
乘赋值*=x*=yx=x*y
模赋值%=x%=yx=x%y
位与赋值&=x&=yx=x&y
位或赋值I=x I= yx=x I y
右移赋值.>>=x >>= yx=x >> y
左移赋值<<=x <<= yx=x << y
异或赋值^=x ^= yx=x ^ y
      //赋值运算符 +=
        int i = 927;
        i += 112;
        Console.WriteLine("赋值运算符+=:{0}", i.ToString());

程序运行结果为:
赋值运算符+=:1039


3. 关系运算符

关系运算符可以实现两个值的比较运算,并且在比较之后会返回一个代表运算结果的布尔值。

关系运算符运算符关系运算符说明
==等于!=不等于
>大于.>=大于等于
<小于<=小于等于
        //==
        decimal Q1 = 1981.00m;
        decimal Q2 = 1982.00m;
        bool result1;
        result1 = Q1 == Q2;
        Console.WriteLine(result1);

        // !=
        decimal S1 = 1981.00m;
        decimal S2 = 1982.00m;
        bool result2;
        bool result3;
        result2 = S1 != S2;
        result3 = !(S1 == S2);
        Console.WriteLine(result2);
        Console.WriteLine(result3);

        //<
        int U1 = 1112;
        int U2 = 927;
        bool result4;
        result4 = U1 < U2;
        Console.WriteLine(result4);

        //>
        int F1= 18;
        int F2 = 8;
        bool result5;
        result5 = F1 > F2;
        Console.WriteLine(result5);

        //<=
        int X1 = 12;
        int X2 = 9;
        bool result6;
        result6 = X1 <= X2;
        Console.WriteLine(result6);

        //>=
        int T1 = 1112;
        int T2 = 927;
        bool result7;
        result7 = T1 >= T2;
        Console.WriteLine(result7);

程序运行结果为:
False
True
True
False
True
False
True


4.逻辑运算符

逻辑运算符用于对两个表达式执行布尔逻辑运算。C#中逻辑运算符大体可以分为按位逻辑运算符和布尔逻辑运算符两种。
按位逻辑运算符是对两个正数表达式的相应位执行位逻辑运算,二布尔逻辑运算符是对两个布尔表达式执行布尔逻辑运算。

4.1 按位“与”运算符 &
用于比较两个整数的相应位。执行位“与”运算时,如果两个数的对应为都是1,返回相应的结果为是1;如果两个整数的相应位都是0或者其中一个是0,则返回相应的结果为是0。

4.2 按位“或”运算符 |
用于比较两个整数的相应位。执行位“或”运算时,如果两个整数的对应为有一个是1或者都是1,返回相应的结果为是1;如果两个整数的对应为都是0,则返回相应的结果为是0;

4.3 按位“异或”运算符 ^
用于比较两个整数的相应位。执行位“异或”运算时,如果两个整数的对应位有一个是1而另外一个是0,返回相应的结果为是1;如果两个整数的对应为都是0或者1,则返回相应的结果为是0;

4.4 布尔“与”运算符 &&
当两个布尔表达式的结果都为真是,则返回结果为真;否则返回结果为假。

4.5 布尔“或”运算符 ||
当两个布尔表达式当中有一个表达式计算结果为真是,则结果为真。当两个布尔表达式的返回计算结果都为假是,则结果为假。

4.6 布尔“异或”运算符 ^
只有当其中一个表达式为真,而另一个表达式为假时,该表达式返回的结果为真;当两个布尔表达式的计算结果都为假或都为真是,则返回结果为假 。

        //按位“与”运算符 &
        int num1 = 1;
        int num2 = 85;
        bool iseven;
        iseven = (num1 & num2)==0;
        Console.WriteLine(iseven);
        //分析:首先十进制是1对应的二进制数为00000001,十进制85对应的二进制数为01010101,根据规则得出(1&85)=0,
        //而上述代码使(1&85)=0,所以返回false;

        //按位“或”运算符 |
        int iseven2;
        iseven2 = (num1 | num2);
        Console.WriteLine(iseven2);
         //分析:首先十进制是1对应的二进制数为00000001,十进制85对应的二进制数为01010101,根据规则得出(1|85)=85

        //按位“异或”运算符 ^
        int iseven3;
        iseven3 = (num1 ^ num2);
        Console.WriteLine(iseven3);
         //分析:首先十进制是1对应的二进制数为00000001,十进制85对应的二进制数为01010101,根据规则得出(1^85)=84

        //布尔“与”运算符 &
        bool bls = false;
        int Lnum = 20;
        bool result8;
        result8 = bls & (Lnum < 30);
        Console.WriteLine(result8);

        //布尔“或”运算符 |
        bool result9;
        result9 = bls | (Lnum < 30);
        Console.WriteLine(result9);

        //布尔“异或”运算符 ^
        bool result10;
        result10 = bls ^ (Lnum < 30);
        Console.WriteLine(result10);

程序运行结果为:
False
85
84
False
True
True


5.移位运算符

对于 X>>N 或X<<.N形式的运算,含义是将X向右或者向左移动N位,得到结果的类型与X相同。在此,X的类型只能是int、uint、long、ulong,N的类型只能是int,或者显式转换为这些类型之一没否则编译程序时会出现错误。

5.1 左移运算符<<
使用左移位运算符可以将数想左移位,其作用是所有的胃都向左移动指定的次数,高位自动丢失,地位以0填充。
5.2 右移运算符>>
使用右移位运算符和左移位相反,低位自动丢失,高位以0填充。

        // >> 右移位运算符
        uint intMax = 4294967295;
        uint bytemask = intMax >> 16;
        Console.WriteLine(bytemask);


        //<<左移位运算符
        uint bytemask2 = intMax << 8;
        Console.WriteLine(bytemask2);

程序运行结果为:

65535
4294967040


6.其他特殊运算符

6.1 is 运算符
is运算符用于检查变量是否为指定的类型。如果是,返回真,否则,返回假。

6.2 as 运算符
as运算符用于在兼容的引用类型之间执行转换。

6.3 条件运算符 ?:
条件运算符是来根据布尔型表达式的值返回两个值中的一个。如果条件为True,则返回第一个表达式并以其计算结果为准;如果为False,则计算第二个表达式并以其计算结果为准

6.4 new运算符
new运算符用于创建一个新的类型实例,具有以下三种形式:

  • 对象创建表达式,用于创建一个类类型或者值类型的实例。
  • 数组创建表达式,用于创建一个数组类型的实例。
  • 代表创建表达式,用于创建一个新的代表类型实例。

6.5 typeof运算符
用于获得系统原型对象的类型,也就是Type对象,Type对象包含关于值类型和引用类型的信息。

        //is 运算符
        int a = 0;
        bool result11 = a is int;
        Console.WriteLine(result11);

        //as 运算符
        object obj = "123你好";
        string b = obj as string;
        Console.WriteLine(b);

        //条件运算符 ?:
        //判断2018是不是闰年
        int year = 2018;
        bool isleapyear = ((year % 400) == 0 || ((year % 4) == 0 && ((year % 100) != 0)));
        string yesno = isleapyear ? "Yes" : "No";
        Console.WriteLine(yesno);

        //new 运算符
        string[] strs = new string[2];
        strs[0] = "hello";
        strs[1] = "world";
        for (int j = 0; j < strs.Length; j++)
        {
            Console.WriteLine(strs[j]);
        }

        //typeof 运算符

        Type mytype = typeof(int);
        Console.WriteLine("类型:{0}",mytype);

程序运行结果为:
True
123你好
No
hello
world
类型:System.Int32


7.运算符的优先级

分类运算符优先级
基本x.y、f(x)、a[x]、x++、x–、new、typeof、checked、unchecked1
一元+、-、!、~、++、–、(T)x、~2
乘除*、/、%3
加减+、-4
移位<<、>>5
比较<、>、<=、>=、as、is6
相等==、!=7
位与&8
位异或^9
位或I10
逻辑与&&11
逻辑或II12
条件?:13
赋值=、+=、-=、*=、/=、%=、&=、I=、^=、<<=、>>=14
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值