表达式-数学运算符

    介绍完声明和初始化变量,下面该处理它们了。C#包含许多进行这类处理的运算符,包括前面使用过的=赋值运算符,把变量和字面值与运算符符合起来,就可以创建表达式,它是计算的基本建立块。

    运算符的范围有简单的,也有非常复杂的。其中一些可能只在数学应用程序中使用。简单的操作包括所有的基本计算操作,而复杂的操作则包括通过变量里的内容的二进制表示来处理它们。还有专门用于处理布尔值的逻辑运算符。

    运算符大致分为3类。

     一元运算符,处理一个操作数

     二元运算符,处理两个操作数

     三元运算符,处理三个操作数

    大多数运算符都是二元运算符,只有几个一元运算符和一个三元运算符,即条件运算符(条件运算符返回布尔值)。

    数学运算符只包括一元运算符和二元运算符,共有5个,其中2个有二元和一元两种形式。

     +(二元):表示两数相加。

     -(二元):表示两数相减。

     *(二元):表示两数相乘。

     /(二元):表示两数相除。

     %(二元):表示两数相除的余数(求模)

     +(一元):表示变量1的值等于变量2的值

     -(一元):表示变量1的值等于变量2的值除/乘以-1

    +(一元)运算符有点奇怪,因为它对结果没有影响。它不会把值改成正的;如果变量2是-1,则+变量2仍是-1。但这是一个普遍认可的运算符,所以也把它包含进来。最常用的是你可以定制它的操作,在运算符的重载时会介绍它。

 

    上面都是简单的数值类型,因为使用其他简单类型,结果可能不太清晰。如果把两个布尔值加在一起会得到什么结果?此时,如果对bool变量使用+或其他数学运算符,编译器就会报错。char变量的相加也会让人搞不懂。记住,char变量实际上存储的就是数字,所以把两个char变量加在一起也会得到int类型的数字。这是一个隐式转换的例子,稍后会介绍这些,因为它也可以用到三个变量混合类型的情况。

     二元运算符+在用于字符串类型变量时也是有意义的,表示两个字符串的连接值,但其他数学运算符不能用于字符串的处理。

    这里介绍另外两个运算符是递增和递减运算符。它们都是一元运算符,可以以两种方式使用:放在操作数前面或后面。

     ++:var1的值是var2+1,var递增1(var1=++var2)

     --:var1的值是var2-1,var2递减1(var1=--var2)

     ++:var1的值是var2,var2递增1(var1=var2++)

     --:var1的值是var2,var2递减1(var1=var2--)

    这里的关键因素是这些运算符总是改变存储在操作数中的值。

     *++总是使操作数加1

     *--总是使操作数减1

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

    考虑下面的代码:

     int var1,var2 = 5,var3 = 6;

     var1 = var2++ * --var3;

    答案是25。

 

    下面做一个例子,说明如何使用数学运算符,并介绍另外两个有用的概念。代码提示用户输入一个字符串和两个数字,然后显示计算结果:

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 
 5 namespace ConsoleApplication3
 6 {
 7     class Program
 8     {
 9         static void Main(string[] args)
10         {
11             double firstNumber, secondNumber;
12             string userName;
13 
14             Console.WriteLine("请输入用户名:");
15             userName = Console.ReadLine();//将用户输入的用户名存储在变量userName中
16             Console.WriteLine("欢迎 {0}!",userName);
17             
18             Console.WriteLine("请输入一个数字:");
19             firstNumber = Convert.ToDouble(Console.ReadLine());//将用户输入的第一个数字转换成double类型,并存储在firstNumber中
20 
21             Console.WriteLine("请输入第二个数字");
22             secondNumber = Convert.ToDouble(Console.ReadLine());//将用户输入的第二个数字转换成double类型,并存储在secondNumber中
23 
24             Console.WriteLine("{0}+{1}={2}",firstNumber,secondNumber,firstNumber + secondNumber);
25             Console.WriteLine("{0}-{1}={2}", firstNumber, secondNumber, firstNumber - secondNumber);
26             Console.WriteLine("{0}*{1}={2}", firstNumber, secondNumber, firstNumber * secondNumber);
27             Console.WriteLine("{0}/{1}={2}", firstNumber, secondNumber, firstNumber / secondNumber);
28             Console.WriteLine("{0}%{1}={2}", firstNumber, secondNumber, firstNumber % secondNumber);
29             Console.ReadKey();
30         }
31     }
32 }
33 
posted @ 2009-03-06 12:58    阅读(789)  评论(0编辑  收藏  举报