C# 运算符(Operators)

运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。本文主要介绍C# 中的运算符(算术运算符、关系运算符、赋值运算符、逻辑运算符、位运算符)的使用,以及相关示例代码。

1、C# 运算符

运算符用于对变量和值执行操作。

在下面的示例中,我们使用 + 运算符可将两个值加在一起:

例如,

int x = 100 + 50;

尽管+运算符通常用于将两个值加在一起,例如,在上面的示例中,但是它也可以用于将变量和值或变量和另一个变量加在一起:

例如,

int sum1 = 100 + 50;        // 150 (100 + 50)
int sum2 = sum1 + 250;      // 400 (150 + 250)
int sum3 = sum2 + sum2;     // 800 (400 + 400)

C# 将运算符分为以下几组:

  • 算术运算符
  • 赋值运算符
  • 关系运算符
  • 逻辑运算符
  • 按位运算符

2、算术运算符

算术运算符用于执行常见的数学运算。算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。

运算符

描述

实例

+

把两个操作数相加

a + b 将得到 30

-

从第一个操作数中减去第二个操作数

a - b 将得到 -10

*

把两个操作数相乘

a * b 将得到 200

/

分子除以分母

b / a 将得到 2

%

取模运算符,整除后的余数

b % a 将得到 0

++

自增运算符,整数值增加 1

a++ 将得到 11

--

自减运算符,整数值减少 1

a-- 将得到 9

例如,

int a = 10;
int b = 20;
int c = 25;
int d = 25;
Console.WriteLine("a + b = " + (a + b) );
Console.WriteLine("a - b = " + (a - b) );
Console.WriteLine("a * b = " + (a * b) );
Console.WriteLine("b / a = " + (b / a) );
Console.WriteLine("b % a = " + (b % a) );
Console.WriteLine("c % a = " + (c % a) );
Console.WriteLine("a++   = " +  (a++) );
Console.WriteLine("a--   = " +  (a--) );
// d++和++d的区别 
Console.WriteLine("d++   = " +  (d++) );
Console.WriteLine("++d   = " +  (++d) );

注意:前缀自增自减法(++d,--d)是 先进行自增或者自减运算,再进行表达式运算。后缀自增自减法(a++,a--)是先进行表达式运算,再进行自增或者自减运算。

3、C# 赋值操作符

赋值运算符用于为变量赋值。

例如,在下面的示例中,我们使赋值运算符(=)将值10分配给名为x:

int x = 10;

附加分配运算符(+ =)为变量添加值:

例如:

int x = 10;
x += 5;

所有赋值运算符的列表:

运算符

描述

实例

=

简单的赋值运算符,

把右边操作数的值赋给左边操作数

c = a + b 将把 a + b 的值赋给 c

+=

加且赋值运算符,

把右边操作数加上左边操作数的结果赋值给左边操作数

c += a 相当于 c = c + a

-=

减且赋值运算符,

把左边操作数减去右边操作数的结果赋值给左边操作数

c -= a 相当于 c = c - a

*=

乘且赋值运算符,

把右边操作数乘以左边操作数的结果赋值给左边操作数

c *= a 相当于 c = c * a

/=

除且赋值运算符,

把左边操作数除以右边操作数的结果赋值给左边操作数

c /= a 相当于 c = c / a

%=

求模且赋值运算符,

求两个操作数的模赋值给左边操作数

c %= a 相当于 c = c % a

<<=

左移且赋值运算符

c <<= 2 等同于 c = c << 2

>>=

右移且赋值运算符

c >>= 2 等同于 c = c >> 2

&=

按位与且赋值运算符

c &= 2 等同于 c = c & 2

^=

按位异或且赋值运算符

c ^= 2 等同于 c = c ^ 2

|=

按位或且赋值运算符

c |= 2 等同于 c = c | 2

例如,

int a = 10;
int b = 20;
int c = 0;
c = a + b;
Console.WriteLine("c = a + b = " + c );
c += a ;
Console.WriteLine("c += a = " + c );
c -= a ;
Console.WriteLine("c -= a = " + c );
c *= a ;
Console.WriteLine("c *= a = " + c );
a = 10;
c = 15;
c /= a ;
Console.WriteLine("c /= a = " + c );
a = 10;
c = 15;
c %= a ;
Console.WriteLine("c %= a = " + c );
c <<= 2 ;
Console.WriteLine("c <<= 2 = " + c );
c >>= 2 ;
Console.WriteLine("c >>= 2 = " + c );
c >>= 2 ;
Console.WriteLine("c >>= 2 = " + c );
c &= a ;
Console.WriteLine("c &= a = " + c );
c ^= a ;
Console.WriteLine("c ^= a = " + c );
c |= a ;
Console.WriteLine("c |= a = " + c );

4、C# 关系运算符

关系运算符用于比较两个值:

运算符

描述

实例

==

检查两个操作数的值是否相等,如果相等则条件为真。

(a == b) 不为真。

!=

检查两个操作数的值是否相等,如果不相等则条件为真。

(a != b) 为真。

检查左操作数的值是否大于右操作数的值,如果是则条件为真。

(a > b) 不为真。

检查左操作数的值是否小于右操作数的值,如果是则条件为真。

(a < b) 为真。

>=

检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。

(a >= b) 不为真。

<=

检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。

(a <= b) 为真。

例如,

int a = 10;
int b = 20;
Console.WriteLine("a == b = " + (a == b) );
Console.WriteLine("a != b = " + (a != b) );
Console.WriteLine("a > b = " + (a > b) );
Console.WriteLine("a < b = " + (a < b) );
Console.WriteLine("b >= a = " + (b >= a) );
Console.WriteLine("b <= a = " + (b <= a) );

5、C# 逻辑运算符

逻辑运算符用于确定变量或值之间的逻辑:

运算符

描述

实例

&&

称为逻辑与运算符。如果两个操作数都非零,则条件为真。

(a && b) 为假。

||

称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。

(a || b) 为真。

!

称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。

!(a && b) 为真。

例如,

bool a = true;
bool b = false;
Console.WriteLine("a && b = " + (a&&b));
Console.WriteLine("a || b = " + (a||b) );
Console.WriteLine("!(a && b) = " + !(a && b));

短路逻辑运算符

当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

int a = 4;//定义一个变量;
bool b = (a<3)&&(a++<10);
Console.WriteLine("b = "+b);
Console.WriteLine("a = "+a);

6、C# 位运算符

C# 定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。

p

q

p & q

p | q

p ^ q

0

0

0

0

0

0

1

0

1

1

1

1

1

1

0

1

0

0

1

1

位运算符作用在所有的位上,并且按位运算。例如,a = 30b = 19;它们的二进制格式表示将如下:

a = 0011 0000
b = 0001 1001
-----------------
a&b = 0001 0000
a | b = 0011 1001
a ^ b = 0010 1001
~a= 1100 1111

运算符

描述

实例

&

如果同时存在于两个操作数中,

二进制 and 运算符复制一位到结果中。

(a & b) 将得到 12,即为 0000 1100

|

如果存在于任一操作数中,

二进制 or 运算符复制一位到结果中。

(a | b) 将得到 61,即为 0011 1101

^

如果存在于其中一个操作数

中但不同时存在于两个操作数中,

二进制异或运算符复制一位到结果中。

(a ^ b) 将得到 49,即为 0011 0001

~

按位取反运算符是一元运算符,

具有"翻转"位效果,即0变成1,

1变成0,包括符号位。

(~a ) 将得到 -61,即为 1100 0011,

一个有符号二进制数的补码形式。

<< 

二进制左移运算符。

左操作数的值向左移动右操作数指定的位数。

a << 2 将得到 240,即为 1111 0000

>> 

二进制右移运算符。

左操作数的值向右移动右操作数指定的位数。

a >> 2 将得到 15,即为 0000 1111

例如,

int a = 60; /* 60 = 0011 1100 */ 
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
Console.WriteLine("a & b = " + c );
c = a | b; /* 61 = 0011 1101 */
Console.WriteLine("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
Console.WriteLine("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
Console.WriteLine("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */
Console.WriteLine("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */
Console.WriteLine("a >> 2 = " + c );
推荐阅读
cjavapy编程之路首页