Operadores C

Introducción a los operadores C y la precedencia de los operadores

C nos ofrece una amplia variedad de operadores que podemos utilizar para operar con datos.

En particular, podemos identificar varios grupos de operadores:

  • operadores aritméticos
  • operadores de comparación
  • operadores logicos
  • operadores de asignación compuesta
  • operadores bit a bit
  • punterooperadores
  • operadores de estructura
  • operadores varios

En esta entrada de blog voy a detallarlos todos, usando 2 variables imaginariasaybcomo ejemplos.

Mantengo los operadores bit a bit, los operadores de estructura y los operadores de puntero fuera de esta lista, ya que les dedicaré una publicación de blog específica.

Operadores aritméticos

En este grupo de macros voy a separar operadores binarios y operadores unarios.

Los operadores binarios funcionan con dos operandos:

Operador Nombre Ejemplo
= Asignación a = b
+ Adición a + b
- Sustracción a - b
* Multiplicación a * b
/ División a / b
% Modulo a % b

Los operadores unarios solo toman un operando:

Operador Nombre Ejemplo
+ Unario más +a
- Unario menos -a
++ Incremento a++o++a
-- Decremento a--o--a

La diferencia entrea++y++aes esoa++incrementa elavariable después de usarlo.++aincrementa elavariable antes de usarlo.

Por ejemplo:

int a = 2;
int b;
b = a++ /* b is 2, a is 3 */
b = ++a /* b is 4, a is 4 */

Lo mismo se aplica al operador de decremento.

Operadores de comparación

Operador Nombre Ejemplo
== Operador igual a == b
!= Operador no igual a != b
> Más grande que a > b
< Menos que a < b
>= Mayor o igual a a >= b
<= Menos que o igual a a <= b

Operadores logicos

  • !NO (ejemplo:!a)
  • &&Y (ejemplo:a && b)
  • ||O (ejemplo:a || b)

Esos operadores son excelentes cuando se trabaja con valores booleanos.

Operadores de asignación compuesta

Estos operadores son útiles para realizar una asignación y al mismo tiempo realizar una operación aritmética:

Operador Nombre Ejemplo
+= Asignación de adición a += b
-= Asignación de resta a -= b
*= Asignación de multiplicación a *= b
/= Asignación de división a /= b
%= Asignación de módulo a %= b

Operadores varios

El operador ternario

El operador ternario es el único operador enCque funciona con 3 operandos y es una forma corta de expresar condicionales.

Así es como se ve:

<condition> ? <expression> : <expression>

Ejemplo:

a ? b : c

Siase evalúa paratrue, entonces elbse ejecuta la sentencia, de lo contrarioces.

El operador ternario es funcionalmente igual que un condicional if / else, excepto que es más corto de expresar y se puede incluir en una expresión.

tamaño de

lossizeofoperador devuelve el tamaño del operando que pasa. Puede pasar una variable o incluso un tipo.

Uso de ejemplo:

#include <stdio.h>

int main(void) {
  int age = 37;
  printf("%ld\n", sizeof(age));
  printf("%ld", sizeof(int));
}

Precedencia del operador

Con todos esos operadores (y más, que no he cubierto en esta publicación, incluidos los operadores de estructura bit a bit y los operadores de puntero), debemos prestar atención al usarlos juntos en una sola expresión.

Supongamos que tenemos esta operación:

int a = 2;
int b = 4;
int c = b + a * a / b - a;

Cual es el valor dec? ¿Obtenemos que la suma se ejecute antes de la multiplicación y la división?

Hay un conjunto de reglas que nos ayudan a resolver este acertijo.

En orden de menos precedencia a más precedencia, tenemos:

  • la=operador de asignación
  • la+y- binariooperadores
  • la*y/operadores
  • la+y-operadores unarios

Los operadores también tienen una regla de asociatividad, que siempre es de izquierda a derecha excepto para los operadores unarios y la asignación.

En:

int c = b + a * a / b - a;

Primero ejecutamosa * a / b, que por ser de izquierda a derecha podemos separar ena * ay el resultado/ b:2 * 2 = 4,4 / 4 = 1.

Entonces podemos realizar la suma y la resta: 4 + 1 - 2. El valor deces3.

En todos los casos, sin embargo, quiero asegurarme de que se dé cuenta de que puede usar paréntesis para hacer que cualquier expresión similar sea más fácil de leer y comprender.

Los paréntesis tienen mayor prioridad sobre cualquier otra cosa.

La expresión de ejemplo anterior se puede reescribir como:

int c = b + ((a * a) / b) - a;

y no tenemos que pensar mucho en eso.

Descarga mi gratisManual de C


Más tutoriales de clang: