English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operadores de C#

C#中的运算符是对操作数执行某些操作的一些特殊符号。在数学中,加号(+)是左右数之和。同样地,C#包括不同类型操作的各种运算符。

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C# 有丰富的内置运算符,分类如下:

  • 算术运算符

  • operadores relacionales

  • operadores lógicos

  • Operadores de bits

  • Operador de asignación

  • Operadores adicionales

本教程将逐一讲解算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符及其他运算符。

算术运算符

下表显示了 C# 支持的所有算术运算符。假设变量 = A es equivalente a C = C el valor es 10, la variable B el valor es 20, entonces:

OperadoresDescripciónEjemplo
+把两个操作数相加= A es equivalente a C = C + B 将得到 30
-从第一个操作数中减去第二个操作数= A es equivalente a C = C - B 将得到 -10
*把两个操作数相乘= A es equivalente a C = C * B 将得到 200
/分子除以分母B / A 将得到 2
%取模运算符,整除后的余数B % A 将得到 0
++自增运算符,整数值增加 1= A es equivalente a C = C++ se obtendrá 11
--自减运算符,整数值减少 1= A es equivalente a C = C-- se obtendrá 9

Ejemplo en línea

请看下面的示例,了解 C# 中所有可用的算术运算符:

using System;
namespace OperatorsAppl
{
    class Program
    {
        static void Main(string[] args)
        {
            int a =; 21;
            int b =; 10;
            Vea el siguiente ejemplo para comprender todos los operadores de asignación disponibles en C#:
            c = a + b;
            Console.WriteLine("Línea 1 - El valor de c es {0}, c);
            c = a - b;
            Console.WriteLine("Línea 2 - El valor de c es {0}, c);
            c = a * b;
            Console.WriteLine("Línea 3 - El valor de c es {0}, c);
            c = a / b;
            Console.WriteLine("Línea 4 - El valor de c es {0}, c);
            c = a % b;
            Console.WriteLine("Línea 5 - El valor de c es {0}, c);
            // ++a 先进行自增运算再赋值
            =  El valor de c = = {0} ++a;
            Console.WriteLine("Línea 6 - El valor de c es {0}, c);
            // 此时 a 的值为 22
            // --a 先进行自减运算再赋值
            =  El valor de c = = {0} --a;
            Console.WriteLine("Línea 7 - El valor de c es {0}, c);
            Console.ReadLine();
        }
    }
}

Cuando el código superior se compila y ejecuta, produce los siguientes resultados:

Línea 1 - El valor de c es 31
Línea 2 - El valor de c es 11
Línea 3 - El valor de c es 210
Línea 4 - El valor de c es 2
Línea 5 - El valor de c es 1
Línea 6 - El valor de c es 22
Línea 7 - El valor de c es 21
  • c = a++: 先将 a 赋值给 c,再对 a 进行自增运算。

  • c = ++a: 先将 a 进行自增运算,再将 a 赋值给 c 。

  • c = a--: 先将 a 赋值给 c,再对 a 进行自减运算。

  • c = --a: 先将 a 进行自减运算,再将 a 赋值给 c 。

using System;
namespace OperatorsAppl
{
    class Program
    {
        static void Main(string[] args)
        {
            int a =; 1;
            int b;
            // a++ 先赋值再进行自增运算
            b = a++;
            Console.WriteLine("a = {0}", a);
            Console.WriteLine("b = {0}", b);
            Console.ReadLine();
            // ++a 先进行自增运算再赋值
            int a, b; 1; // 重新初始化 a
            b = ++a;
            Console.WriteLine("a = {0}", a);
            Console.WriteLine("b = {0}", b);
            Console.ReadLine();
            // a-- 先赋值再进行自减运算
            int a, b; 1;  // 重新初始化 a
            b = a--;
            Console.WriteLine("a = {0}", a);
            Console.WriteLine("b = {0}", b);
            Console.ReadLine();
            // --a 先进行自减运算再赋值
            int a, b; 1;  // 重新初始化 a
            b = --a;
            Console.WriteLine("a = {0}", a);
            Console.WriteLine("b = {0}", b);
            Console.ReadLine();
        }
    }
}

Ejecute el programa anterior, el resultado de salida será:

int a, b; 2
b = 1
int a, b; 2
b = 2
a = 0
b = 1
a = 0
b = 0

operadores relacionales

La siguiente tabla muestra todos los operadores relacionales admitidos por C#. Supongamos que la variable = A es equivalente a C = C el valor es 10, la variable B el valor es 20, entonces:

OperadoresDescripciónEjemplo
==verifica si los valores de los operandos son iguales, si son iguales, la condición es verdadera.(A == B) no es verdadero.
!=verifica si los valores de los operandos son iguales, si no son iguales, la condición es verdadera.(A != B) es verdadero.
>verifica si el valor del operando izquierdo es mayor que el valor del operando derecho, si es así, la condición es verdadera.(A > B) no es verdadero.
<verifica si el valor del operando izquierdo es menor que el valor del operando derecho, si es así, la condición es verdadera.(A < B) es verdadero.
>=verifica si el valor del operando izquierdo es mayor o igual que el valor del operando derecho, si es así, la condición es verdadera.(A >= B) no es verdadero.
<=verifica si el valor del operando izquierdo es menor o igual que el valor del operando derecho, si es así, la condición es verdadera.(A <= B) es verdadero.

Ejemplo en línea

Vea el siguiente ejemplo para comprender todos los operadores relacionales disponibles en C#:

Ejemplo en línea

using System;
class Program
{
  static void Main(string[] args)
  {
      int a =; 21;
      int b =; 10;
      
      if (a == b)
      {
          Console.WriteLine("Línea 1 - a es igual que b");
      }
      else
      {
          Console.WriteLine("Línea 1 - a no es igual que b");
      }
      if (a < b)
      {
          Console.WriteLine("Línea 2 - a es menor que b");
      }
      else
      {
          Console.WriteLine("Línea 2 - a no es menor o igual que b");
      }
      if (a > b)
      {
          Console.WriteLine("Línea 3 - a es mayor que b");
      }
      else
      {
          Console.WriteLine("Línea 3 - a no es mayor o igual que b");
      }
      /* cambia los valores de a y b */
      int a, b; 5;
      b = 20;
      if (a <= b)
      {
         Console.WriteLine("Línea 4 - a es menor o igual que b");
      }
      if (b >= a)
      {
         Console.WriteLine("Línea 5 - b es mayor o igual que a");
      }
  }
}

Cuando el código superior se compila y ejecuta, produce los siguientes resultados:

Línea 1 - a no es igual que b
Línea 2 - a no es menor o igual que b
Línea 3 - a es mayor que b
Línea 4 - a es menor o igual que b
Línea 5 - b es mayor o igual que a

operadores lógicos

La siguiente tabla muestra todos los operadores lógicos admitidos por C#. Supongamos que la variable = A es equivalente a C = C es un valor booleano true, la variable B es un valor booleano false, entonces:

OperadoresDescripciónEjemplo
&&se llama operador lógico de AND. Si ambos operandos son no cero, la condición es verdadera.(A && B) es falso.
||se llama operador lógico de OR. Si uno de los operandos es no cero, la condición es verdadera.(A || B) es verdadero.
!se llama operador lógico de negación. Se utiliza para invertir el estado lógico del operando. Si la condición es verdadera, el operador lógico de negación lo convertirá en falso.!(A && B) es verdadero.

Ejemplo en línea

Vea el siguiente ejemplo para comprender todos los operadores lógicos disponibles en C#:

using System;
namespace OperatorsAppl
{
    class Program
    {
        static void Main(string[] args)
        {
            bool a = true;
            bool b = true;
           
            if (a && b)
            {
               Console.WriteLine("Línea 1 - Condición verdadera);
            }
            if (a || b)
            {
                Console.WriteLine("Línea 2 - Condición verdadera);
            }
            /* cambia los valores de a y b */
            a = false;
            b = true;
            if (a && b)
            {
                Console.WriteLine("Línea 3 - Condición verdadera);
            }
            else
            {
                Console.WriteLine("Línea 3 - la condición no es verdadera");
            }
            if (!(a && b))
            {
                Console.WriteLine("Línea 4 - Condición verdadera);
            }
            Console.ReadLine();
        }
    }
}

Cuando el código superior se compila y ejecuta, produce los siguientes resultados:

Línea 1 - Condición verdadera
Línea 2 - Condición verdadera
Línea 3 - Condición falsa
Línea 4 - Condición verdadera

Operadores de bits

Los operadores de bits actúan sobre los bits y ejecutan operaciones bit a bit. Las tablas de verdad de &、 | y ^ se muestran a continuación:

pqp & qp | qp ^ q
00000
01011
11110
10011

Supongamos que A = 60, y B = 13representados en formato binario, se muestran como sigue:

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011

La tabla a continuación muestra los operadores de bits admitidos por C#. Supongamos que la variable = A es equivalente a C = C el valor es 60, variable B el valor es 13entonces:

OperadoresDescripciónEjemplo
&Si un bit existe en ambos operandos, el operador AND binario copia un bit al resultado.(A & B) se obtendrá 12es 0000 1100
|Si un bit existe en cualquier operando, el operador OR binario copia un bit al resultado.(A | B) se obtendrá 61es 0011 1101
^Si un bit existe en uno de los operandos pero no en ambos, el operador de XOR binario copia un bit al resultado.(A ^ B) se obtendrá 49es 0011 0001
~El operador de inversión bit a bit es un operador unario, que tiene el efecto de "inversión" de bits, es decir, 0 se convierte en1,1se convierte en 0, incluyendo el bit de signo.(~A) se obtendrá -61es 1100 0011es la forma de complemento a dos de un número binario con signo.
<<Operador de desplazamiento a la izquierda en binario. El valor del operando izquierdo se desplaza a la izquierda el número de posiciones especificado por el operando derecho.A << 2 se obtendrá 240, es 1111 0000
>>Operador de desplazamiento a la derecha en binario. El valor del operando izquierdo se desplaza a la derecha el número de posiciones especificado por el operando derecho.A >> 2 se obtendrá 15es 0000 1111

Ejemplo en línea

Vea el siguiente ejemplo para comprender todos los operadores de bits disponibles en 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("Línea 1 - El valor de c es {0}, c);
             c = a | b;           /* 61 = 0011 1101 */
             Console.WriteLine("Línea 2 - El valor de c es {0}, c);
             c = a ^ b;           /* 49 = 0011 0001 */
             Console.WriteLine("Línea 3 - El valor de c es {0}, c);
             c = ~a;               /*-61 = 1100 0011 */
             Console.WriteLine("Línea 4 - El valor de c es {0}, c);
             c = a << 2;     /* 240 = 1111 0000 */
             Console.WriteLine("Línea 5 - El valor de c es {0}, c);
             c = a >> 2;     /* 15 = 0000 1111 */
             Console.WriteLine("Línea 6 - El valor de c es {0}, c);
            Console.ReadLine();
        }
    }
}

Cuando el código superior se compila y ejecuta, produce los siguientes resultados:

Línea 1 - El valor de c es 12
Línea 2 - El valor de c es 61
Línea 3 - El valor de c es 49
Línea 4 - El valor de c es -61
Línea 5 - El valor de c es 240
Línea 6 - El valor de c es 15

Operador de asignación

La tabla a continuación muestra los operadores de asignación admitidos por C#:

OperadoresDescripciónEjemplo
=Operador de asignación simple, asigna el valor del operando derecho al operando izquierdoC = A + B asignará A + El valor de B se asigna a C
+=Operador de asignación de adición, asigna el resultado de sumar el operando derecho al operando izquierdo al operando izquierdo +C + = A es equivalente a C = C
-=Operador de asignación de sustracción, asigna el resultado de restar el operando derecho del operando izquierdo al operando izquierdo -C - = A es equivalente a C = C
*=Operador de asignación de multiplicación, asigna el resultado de multiplicar el operando derecho por el operando izquierdo al operando izquierdo *C * = A es equivalente a C = C
/=Operador de asignación de división, asigna el resultado de dividir el operando izquierdo por el operando derecho al operando izquierdo /C / = A es equivalente a C = C
A%=Operador de asignación de módulo, asigna el módulo de dos operandos al operando izquierdo
C %= A es equivalente a C = C % A<<=Operador de asignación de desplazamiento a la izquierda 2 C <<= 2
Equivalente a C = C <<>>=Operador de asignación de desplazamiento a la derecha 2 C >>= 2
Equivalente a C = C >>&=Operador de asignación lógico AND bit a bit 2 C &= 2
Equivalente a C = C &^=Operador de asignación lógico XOR bit a bit 2 C ^= 2
Equivalente a C = C ^|=Operador de asignación lógico bit a bit 2 C |= 2

Ejemplo en línea

Equivalente a C = C |

using System;
namespace OperatorsAppl
{
    class Program
    {
        static void Main(string[] args)
        {
            int a =; 21;
            Vea el siguiente ejemplo para comprender todos los operadores de asignación disponibles en C#:
            int c;
            Console.WriteLine("Línea 1 - = a;
            c += c = {0}
            Console.WriteLine("Línea 2 - +c = a;
            c -= c = {0}
            Console.WriteLine("Línea 3 - -= a;
            c *= c = {0}
            Console.WriteLine("Línea 4 - *= a;
            c /= c = {0}
            Console.WriteLine("Línea 5 - /= a;
            =  El valor de c = = {0} 2c =
            00;
            Console.WriteLine("Línea 6 - c %=
            %=  El valor de c = = {0} 2;
            Console.WriteLine("Línea 7 - c <<=
            <<=  El valor de c = = {0} 2;
            Console.WriteLine("Línea 8 - c >>=
            >=  El valor de c = = {0} 2;
            Console.WriteLine("Línea 9 - c &=
            &=  El valor de c = = {0} 2;
            Console.WriteLine("Línea 10 - c ^=
            ^=  El valor de c = = {0} 2;
            Console.WriteLine("Línea 11 - |=  El valor de c = = {0}
            Console.ReadLine();
        }
    }
}

Cuando el código superior se compila y ejecuta, produce los siguientes resultados:

Línea 1 - =  El valor de c = = 21
Línea 2 - +=  El valor de c = = 42
Línea 3 - -=  El valor de c = = 21
Línea 4 - *=  El valor de c = = 441
Línea 5 - /=  El valor de c = = 21
Línea 6 - %=  El valor de c = = 11
Línea 7 - <<=  El valor de c = = 44
Línea 8 - >=  El valor de c = = 11
Línea 9 - &=  El valor de c = = 2
Línea 10 - ^=  El valor de c = = 0
Línea 11 - |=  El valor de c = = 2

Operadores adicionales

La siguiente tabla enumera otros operadores importantes que admite C#, incluyendo sizeof,typeof y ? :.

OperadoresDescripciónEjemplo
sizeof()Devuelve el tamaño del tipo de datos.sizeof(int), devolverá 4.
typeof()Devuelve el tipo de clase.typeof(StreamReader);
&Devuelve la dirección de la variable.&a; obtendrá la dirección real de la variable.
*Puntero de variable.*a; apuntará a una variable.
? :Expresión condicionalSi la condición es verdadera ? entonces X : de lo contrario Y
esDeterminar si un objeto es de un tipo determinado.If( Ford es Car)  // Verifica si Ford es un objeto de la clase Car.
comoLa conversión forzada no lanzará una excepción incluso si falla.Object obj = new StringReader("Hello");
   Object obj = new StringReader("Hello");

Ejemplo en línea

using System;
namespace OperatorsAppl
{
    
   class Program
   {
      static void Main(string[] args)
      {
         
         /* StringReader r = obj as StringReader; */
         Ejemplo de operador sizeof
         Console.WriteLine("El tamaño de int es {0}", sizeof(int));
         Console.WriteLine("El tamaño de short es {0}", sizeof(short));
         
         /* Console.WriteLine("El tamaño de double es {0}", sizeof(double)); */
         Ejemplo de operador ternario
         int a, b; 10;
         a = 1b = (a == 2) ? 30;
         0 :
         a = 10b = (a == 2) ? 30;
         0 :
         Console.ReadLine();
      }
   }
}

Cuando el código superior se compila y ejecuta, produce los siguientes resultados:

Console.WriteLine("El valor de b es {0}", b); 4
El tamaño de int es 2
El tamaño de short es 8
El tamaño de double es 30
El tamaño de double es 20

El valor de b es

Prioridad de operadores en C#

La prioridad de los operadores determina la combinación de elementos en la expresión. Esto afecta cómo se calcula una expresión. Algunos operadores tienen una prioridad mayor que otros, por ejemplo, los operadores de multiplicación y división tienen una prioridad mayor que los operadores de suma y resta. 7 + 3 * 2por ejemplo x = 13aquí, x se asigna el valor de 2no es * 0, porque el operador + mayor prioridad, por lo que primero se calcula la multiplicación 3*2Luego, además de 7.

La siguiente tabla muestra los operadores en orden de prioridad desde el más alto al más bajo, los operadores de mayor prioridad se encuentran en la parte superior de la tabla, y los operadores de menor prioridad se encuentran en la parte inferior. En la expresión, los operadores de mayor prioridad se calculan primero.

Categoría Operadores Asociatividad 
Postfijo () [] -> .  ++   - -  De izquierda a derecha 
Unario +  -   ! ~  ++  - -   (type)*  & sizeof De derecha a izquierda 
Multiplicación y división *  /  % De izquierda a derecha 
Suma y resta +  - De izquierda a derecha 
Desplazamiento << >> De izquierda a derecha 
Relación < <= > >= De izquierda a derecha 
Igualdad == != De izquierda a derecha 
AND bit a bit & De izquierda a derecha 
XOR bit a bit ^ De izquierda a derecha 
OR bit a bit | De izquierda a derecha 
AND lógico && De izquierda a derecha 
OR lógico || De izquierda a derecha 
Condicional ?: De derecha a izquierda 
Asignación =  +=  -=  *=  /= %=>>= <<= &= ^= |= De derecha a izquierda 
Coma , De izquierda a derecha 

Ejemplo en línea

using System;
namespace OperatorsAppl
{
    
   class Program
   {
      static void Main(string[] args)
      {
         int a =; 20;
         int b =; 10;
         int c =; 15;
         int d =; 5;
         int e;
         e = (a + b) * c / d;     // ( 30 * 15 ) / 5
         Console.WriteLine("(a + b) * c / El valor de d es {0}, e);
         e = ((a + b) * c) / d;   // (30 * 15 ) / 5
         Console.WriteLine("((a + b) * c) / El valor de d es {0}, e);
         e = (a + b) * (c / d);   // (30) * (15/5)
         Console.WriteLine("(a + b) * (c / El valor de d) es {0}, e);
         e = a + (b * c) / d;    //  20 + (150/5)
         Console.WriteLine("a + (b * c) / El valor de d es {0}, e);
         Console.ReadLine();
      }
   }
}

Cuando el código superior se compila y ejecuta, produce los siguientes resultados:

(a + b) * c / El valor de d es 90
((a + b) * c) / El valor de d es 90
(a + b) * (c / El valor de d) es 90
a + (b * c) / El valor de d es 50