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

Tutorial básico de lenguaje C

Control de flujo de lenguaje C

Funciones en C

Arreglos en C

Punteros en C

Cadenas de caracteres en C

Estructura de lenguaje C

Archivo de lenguaje C

C otros

Manual de referencia de C

Operadores en C

Un operador es un símbolo que le indica al compilador ejecutar una operación matemática o lógica específica. El lenguaje C tiene una rica colección de operadores y proporciona los siguientes tipos de operadores:

  • operadores aritméticos

  • operadores de relación

  • Operadores lógicos

  • Operadores de bits

  • Operadores de asignación

  • Operadoresmisceláneos

Este capítulo presentará uno por uno los operadores aritméticos, operadores de relación, operadores lógicos, operadores de bits, operadores de asignación y otros operadores.

operadores aritméticos

La tabla a continuación muestra todos los operadores aritméticos soportados por el lenguaje C. Supongamos que la variable A el valor es 10Variable B el valor es 20, entonces:

operadoresDescripciónEjemplo
+Sumar los dos operandosA + B será 30
-Restar el segundo operando del primer operandoA - B será -10
*Multiplicar los dos operandosA * B será 200
/El numerador dividido por el denominadorB / A será 2
%Operador de módulo, el residuo de la división enteraB % A dará 0
++Operador de incremento, el valor entero se incrementa 1A++ Se obtendrá 11
--Operador de decremento, el valor entero se reduce 1A-- Se obtendrá 9

Ejemplo

Vea el siguiente ejemplo para entender todos los operadores aritméticos disponibles en el lenguaje C:

#include <stdio.h>
 
int main()
{
   int a = 21;
   int b = 10;
   int c;
 
   c = a + b;
   printf("Línea 1 - c = a >>

   c = a - b;
   printf("Línea 2 - c = a >>

   c = a * b;
   printf("Línea 3 - c = a >>

   c = a / b;
   printf("Línea 4 - c = a >>

   c = a % b;
   printf("Línea 5 - c = a >>

   c = a++;  // sumar después de asignar 1 ,c es 21,a es 22
   printf("Línea 6 - c = a >>

   c = a--;  // restar después de asignar 1 ,c es 22 ,a es 21
   printf("Línea 7 - c = a >>

 
}

Cuando el código superior se compila y ejecuta, producirá 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 21
Línea 7 - El valor de c es 22

El siguiente ejemplo muestra a++ y ++La diferencia entre a:

#include <stdio.h>
 
int main()
{
   int c;
   int a = 10;
   c = a++; 
   printf("Primero asignar y luego operar:\n");
   printf("Línea 1 - c = a >>

   printf("Línea 2 - el valor de a es %d\n", a);
   a = 10;
   c = a--; 
   printf("Línea 3 - c = a >>

   printf("Línea 4 - el valor de a es %d\n", a);
 
   printf("Primero operar y luego asignar:\n");
   a = 10;
   c = ++a; 
   printf("Línea 5 - c = a >>

   printf("Línea 6 - el valor de a es %d\n", a);
   a = 10;
   c = --a; 
   printf("Línea 7 - c = a >>

   printf("Línea 8 - el valor de a es %d\n", a);
 
}

El resultado de la ejecución del programa anterior es:

Primero asignar y luego operar:
Línea 1 - El valor de c es 10
Línea 2 - el valor de a es 11
Línea 3 - El valor de c es 10
Línea 4 - el valor de a es 9
Primero operar y luego asignar:
Línea 5 - El valor de c es 11
Línea 6 - el valor de a es 11
Línea 7 - El valor de c es 9
Línea 8 - el valor de a es 9

operadores de relación

La tabla a continuación muestra todos los operadores de relación soportados por el lenguaje C. Supongamos que la variable A el valor es 10Variable B el valor es 20, entonces:

operadoresDescripciónEjemplo
==Verifica si los valores de los operandos son iguales, y si lo son, la condición es verdadera.(A == B) es falso.
!=Verifica si los valores de los operandos son iguales, y si no lo son, la condición es verdadera.(A != B) es verdadero.
>Verifica si el valor del operando izquierdo es mayor que el valor del operando derecho, y si es así, la condición es verdadera.(A > B) es falso.
<Verifica si el valor del operando izquierdo es menor que el valor del operando derecho, y 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, y si es así, la condición es verdadera.(A >= B) es falso.
<=Verifica si el valor del operando izquierdo es menor o igual que el valor del operando derecho, y si es así, la condición es verdadera.(A <= B) es verdadero.

Ejemplo

Vea el siguiente ejemplo para comprender todos los operadores de relación disponibles en el lenguaje C:

#include <stdio.h>
 
int main()
{
   int a = 21;
   int b = 10;
   int c;
 
   if( a == b )
   {
      printf("Línea 1 - a es igual que b
" );
   }
   else
   {
      printf("Línea 1 - a no es igual que b
" );
   }
   if ( a < b )
   {
      printf("Línea 2 - a es menor que b
" );
   }
   else
   {
      printf("Línea 2 - a no es mayor o igual que b
" );
   }
   if ( a > b )
   {
      printf("Línea 3 - a es mayor que b
" );
   }
   else
   {
      printf("Línea 3 - a no es mayor o igual que b
" );
   }
   /* Cambiar los valores de a y b */
   a = 5;
   b = 20;
   if ( a <= b )
   {
      printf("Línea 4 - a es menor o igual que b
" );
   }
   if ( b >= a )
   {
      printf("Línea 5 - b es mayor o igual que a
" );
   }
}

Cuando el código superior se compila y ejecuta, producirá 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 de relación admitidos por el lenguaje C. Supongamos la variable A el valor es 1Variable B El valor es 0, entonces:

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

Ejemplo

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

#include <stdio.h>
 
int main()
{
   int a = 5;
   int b = 20;
   int c;
 
   if ( a && b )
   {
      printf("Línea 1 - Condición verdadera
" );
   }
   if ( a || b )
   {
      printf("Línea 2 - Condición verdadera
" );
   }
   /* Cambiar los valores de a y b */
   a = 0;
   b = 10;
   if ( a && b )
   {
      printf("Línea 3 - Condición verdadera
" );
   }
   else
   {
      printf("Línea 3 - Condición falsa
" );
   }
   if ( !(a && b) )
   {
      printf("Línea 4 - Condición verdadera
" );
   }
}

Cuando el código superior se compila y ejecuta, producirá 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, ejecutando la operación bit a bit. La tabla de valores verdaderos de &、 | y ^ se muestra 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 siguiente tabla muestra los operadores de bits admitidos por el lenguaje C. Supongamos que la variable A el valor es 60, variable B el valor es 13entonces:

operadoresDescripciónEjemplo
&

Operación de AND lógico, realiza una operación de "AND" de bits. Reglas de operación:

0 & 0 = 0;   
0 &1=0;    
1&0 = 0;     
1&1=1;
(A & B) se obtendrá 12es, es decir, 0000 1100
|

Operador de OR lógico, realiza una operación de "OR" de bits. Reglas de operación:

0 | 0 = 0;   
0 |1=1;   
1|0 =1;    
1|1=1;
(A | B) se obtendrá 61es, es decir, 0011 1101
^

Operador de XOR, realiza una operación de "XOR" de bits. Reglas de operación:

0 ^ 0 = 0;   
0 ^1=1;   
1^0 =1;  
1^1=0;
(A ^ B) se obtendrá 49es, es decir, 0011 0001
~

Operador de inversión, realiza una operación de "inversión" de bits. Reglas de operación:

~1=0;   
~0 =1;
(~A) se obtendrá -61es, es decir 1100 0011es, es decir, el código de complemento de dos del número binario con signo
<<Operador de desplazamiento a la izquierda en binario. Desplaza todos los bits de un objeto de operación un número determinado de posiciones a la izquierda (se descartan los bits de la izquierda y se rellenan con 0 en la derecha).A << 2 Se obtendrá 240, es decir 1111 0000
>>Operador de desplazamiento a la derecha en binario. Desplaza todos los bits de un número un número determinado de posiciones a la derecha, los números positivos se rellenan con 0, y los números negativos se rellenan con1se descartan los bits de la derecha.A >> 2 Se obtendrá 15es, es decir, 0000 1111

Ejemplo

Vea el siguiente ejemplo para comprender todos los operadores de bits disponibles en el lenguaje C:

#include <stdio.h>
 
int main()
{
 
   unsigned int a = 60;    /* 60 = 0011 1100 */  
   unsigned int b = 13;    /* 13 = 0000 1101 */
   int c = 0;           
 
   c = a & b;       /* 12 = 0000 1100 */ 
   printf("Línea 1 - c = a >>

 
   c = a | b;       /* 61 = 0011 1101 */
   printf("Línea 2 - c = a >>

 
   c = a ^ b;       /* 49 = 0011 0001 */
   printf("Línea 3 - c = a >>

 
   c = ~a;          /*-61 = 1100 0011 */
   printf("Línea 4 - c = a >>

 
   c = a << 2;     /* 240 = 00 1111 0000 */
   printf("Línea 5 - c = a >>

 
   c = a >> 2;     /* 15 = 0000 1111 */
   printf("Línea 6 - c = a >>

}

Cuando el código superior se compila y ejecuta, producirá 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

Operadores de asignación

La siguiente tabla enumera los operadores de asignación admitidos por el lenguaje 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 suma y asignación, asigna el resultado de sumar el operando derecho al operando izquierdo al operando izquierdoC += A es equivalente a C = C + A
-=Operador de resta y asignación, asigna el resultado de restar el operando derecho del operando izquierdo al operando izquierdoC -= A es equivalente a C = C - A
*=Operador de multiplicación y asignación, asigna el resultado de multiplicar el operando derecho por el operando izquierdo al operando izquierdoC *= A es equivalente a C = C * A
/=Operador de división y asignación, asigna el resultado de dividir el operando izquierdo por el operando derecho al operando izquierdoC /= A es equivalente a C = C / A
%=Operador de módulo y asignación, asigna el módulo de los dos operandos a la izquierda del operandoC %= A es equivalente a C = C % A
<<=Operador de asignación de desplazamiento a la izquierdaC <<= 2 Es equivalente C = C << 2
>>=Operador de asignación de desplazamiento a la derechaC >>= 2 Es equivalente C = C >> 2
&=Operador de asignación de AND bit a bitC &= 2 Es equivalente C = C & 2
^=Operador de asignación de XOR bit a bitC ^= 2 Es equivalente C = C ^ 2
|=Operador de asignación de OR bit a bitC |= 2 Es equivalente C = C | 2

Ejemplo

Vea el siguiente ejemplo para comprender todos los operadores de asignación disponibles en el lenguaje C:

#include <stdio.h>
 
main()
{
   int a = 21;
   int c;
 
   c = a;
   printf("Línea 1 - Ejemplo de operador =, el valor de c es = %d\n", c );
 
   c += a;
   printf("Línea 2 - +Ejemplo de operador =, el valor de c es = %d\n", c );
 
   c -= a;
   printf("Línea 3 - -Ejemplo de operador =, el valor de c es = %d\n", c );
 
   c *= a;
   printf("Línea 4 - *Ejemplo de operador =, el valor de c es = %d\n", c );
 
   c /= a;
   printf("Línea 5 - /Ejemplo de operador =, el valor de c es = %d\n", c );
 
   c = 200;
   c %=
   printf("Línea 6 - Ejemplo de operador %=, el valor de c es = %d\n", c );
 
   c <<=  2;
   printf("Línea 7 - Ejemplo de operador <<=, el valor de c es = %d\n", c );
 
   c >>=  2;
   printf("Línea 8 - Ejemplo de operador >=>, el valor de c es = %d\n", c );
 
   c &=  2;
   printf("Línea 9 - Ejemplo de operador &=, el valor de c es = %d\n", c );
 
   c ^=  2;
   printf("Línea 10 - Ejemplo de operador ^=, el valor de c es = %d\n", c );
 
   c |=  2;
   printf("Línea 11 - c |=, ejemplo de operador |=, el valor de c es = %d\n", c );
 
}

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

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

Operadores especiales → sizeof & ternario

La siguiente tabla enumera otros operadores importantes que admite el lenguaje C, incluyendo sizeof Y ? :.

operadoresDescripciónEjemplo
sizeof()Devolverá el tamaño de la variable.sizeof(a) devolverá 4donde a es un entero.
&Devolverá la dirección de la variable.&a; dará la dirección real de la variable.
*Apuntará a una variable.*a; apuntará a una variable.
? :Expresión condicionalSi la condición es verdadera ? entonces el valor es X : de lo contrario el valor es Y

Ejemplo

Vea el siguiente ejemplo para comprender todos los operadores especiales disponibles en el lenguaje C:

#include <stdio.h>
 
int main()
{
   int a = 4;
   short b;
   double c;
   int* ptr;
 
   /* Ejemplo de operador sizeof */
   printf("Línea 1 - El tamaño de la variable a es = %lu\n", sizeof(a) );
   printf("Línea 2 - tamaño de la variable b = %lu\n", sizeof(b))
   printf("Línea 3 - tamaño de la variable c = %lu\n", sizeof(c));
 
   /* & y * ejemplo de operador */
   ptr = &a;    /* 'ptr' ahora contiene la dirección de 'a' */
   printf("a valor es %d\n", a);
   printf("*ptr es %d\n", *ptr);
 
   /* ejemplo de operador ternario */
   a = 10;
   b = (a == 1) ? 20: 30;
   printf("b valor es %d\n", b);
 
   b = (a == 10) ? 20: 30;
   printf("b valor es %d\n", b);
}

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

Línea 1 - tamaño de la variable a = 4
Línea 2 - tamaño de la variable b = 2
Línea 3 - tamaño de la variable c = 8
el valor de a es 4
*ptr es 4
el valor de b es 30
el valor de b es 20

Prioridad de los operadores en C

La prioridad de los operadores determina la combinación de los elementos en una expresión. Esto afecta a cómo se calcula una expresión. Algunos operadores tienen una prioridad más alta que otros, por ejemplo, los operadores de multiplicación y división tienen una prioridad más alta que los de adición y sustracción.

por ejemplo x = 7 + 3 * 2aquí, x se asigna el valor de 13, en lugar de 20, porque el operador * más alta prioridad + prioridad más alta, 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 la más alta a la más baja. Los operadores de mayor prioridad se muestran en la parte superior de la tabla, y los de menor prioridad en la parte inferior. En una expresión, los operadores de mayor prioridad se calculan primero.

categoría operadores asociatividad 
sufijo () [] -> .  ++   - -  De izquierda a derecha 
unario +  -   ! ~  ++  - -   (type)*  & sizeof De derecha a izquierda 
multiplicación y división *  /  % De izquierda a derecha 
adición y sustracción +  - De izquierda a derecha 
desplazamiento << >> De izquierda a derecha 
relación < <= > >= De izquierda a derecha 
igual == != De izquierda a derecha 
y bit AND & De izquierda a derecha 
xor bit XOR ^ De izquierda a derecha 
o bit OR | De izquierda a derecha 
y lógico AND && De izquierda a derecha 
o lógico OR || De izquierda a derecha 
condicional ?: De derecha a izquierda 
asignación =  +=  -=  *=  /= %=>>= <<= &= ^= |= De derecha a izquierda 
coma , De izquierda a derecha 

Ejemplo

Vea el siguiente ejemplo para entender la prioridad de los operadores en el lenguaje C:

#include <stdio.h>
 
main()
{
   int a = 20;
   int b = 10;
   int c = 15;
   int d = 5;
   int e;
 
   e = (a + b) * c / d;      // ( 30 * 15 ) / 5
   printf("(a + b) * c / d valor es %d\n", e);
 
   e = ((a + b) * c) / d;    // (30 * 15 ) / 5
   printf("((a + b) * c) / d valor es %d\n", e);
 
   e = (a + b) * (c / d);   // (30) * (15/5)
   printf("(a + b) * (c / d) valor es %d\n", e);
 
   e = a + (b * c) / d;     //  20 + (150/5)
   printf("a + (b * c) / d valor es %d\n", e);
  
   return 0;
}

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

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