【C#基础】运算符一


         第一篇简单介绍了下我对C#以及IDE的认识,下面这篇文章我想把我对运算符的认识分享出来。

         C#中的运算符和VB的运算符基本雷同。在C#中,运算符有算术运算符、逻辑运算符等。我们先来看看算数运算符。

算术运算符:

        C#中的“+、-、*、/以及mod(%,即取余)”这些算术运算符的意义就是我们在数学中已经接触到的加减乘除取余。需要注意的是在运算中我们需要将变量提前转变为为数值类型的变量,否则程序将不能正常的运行。下面是一个小例子:
class Program
    {
        static void Main(string[] args)
        {
            #region 总成绩和平均成绩
            int chinese = 90;
            int math = 80;
            int english = 79;

            int sum = chinese + math + english;  //总成绩

            int avg = sum / 3;  //平均成绩

            Console.WriteLine("总成绩" + sum + "分");
            /*另外一种方法:
             * console.writeline("总成绩"+(chinese+math+english));
             * console.writeline("平均成绩"+(chinese+math+english)/3);
             */

            Console.WriteLine("平均成绩" + avg + "分");
            Console.ReadKey();
            #endregion





        }
    }
}

        PS:我想说的是上面代码中的注释部分。注释部分提到的另外一种方法,即不定义新的变量sum和average来存储总成绩和平均成绩。为什么同一个功能可以写成两种不同的代码呢?这是因为第一种代码,即非注释部分的定义变量存储总成绩和平均成绩的代码的可读性相对于第二种代码即注释部分提到的不通过定义新的变量存储总成绩和平均成绩更高些。但是第二种代码因为其定义的变量比第一种的多两个,所以第二种代码的内存占用要相对第一种代码小一些。我们知道,一段程序占用内存越少,越不容易出现内存溢出这个问题。两种方法各有优劣吧,就看大家怎么权衡了。

一元、二元算术运算符

        首先,我们需要知道为什么一元和二元算术运算符是怎么划分的。如果一个运算符旁边只有一个操作数(变量)即可进行运算,那么这个运算符就是一元运算符,如“++”和“--”;而如果一个运算符旁边必须有两个操作数才能进行运算,那么这个运算符就是二元运算符,我们平时常用的加减乘除之类的就是二元算术运算符了。这里我们需要注意一个二元运算符相对操作数的位置不同,对操作数的影响也不同这样一个问题,详情如下:

不在表达式中:

namespace 博客用
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 8,A=8;
            a++;
            ++A;

            Console.WriteLine("A={0};a={1}. ",A,a );
            Console.ReadKey();

        }
    }
}

运行结果:

        从上面的代码和运行结果看出:二元运算符不在表达式中时,运行结果不受其相对于操作数的位置的影响,都是自身加1.

在表达式中:

 class Program
    {
        static void Main(string[] args)
        {
            int a = 8, A = 8;
            int a1, A1,b, B;

            b = a++;
            a1 = a;
            B = ++A;
            A1 = a;

            Console.WriteLine("现在a=A=8");
            Console.WriteLine("计算后,a1={0};A1={1};b={2};B={3}",a1,A1,b,B );
            Console.ReadKey();

        }
    }
}

运行效果:


        结合代码和计算结果我们可以看出:在计算中,当二元运算符出现在操作数的右边时如“b=a++”,这时二元运算符“++”出现在操作数“a”的右边。这种情况下,“a”再以原值参与运算后自身再加1;当二元运算符出现在操作数的左边时,自身先加1并以加1后的值参与运算。

        还有一点:一元运算符要优先于二元运算符进行计算,小例子:

        嘿嘿,大家可以一起讨论下哈。

复合赋值运算符:

       复合赋值运算符,看着这名字感觉很是威武不凡,然并卵,它其实就是这样子的“+=、-=、*=、/=、%=”。我们以“+=”为例进行说明:
原始社会:

现代社会:

        从上面两张图对比的结果来看:“+=”的作用就是使得“a=a+b”这个表达式的结果和“a+=b”这个表达式的结果相同。
        此外,复合赋值运算符还有一点好处就是在进行计算时是直接在内存中对操作数进行数学运算并更新操作数的值;而一般的运算符在对操作数进行计算时需要先把操作数从内存中提取出来,进行相应的计算并更新操作数的值后,再把操作数存储到内存中。简而言之,就是复合赋值运算符的运算速度更快。

关系运算符:

        关系运算符也称比较运算符。C#中的关系运算符在意义上和数学中的关系运算符保持一致,不同的是两者的部分写法不同:

小例子:

总结:

        算术运算符中,关于一元和二元的优先级别,不知道用错了会不会导致程序崩溃,悲催的是不知道怎么实验......复合赋值运算符的话,个人感觉对程序的贡献不叫突出。也许小程序中看不出复合赋值运算符的有点,但是在涉及到大数据运算的程序中,我相信复合赋值运算符是相当给力的。
It's my honour that you read my article,thank you~~ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值