2.3 运算符
运算符是组成计算机表达式的关键。常用的运算符有算数运算符、字符串运算符、赋值运算符、逻辑运算符等。本节将结合实际的应用,学习如何使用C#中的运算符。
2.3.1 算数运算符
算数运算符是常见的数学运算,在C#中,用加(+)、减(-)、乘(*)、除(/)表示。
下面的代码演示了常见的4种算数运算,注意,这些参与运算的变量的数据类型,一定是可计算的类型。
class Program
{
static void Main(string[] args)
{
int x, y;
x = 25; //定义变量初始值
y = 5; //定义变量初始值
Console.WriteLine("两个数的和: {0}", x+y); //输出和
Console.WriteLine("两个数的差: {0}", x - y); //输出差
Console.WriteLine("两个数的积: {0}", x * y); //输出积
Console.WriteLine("两个数的商: {0}", x / y); //输出商
}
}
上述代码的运行效果如图2.4所示。

图2.4 算数运算的结果
2.3.2 字符串运算符
字符串运算符是常用的运算符号,用在字符串和字符的处理上。在C#中,字符串运算最常用的运算符是“+”和“[ ]”。“+”用来连接两个字符串,虽然效率有些低,但使用方便。“[ ]”用来以索引方式查找字符串数组中的值,可以被称为字符串的索引器。
下面的实例演示两种运算符的使用方法。
class Program
{
static void Main(string[] args)
{
string str1 = "Hello ";
string str2 = "World!";
string[] strArray ={ "this", "is", "test" };
Console.WriteLine("用+连接字符串的结果: {0}", str1+str2); //输出用+连//接的字符串
Console.WriteLine("数组中的第一个值: {0}", strArray[0]); //输出数组中//的第一个值
Console.WriteLine("输出数组中的第二个值: {0}", strArray[1]);//输出数组中//的第二个值
Console.WriteLine("输出数组中的第三个值: {0}", strArray[2]);//输出数组中//的第三个值
}
}
注意:定义字符串数组使用“{ }”实现,使用“[ ]”索引数组时,从0开始索引。
上述代码的运行效果如图2.5所示。

图2.5 字符串运算的结果
2.3.3 赋值运算符
赋值运算符就是常见的“=”,它可以为数值型、枚举、类等所有的类型赋值。使用“=”的语法如下所示:
变量 = 值;
其中,“=”左边一般为变量的名称,“=”右边为固定的值、已经知道的变量或新实例化的类。还有一种赋值运算符可计算后再赋值。如“+=”或“-=”。
下面代码演示了不同类型的赋值方式。
class Program
{
static void Main(string[] args)
{
int x = 10; //数值型赋值
string str = "北京奥运会"; //字符型赋值
StringBuilder str1 = new StringBuilder(); //类赋值
int[] arr ={ 1, 2, 3, 4 }; //数组赋值
x += arr[1];
Console.WriteLine("x的最终结果为{0}",x);
}
}
上述代码运行效果如图2.6所示。
![]()
图2.6 赋值运算的结果
2.3.4 逻辑运算符
逻辑运算就是常说的“是否”操作,“是”就执行A代码,“否”就执行B代码。逻辑运算符一般包括“与”、“或”、“非”。
与:C#中的符号为“&&”,表示必须满足两个条件。语法为“表达式1 && 表达式2”。
或:C#中的符号为“||”,表示满足两个条件中的任意一个即可。语法为“表达式1 || 表达式2”。
非:C#中的符号为“!”。表示取当前表达式结果的相反结果。如果当前表达式为“true”,则计算结果为“false”。语法为“! 表达式”。
下面的代码演示了逻辑运算符的使用方法。
class Program
{
static void Main(string[] args)
{
int x = 5;
int y = 5;
if (x == 5 && y == 5) //与操作
Console.WriteLine("x和y相等");
else
Console.WriteLine("x和y不相等");
y = 50;
if (x == 50 || y == 50) //或操作
Console.WriteLine("x和y中有一个为50");
if (!(y == 5)) //非操作
Console.WriteLine("y不等于5");
}
}
上述代码的运行效果如图2.7所示。

图2.7 逻辑运算的结果
2.3.5 位运算符
位运算在C语言中曾经发挥过巨大的作用,但它在C#语言中的应用并不广泛。本节只简单介绍一下C#的位运算符,并给出一个简短的小例子。
位运算符对位进行运算和处理。C#中主要包括6种位运算符,如表2.1所示。
表2.1 C#中的位运算符
|
位运算符标识 |
标识说明 |
|
& |
按位与。将两个值的二进制进行与操作。只有两个二进位均为1时,结果位才为1,否则为0 |
|
| |
按位或。将两个值的二进制进行或操作。只要两个二进制位中有一个为1,结果位就等于1,否则为0 |
|
^ |
按位异或 |
|
~ |
取反 |
|
<< |
左移。将变量的二进制位往左移动,低位补0 |
|
>> |
右移。将变量的二进制位往右移动 |
下面一个例子演示了简单的位运算过程。
class Program
{
static void Main(string[] args)
{
char x = 'a', y = 'b'; //定义两个字符
int z; //定义数值型数据
z = x; //将a隐式转换为数值
Console.WriteLine("此时的z为:{0}",z);
z = (z << 8) | y; //进行位运算
Console.WriteLine("z经过左移8位,再和y进行按位与后,结果为{0}",z);
}
}
上述代码的运算结果如图2.8所示。

图2.8 按位运算的结果
2.3.6 其他运算符
除了前面介绍的运算符外,C#还有一些常用的运算符,下面列出了这些运算符的说明和语法。
自增和自减运算符:一般用于数值型变量,用来增大或减少变量当前的值,使用语法为“变量++;”或“变量--;”。
比较运算符:一般用于条件表达式中,用来判断表达式是否符合条件,主要包含“==”、“!=”和“<”等运算符,使用语法为“if(x==y)”。
条件运算符:先用一个“?”判断表达式是否满足条件然后用“:”间隔两个表达式,如果满足条件就执行“:”左边的表达式,否则,执行右边的表达式。条件运算符是C#中唯一的一个三元运算符。使用语法为“条件?表达式1:表达式2”。
2.3.7 运算符的优先级
运算符并不是按照表达式的书写顺序来依次执行的,在C#中,不同的运算符具备不同的运算顺序。表2.2列举了C#中运算符的优先级,其中,最上面的运算符优先级最高。
表2.2 C#中运算符的优先级
|
运算符类型 |
运算符符号 |
|
算数运算符 |
+、-、*、/ |
|
逻辑运算符 |
&& 、||、! |
|
字符串连接运算符 |
+ |
|
自增和自减 |
++、-- |
|
比较运算符 |
==、!=、< 、> 、<= 、>= |
|
赋值运算符 |
=、+=、-= |
|
条件运算符 |
? : |





