运算符在程序中应用广泛,尤其在计算功能中,常常需要大量的运算符。运算符结合操作数,便形成了表达式,并返回运算结果。
一. 运算符
1.算术运算符
算术运算符用于对数值数据进行计算。
在C#语言中,根据两个操作数的类型特点,加法运算符具有多重作用。
* 两个操作数均为数字,相加的结果为两个操作数之和。
* 两个操作数均为字符串,把两个字符串连接在一起。
* 两个操作数分别为数字和字符串,则先把数字转换成字符串,然后连接在一起。
* 两个操作数分别为数字和字符,则先把字符转换成Unicode代码值,然后求和。
算数运算符中的求模运算(%)本质上也是一种除法运算,只不过它舍弃商,而把小于除数的未除尽部分(即余数)作为运算结果,有称为取与运算
2.关系运算符
关系运算符又称为比较运算符,用来比较两个操作数的大小,或者判断两个操作数是否相等,运算符的结果为true或false。
操作数只能是值类型的数据。
3.逻辑运算符
逻辑运算符读操作数或表达式执行布尔逻辑运算,常见的逻辑运算符如下表所示:
运算符 | ! | & | | | ^ | && | || |
含义 | 逻辑非 | 逻辑与 | 逻辑或 | 逻辑异或 | 条件与 | 条件或 |
实例 | !(8>2) | 8&2 | 8|2 | 8^2 | (8>2)&&(3>4) | (8>2)||(3>4) |
结果 | False | 0 | 10 | 10 | False | True |
逻辑非(!)运算结果是操作数原有逻辑的反值,逻辑与(&),逻辑或(|),逻辑异或(^)三个运算符都是比较两个整数的相应位。只有当两个整数的对应位都是1时,逻辑与(&)运算符才返回结果1,否则返回结果0;当两个结果整数的对应位都是0时,逻辑或(|)运算符才返回结果0,否则返回结果1;当两个整数的对应位一个是1,而另一个是0时,逻辑异或(^)运算符才返回结果1,否则返回结果0;
条件与(&&)与条件或(||)运算符用于计算两个条件表达式的值,当两个条件表达式的结果都是真时,条件与(&&)运算符才返回结果真,否则返回结果假;当两个条件表达式的结果都是假时,条件或(||)运算符才返回结果假,否则返回结果真。
4.赋值运算符
赋值运算符的作用是把某个常量或变量或表达式的值赋值给另一个变量。除了简单的赋值运算符(=)外,常见的符合运算符如表所示:
运算符 | += | -= | *= | /= | %= |
含义 | 加法赋值 | 减法赋值 | 乘法赋值 | 除法赋值 | 取模赋值 |
示例 | 8+=2 | 8-=2 | 8*=2 | 8/=2 | 8%=2 |
结果 | 10 | 6 | 16 | 4 | 0 |
从上面的示例可以看出,复合赋值运算符实际上是特殊赋值运算符的一种缩写形式,目的是使对变量的改变更简洁。
5.其他特殊运算符
C#还有一些特殊的运算符,不能简单的归为某个类型。
(1)is运算符
is运算符用于检查变量是否为指定的类型如果是,返回真,否则返回假。 例如下面的示例:就返回True
bool b = 8 is int;
(2)as运算符
as运算符用于在相互兼容的引用类型之间执行转换操作,如果无法进行转换则返回null值,例如:
object temp1 = “a string” as object;
(3)条件运算符
条件运算符(?:)根据条件表达式的取值返回两个可选值中的一个:如果条件的取值为true,则返回第一个可选值,如果条件取值为False,则返回第2个可选值。例如,下面的语句返回true。
bool b = (3<5)?true:false;
(4)new运算符
new运算符用于创建一个新的类型实例,包括创建值类型,类类型,数值类型,和委托类型的实例。例如下面的语句用来创建一个数组类型的实例。
int [] a = new int [5];
(5)typeof运算符
typeof运算符用于返回特定类型的System.Type对象,并可通过Type对象访问基类及本类的一些信息。例如,下面的语句将返回System.int32,表明int值类型的Syste.Type对象是System.int32.
System.Type t = typeof(int);
(6)运算符的优先级
当表达式中包含一个以上的运算符时,程序会根据运算符的优先级进行运算,优先级高的运算符会比优先级低的运算符先被执行。
常见的运算符的优先级(由高到低)
分类 | 运算符 |
特殊 | new,typeof |
一元 | +(正),-(负),!,++,-- |
乘除 | *,/,% |
加减 | +,- |
关系 | >.<,>=,<=,is,as |
关系 | ==, != |
逻辑与 | & |
逻辑异或 | ^ |
逻辑或 | | |
条件与 | && |
条件或 | || |
条件 | ?: |
赋值 | +=,-=,*=,/=,&= |
二. 表达式
表达式有操作数(变量,常量,函数),运算符和括号()按一定规则组成。表达式通过运算产生结果,运算结果,运算结果的类型由操作数和运算符共同决定。表达式即可以跟简单,也可以非常复杂。例如:
int i =127;
int j =36;
Console.WriteLine(Math.Sin(i*i+j*j));
上述代码中,表达式i*i+j*j作为Math.Sin()方法的方法的参数使用,而表达式Math.Sin(i*i+j*j)还是Console.WriteLine()方法的参数。