Está en la página 1de 8

1

Operadores en C
Operadores de asignación
La operación más importante en cualquier lenguaje de programación es la
asignación:
DdF C Descripción

← = Asignación

En C hay muchos operadores de asignación que serán en realidad


simplificaciones de expresiones más complejas, como las auto-operaciones
(+=, -=, *=, /=, &=, ...) y los pre/post incrementos/decrementos (++, --).
En general estas expresiones no podrán ser utilizadas en los diagramas de
flujo.
Operadores aritméticos
Cabe destacar que se diferencian la división entera y la división real, según
los operandos.
DdF C Descripción

+ + Suma, adición

- - Resta, sutracción

. * Multiplicación, producto

Div / Cociente división entera

Mod % Resto división entera

/ / División
2

Operadores relacionales
DdF C Descripción

> > Mayor

≥ >= Mayor o igual

< < Menor

≤ <= Menor o igual

= == Igual

≠ != Diferente

Operadores lógicos
Los operandos son considerados falsos (valor 0) ó ciertos (valor distinto de
0). El resultado siempre es 0 ó 1.
DdF C Descripción

^ && And, y, conjunción

∨ || Or, o, disyunción

¬ ! Not, no, negación


3

Para estudiar el resultado se utilizan las tablas de verdad.

Operadores bit a bit


Afectan a los operandos bit a bit, por lo que se aplica la operación lógica a
cada uno de ellos. El resultado bit a bit es 0 ó 1 pero la composición de estos
resultados no tiene porqué ser 0 ó 1, como era el caso en los operadores
lógicos.
DdF C Descripción

AndBB & And bit a bit

OrBB | Or bit a bit

CompBB ~ Complemento a uno o negación bit a bit

XorBB ^ O-exclusiva bit a bit


4

Las tablas de verdad, aplicadas bit a bit a los operandos, son:

Operador condicional
Es un operador ternario, es decir, tiene tres operandos.
Su funcionamiento es el siguiente: para una
ejecución c ? e1 : e2 siendo c, e1 y e2 tres expresiones,

• Se evalúa c
o Si el resultado es cierto (es decir, distinto de cero)
▪ se evalúa e1 y éste sera el resultado.
o Si no (el resultado es falso o cero)
▪ se evalúa e2 y éste sera el resultado.

Ejemplos. Para x = 4, y = 2, z = 7:

• La expresión x >= 5? 1:0 se evalúa a 1


• La expresión x >= 5? y:z se evalúa a 7
• La expresión x <= 5? y:z se evalúa a 2
• La expresión x ? z+y:z-y se evalúa a 9
• La expresión x >= 0 ? sqrt(x):0 se evalúa a 2.0 (sqrt: raíz
cuadrada, prototipo en math.h)
5

DdF C Descripción

: ? : ? Operador condicional c ? e1 : e2

Precedencia y asociatividad
6

Asignaciones en C
En un diagrama de flujo la asignación se representa mediante un bloque
como el de la Figura 1.

Figura 1. Bloque de asignación en un DdF

En esta figura expr representa la parte derecha (r-value) de la asignación,


una expresión cuya evaluación dará lugar a un único valor, el resultado de la
asignación.
La x de la Figura 1 representa la parte izquierda (l-value) de una asignación,
siendo siempre una posición de memoria (una variable).
En C existe la posibilidad de abreviar las asignaciones en las que la
variable x implicada esté a la izquierda y a la derecha de la asignación junto a
una expresión exp, como se ilustra en la Tabla 1.
7

Operador Descripción Equivalente Ejemplo


x += exp Suma x = x + exp x += 7
x -= exp Resta x = x - exp x -= b
x *= exp Producto x = x * exp x *= b + 1
x /= exp División x = x / exp x /= 2
x &= exp And bit a bit x = x & exp x &= flg
x |= exp Or bit a bit x = x | exp x |= 0xf7
x >>= exp Desplazamiento a la derecha x = x >> exp x >>= 1
x <<= exp Desplazamiento a la izquierda x = x << exp x <<= 1
Tabla 1. Abreviaturas de asignaciones
Dada una variable x existen cuatro operaciones especiales para
incrementarla y decrementarla, como se ilustra en la Tabla 2.

Equivalente Equivalente Equivalente


Operador Descripción Valor
aislado 1 aislado 2 aislado 3
++x Preincremento x = x + 1 x++ x += 1 x + 1
--x Predecremento x = x - 1 x-- x -= 1 x - 1
x++ Postincremento x = x + 1 ++x x += 1 x
x-- Postdecremento x = x - 1 --x x -= 1 x
Tabla 2. Asignaciones de incremento y decremento
Tal y como se muestra en esta tabla, aisladamente todas las
incrementaciones son equivalentes, al igual que todas las decrementaciones.
En el lenguaje C la asignación es un operador y la operación de asignación
puede formar parte de una expresión que sea parte de otra asignación. El
valor de una asignación será siempre el de su parte derecha.
8

Expresión Descripción Valor


x = v; Asignación: x recibe el valor v v
x = x + x +
Asignación: x se incrementa en v
v; v
x +
x += v; Asignación: x se incrementa en v
v
x +
++x; Preincremento: x se preincrementa en 1
1
x -
--x; Predecremento: x se predecrementa en 1
1
x++; Postincremento: x se postincrementa en 1 x
x--; Postdecremento: x se postdecrementa en 1 x
Asignaciones: se evalúan de derecha a izquierda; x recibe el
y = x += x +
valor anterior de x incrementado en v; y recibe el valor
v; v
anterior de x incrementado en v
Tabla 3. Ejemplos de valor de asignaciones

También podría gustarte