天轰穿C#教程之数学运算符【原创】

  有5个简单的数学运算符,其中2个有二元和一元两种形式.下表列出了这些运算符,并用一个示例来说明它们的用法,以及使用简单的数值类型(整数和浮点数)时它们的结果


  运算符     类别          示例表达式                            结    果

  +              二元          var1 = var2 + var3;                var1的值是var2与var3的和

  -               二元          var1 = var2-var3;                   var1的值是从var2减去var3所得的值

  *               二元          var1 = var2 * var3;                 var1的值是var2与var3的乘积

  /                二元          var1 = var2 / var3;                 var1是var2除以var3所得的值

  %              二元          var1 = var2 % var3;               var1是var2除以var3所得的余数

  +               一元          var1 = +var2;                         var1的值等于var2的值

  -                一元          var1 =-var2;                           var1的值等于var2的值除乘以-1

  小提示: +(一元)运算符有点古怪,因为它对结果没有影响。它不会把值变成正的:如果var2是-1,则+var2仍是-1。但是,这是一个普遍认可的运算符,所以也把它包含进来。这个运算符最有用的方面是,可以定制它的操作,本书在后面探讨运算符的重载时会介绍它。

  小天:上面的示例都假设var使用简单的数值类型,这些类型在前面的示例中都练习N次了,所以不用给示例也比较清楚了。不过我想如果把两个布尔值加在一起,会得到什么结果?

  老田:如果对bool变量使用+(或其它数学运算符),编译器会报告出错。另外char变量的相加会有点让人摸不着头脑。因为,char变量实际上存储的是数字,所以把两个char变量加在一起也会得到一个数字(其类型为int)。这是一个隐式转换的示例。

  二元运算符+在用于字符串类型变量时也是有意义的。如下所示。

  运算符          类    别     示例表达式               结    果

  +                   二元         ar1 = var2 + var3;     var1的值是存储在var2和var3中的字符串的连接值

  其实,字符串相加之前的示例也有做到,不过不多,下面再看两种形式的。

  string str1 = "如果自卑对人生没有帮助,";

  string str2 = "那就试试自信吧!";

  string str3,str4;

  //第一种是两个字符串变量相加

  str3 = str1 + str2;

  //第二种是一个字符串变量和一个字符串相加,双引号中间的被认为是字符串

  str4 = str3 + "自信的第一步,就是从潜意识鼓励自己、认同自己。";

  Console.WriteLine(str3);

  Console.WriteLine(str4);

  Console.Read();

  小天:郁闷,除了+号有用外,其它数学运算符不能用于字符串的处理,害我浪费时间做了半天举一反三的练习。

  老田:你这话不对,最起码在你举一反三的练习过程中知道了其它的数学运算符不能用于字符串处理,另外,你敲代码的速度也更快了。

  接下来介绍另外两个运算符:递增和递减运算符,它们都是一元运算符,可以以两种方式使用:放在操作数的前面或后面。简单表达式的结果如下表所示。

  运算符      类    别        示例表达式               结    果

  ++             一元            var1 = ++var2;          var1的值是var2 + 1,var2递增1

  ++             一元            var1 = var2++;          var1的值是var2,var2递增1

  --               一元            var1=--var2;              var1的值是var2 -- 1,var2 递减1

  --               一元             var1 = var2-- ;           var1的值是var2,var2 递减1

  这些运算符改变存储在操作数中的值。

  ●  ++总是使操作数加1

  ●  -- 总是使操作数减1

  var1中存储的结果有区别,其原因是运算符的位置决定了它什么时候发挥作用。把运算符放在操作数的前面,则操作数是在进行任何其它计算前受到运算符的影响,而把运算符放在操作数的后面,则操作数是在完成表达式的计算后受到运算符的影响。

  这有益于另一个示例,考虑下面的代码:

  int var1, var2, var3, var4, var5 = 5, var6 = 5, var7 = 5, var8 = 5;

  var1 = ++var5;

  var2 = var6++;

  var3 = --var7;

  var4 = var8--;

  Console.WriteLine("var1={0},var2={1},var3={2},var4={3}"

  , var1, var2, var3, var4);

  //综合实例,想下为什么等于这个结果

  int v1=2, v2=3, v3;

  v3 = v1++ * --v2;

  Console.WriteLine("v3={0}",v3);

  上面两个例题的执行结果如图2-26


 

       

 图2-26

 

  小天:多新鲜啊,最后的值等于4,这是因为v1后面的++是要在当前表达式之后才生效,那么换句话说,在这个表达式中v1后面的++其实是可以忽略的。而v2前面的--则是在当前表达式中会生效的,所以效果是v1=2,v2=3-1,还是等于2,于是最终是v1的2乘以v2的2,于是当然等于4了。

  这类表达式有许多用途,特别适合于在循环中使用,这将在后面的流程控制章节讲解。

  本文为天轰穿原著,转载请注明出处及作者!

原文地址:https://www.cnblogs.com/thcjp/p/2747435.html