C# - 运算符

C# - 运算符 首页 / C#入门教程 / C# - 运算符

运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作,C#具有丰富的内置运算符集,并提供以下类型的运算符-

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

算术运算符

下表显示了C#支持的所有算术运算符。假设变量A=10,变量B=20,则-

OperatorRemarkExample
+相加A + B=30
-相减A - B=-10
*相乘A * B=200
/相除B/A=2
%取模B % A=0
++自增+1A++=11
--自减-1A--=9

以下示例演示了C#-中可用的所有算术运算符

using System;

namespace OperatorsAppl {
   class Program { 
      static void Main(string[] args) { 
         int a=21;
         int b=10;
         int c;

         c=a + b;
         Console.WriteLine("Line 1 - Value of c is {0}", c);
         
         c=a - b;
         Console.WriteLine("Line 2 - Value of c is {0}", c);
         
         c=a * b;
         Console.WriteLine("Line 3 - Value of c is {0}", c);
         
         c=a/b;
         Console.WriteLine("Line 4 - Value of c is {0}", c);
         
         c=a % b;
         Console.WriteLine("Line 5 - Value of c is {0}", c);
         
         c=a++;
         Console.WriteLine("Line 6 - Value of c is {0}", c);
         
         c=a--;
         Console.WriteLine("Line 7 - Value of c is {0}", c);
         Console.ReadLine();
      }
   }
}

编译并执行上述代码时,将生成以下输出-

Line 1 - Value of c is 31
Line 2 - Value of c is 11
Line 3 - Value of c is 210
Line 4 - Value of c is 2
Line 5 - Value of c is 1
Line 6 - Value of c is 22
Line 7 - Value of c is 20

关系运算符

下表显示了C#支持的所有关系运算符。假设变量A=10,变量B=20,则-

OperatorRemarkExample
==相等(A == B) is not true.
!=不相等(A != B) is true.
>大于(A > B) is not true.
<小于(A < B) is true.
>=大于或等于(A >= B) is not true.
<=小于或等于(A <= B) is true.

以下示例演示了C#-中可用的所有关系运算符

using System;

class Program {
   static void Main(string[] args) {
      int a=21;
      int b=10;
      
      if (a == b) {
         Console.WriteLine("Line 1 - a is equal to b");
      } else {
         Console.WriteLine("Line 1 - a is not equal to b");
      }
      
      if (a < b) {
         Console.WriteLine("Line 2 - a is less than b");
      } else {
         Console.WriteLine("Line 2 - a is not less than b");
      }
      
      if (a > b) {
         Console.WriteLine("Line 3 - a is greater than b");
      } else {
         Console.WriteLine("Line 3 - a is not greater than b");
      }
      
      /* Lets change value of a and b */
      a=5;
      b=20;
      
      if (a <= b) { 
         Console.WriteLine("Line 4 - a is either less than or equal to  b");
      }
      
      if (b >= a) {
         Console.WriteLine("Line 5-b is either greater than or equal to b");
      }
   }
}

编译并执行上述代码时,将生成以下输出-

Line 1 - a is not equal to b
Line 2 - a is not less than b
Line 3 - a is greater than b
Line 4 - a is either less than or equal to b
Line 5 - b is either greater than or equal to b

逻辑运算符

下表显示了C#支持的所有逻辑运算符。假设变量A=TRUE,变量B=FALSE,则-

OperatorRemarkExample
&&逻辑AND运算符,如果两个操作数都不为零,则为true。(A && B) is false.
||逻辑 OR 运算符,如果两个操作数中的任何一个都不为零,则为true。(A || B) is true.
!逻辑非运算符,用于反转其操作数的逻辑状态。如果条件为true,则逻辑非运算符将为false。!(A && B) is true.

以下示例演示了C#-中可用的所有逻辑运算符

using System;

namespace OperatorsAppl {
   class Program {
      static void Main(string[] args) {
         bool a=true; 
         bool b=true;
         
         if (a && b) {
            Console.WriteLine("Line 1 - Condition is true");
         }
         
         if (a || b) {
            Console.WriteLine("Line 2 - Condition is true");
         }
         
         /* lets change the value of  a and b */
         a=false;
         b=true;
         
         if (a && b) {
            Console.WriteLine("Line 3 - Condition is true");
         } else {
            Console.WriteLine("Line 3 - Condition is not true");
         }
         
         if (!(a && b)) {
            Console.WriteLine("Line 4 - Condition is true");
         }
         Console.ReadLine();
      }
   }
}

编译并执行上述代码时,将生成以下输出-

Line 1 - Condition is true
Line 2 - Condition is true
Line 3 - Condition is not true
Line 4 - Condition is true

按位运算符

逐位运算符作用于位并执行逐位运算。&;、|和^的真值表如下所示:-

pqp & qp | qp ^ q
00000
01011
11110
10011

假设A=60;B=13;则在二进制格式中,它们如下所示:-

A=0011 1100

B=0000 1101
-------------------
A&B =0000 1100

A|B =0011 1101

A^B =0011 0001

~A? =1100 0011

下表列出了C#支持的按位运算符。假设变量A=60,变量B=13,则-

OperatorRemarkExample
&二进制 AND 操作(A & B)=12, which is 0000 1100
|二进制 OR 操作(A | B)=61, which is 0011 1101
^二进制 XOR 异或(A ^ B)=49, which is 0011 0001
~二进制补码(~A )=-61, which is 1100 0011 in 2's complement due to a signed binary number.
<<二进制左移A << 2=240, which is 1111 0000
>>二进制右移A >> 2=15, which is 0000 1111

下面的示例演示了C#-中所有可用的位运算符

using System;

namespace OperatorsAppl {

   class Program {
   
      static void Main(string[] args) {
         int a=60;            /* 60=0011 1100 */
         int b=13;            /* 13=0000 1101 */
         int c=0; 
         
         c=a & b;             /* 12=0000 1100 */
         Console.WriteLine("Line 1 - Value of c is {0}", c );
         
         c=a | b;             /* 61=0011 1101 */
         Console.WriteLine("Line 2 - Value of c is {0}", c);
         
         c=a ^ b;             /* 49=0011 0001 */
         Console.WriteLine("Line 3 - Value of c is {0}", c);
         
         c=~a;                /*-61=1100 0011 */
         Console.WriteLine("Line 4 - Value of c is {0}", c);
         
         c=a << 2;      /* 240=1111 0000 */
         Console.WriteLine("Line 5 - Value of c is {0}", c);
         
         c=a >> 2;      /* 15=0000 1111 */
         Console.WriteLine("Line 6 - Value of c is {0}", c);
         Console.ReadLine();
      }
   }
}

编译并执行上述代码时,将生成以下输出-

Line 1 - Value of c is 12
Line 2 - Value of c is 61
Line 3 - Value of c is 49
Line 4 - Value of c is -61
Line 5 - Value of c is 240
Line 6 - Value of c is 15

赋值运算符

C#-支持以下赋值运算符

OperatorRemarkExample
=赋值C=A + B assigns value of A + B into C
+=先加再赋值C += A is equivalent to C=C + A
-=先减再赋值C -= A is equivalent to C=C - A
*=先乘再赋值C *= A is equivalent to C=C * A
/=先除再赋值C /= A is equivalent to C=C/A
%=先取模再赋值C %= A is equivalent to C=C % A
<<=左移赋值C <<= 2 is same as C=C << 2
>>=右移赋值C >>= 2 is same as C=C >> 2
&=按位AND赋值C &= 2 is same as C=C & 2
^=按位OR赋值C ^= 2 is same as C=C ^ 2
|=按位非赋值C |= 2 is same as C=C | 2

下面的示例演示C#-中可用的所有赋值运算符

using System;

namespace OperatorsAppl {

   class Program {
   
      static void Main(string[] args) {
         int a=21;
         int c;
         c=a;
         Console.WriteLine("Line 1 -= Value of c={0}", c);
         
         c += a;
         Console.WriteLine("Line 2 - += Value of c={0}", c);
         
         c -= a;
         Console.WriteLine("Line 3 - -=  Value of c={0}", c);
         
         c *= a;
         Console.WriteLine("Line 4 - *=  Value of c={0}", c);
         
         c /= a;
         Console.WriteLine("Line 5 - /=  Value of c={0}", c);
         
         c=200;
         c %= a;
         Console.WriteLine("Line 6 - %=  Value of c={0}", c);
         
         c <<= 2;
         Console.WriteLine("Line 7 - <<=  Value of c={0}", c);
         
         c >>= 2;
         Console.WriteLine("Line 8 - >>=  Value of c={0}", c);
         
         c &= 2;
         Console.WriteLine("Line 9 - &=  Value of c={0}", c);
         
         c ^= 2;
         Console.WriteLine("Line 10 - ^=  Value of c={0}", c);
         
         c |= 2;
         Console.WriteLine("Line 11 - |=  Value of c={0}", c);
         Console.ReadLine();
      }
   }
}

编译并执行上述代码时,将生成以下输出-

Line 1 -=Value of c=21
Line 2 - += Value of c=42
Line 3 - -= Value of c=21
Line 4 - *= Value of c=441
Line 5 - /= Value of c=21
Line 6 - %= Value of c=11
Line 7 - <<= Value of c=44
Line 8 - >>= Value of c=11
Line 9 - &= Value of c=2
Line 10 - ^= Value of c=0
Line 11 - |= Value of c=2

其它运算符

几乎没有其他重要的运算符,包括sizeof,typeof和?:。

OperatorRemarkExample
sizeof()返回数据类型的大小。sizeof(int), returns 4.
typeof()返回类的类型。typeof(StreamReader);
&返回变量的地址。&a; returns actual address of the variable.
*指向变量的指针。*a; creates pointer named 'a' to a variable.
? :条件表达式If Condition is true ? Then value X : Otherwise value Y
is确定对象是否属于某种类型。If( Ford is Car) //checks if Ford is an object of the Car class.
as如果强制转换失败,则不会引发异常。Object obj=new StringReader("Hello");

StringReader r=obj为StringReader;

using System;

namespace OperatorsAppl {

   class Program {
   
      static void Main(string[] args) {
         /* example of sizeof operator */
         Console.WriteLine("The size of int is {0}", sizeof(int));
         Console.WriteLine("The size of short is {0}", sizeof(short));
         Console.WriteLine("The size of double is {0}", sizeof(double));
         
         /* example of ternary operator */
         int a, b;
         a=10;
         b=(a == 1) ? 20 : 30;
         Console.WriteLine("Value of b is {0}", b);

         b=(a == 10) ? 20 : 30;
         Console.WriteLine("Value of b is {0}", b);
         Console.ReadLine();
      }
   }
}

编译并执行上述代码时,将生成以下输出-

The size of int is 4
The size of short is 2
The size of double is 8
Value of b is 30
Value of b is 20

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

AI技术内参 -〔洪亮劼〕

深入剖析Kubernetes -〔张磊〕

性能测试实战30讲 -〔高楼〕

跟月影学可视化 -〔月影〕

如何看懂一幅画 -〔罗桂霞〕

说透数字化转型 -〔付晓岩〕

大数据经典论文解读 -〔徐文浩〕

深入浅出分布式技术原理 -〔陈现麟〕

工程师个人发展指南 -〔李云〕

好记忆不如烂笔头。留下您的足迹吧 :)