运算符
运算符是表示各种不同运算的符号,运算符和运算紧密相关
算数运算符
算术运算符用于对操作数进行算术运算
(1)除法运算符和模运算符
需要说明的是,尽管+、-、*和/这些运算符的意义和数学上的运算符是一样的。
但是,对于除法运算符来说,整数相除的结果也应该为整数,比如7/5和9/5的结果都为1,而不是1.4及1.8,计算结果要舍弃小数部分。
可以通过模运算符%来获得这个除法的余数。运算符%可以应用于整数和浮点类型,例如,10%3的结果为1,10.0%3.0的结果为1。
(2)自增运算符和自减运算符
在C#中,还有两种特殊的算术运算符:++(自增运算符)和
–(自减运算符),其作用是使变量的值自动增加1或者减去1。
x=x+1和x++的作用是一样的,x=x-1和x–的作用也是一样的。++(自增运算符)和–(自减运算符)都是一元运算符,**只能用于变量,而不能用于常量或表达式,**例如,12++或–(x+y)都是错误的。
自增和自减运算符可以在操作数前面(前缀),也可以在操作数后面(后缀)。例如:
++x; //前缀格式
x++; //后缀格式
static void Main(string[] args)
{
int x = 5;
int y = x++;
Console.WriteLine("y={0}", y);
y = ++x;
Console.WriteLine("y={0}", y);
Console.ReadKey();
}
赋值运算符
赋值运算符用于将一个数据赋予一个变量,赋值操作符的左操作数必须是一个变量,赋值结果是将一个新的数值存放在变量所指示的内存空间中。
在C#中,可以对变量进行连续赋值,此时,赋值操作符是右关联的,这意味着从右向左运算符被分组。
例如,x=y=z等价于x=(y=z)。
关系运算符
关系用于创建一个表达式,该表达式用来比较两个对象,并返回布尔值。关系运算符就是用于在程序中比较两个对象的大小
关系运算可以和算术运算混合起来使用,此时,关系运算符两边的运算对象可以是算术表达式的值,在C#中,是先求表达式的值,然后将这些值做关系运算。例如:
4+8>6-3 //结果是true
逻辑运算符
逻辑运算符用于表示两个布尔值的逻辑关系,逻辑运算结果是布尔类型
逻辑与 有0为0 有假为假
逻辑或 有1为1 有真为真
逻辑非的优先级最高,逻辑与的优先级高于逻辑或。
位运算符
位运算是指二进制位的运算,每个二进制都是由0或1组成,进行位运算时,依次取运算对象的每一个位,进行位运算。
左移位运算将各个位向左移动指定的位数,舍弃移出的位,并在右边用0填充。右移位运算将各个位向右移动指定的位数,舍弃移出的位,并在左边用0填充。
按位与运算通过逐位执行逻辑AND的计算。按位或运算通过逐位执行逻辑OR的计算。
按位异或运算通过逐位执行XOR计算,即两个操作数相同时,结果为0,两个操作数不相同时,结果为1。
条件运算符
条件运算符由“?”和“:”组成,条件运算符是一个三元运算符。条件运算符的一般格式为:
操作数1? 操作数2:操作数3
其中操作数1的值必须为布尔值。进行条件运算时,首先判定“?”前面的布尔值是true还是false,如果是true,则条件运算表达式的值等于操作数2的值;如果是false,则条件运算表达式的值等于操作数3的值。
其他运算符
(1)is运算符。is运算符用于检查表达式是否指定的类型,如果是,结果为true,否则结果为false。
int i = 22;
bool isInt = i is int; //isInt = true
(2)sizeof运算符。sizeof运算符获得值类型数据在内存占用的字节数。
运算的结果是一个整数,此整数代表字节数。例如:
int i = sizeof(int); //结果为i = 4。因为每个int型变量占用4个字节
(3)new运算符。new运算符用于创建对象和调用对象的构造函数。
(4)typeof运算符。typeof运算符用于获得类型System.Type对象。
(5)checked和unchecked运算符。这两个运算符用于控制整数算术运算中当前环境的溢出情况。
Checked:结果溢出,出现错误。
Unchecked:结果溢出出现错误,但是忽略错误。