C Operadores

Descargar como ppt, pdf o txt
Descargar como ppt, pdf o txt
Está en la página 1de 21

EXPRESIONES Y OPERADORES

Una expresión se compone de uno o más operandos


sobre los que se realiza una operación. Los operadores son
los símbolos que indican las operaciones o cálculos a
realizar sobre los operandos de la expresión.
Atendiendo al número de operandos de la expresión
tenemos dos clases de operadores:
•Unitarios o unarios, que tan sólo necesitan un
operando.

•Binarios, que son aquellos que necesitan de al


menos dos operandos.
PRIORIDAD
Cuando una expresión lleva varios operadores de
igual o diferente tipo, el lenguaje C establece un orden de
evaluación. Dicho orden depende del operador en cuestión
aunque la colocación de paréntesis rompe dicho orden.
Siempre se aconseja el uso de paréntesis para hacer
mas claro el programa y para evitar ambigüedades.
Por ejemplo:
Sin paréntesis:
2 + 3 * 4 = 14
Con paréntesis:
( 2 + 3 ) * 4 = 20
Operadores Evaluación
() [] .  izqda. a drcha.
Dentro de la tabla la
! ~ ++ -- (tipo) * & Drcha. a izqda.
preferencia es de arriba
sizeof *, & son punteros abajo y dentro de la
* / % izqda. a drcha.
misma línea se conserva
+ - izqda. a drcha.
la misma prioridad
<< >> izqda. a drcha.
para los operadores.
< <= > >= izqda. a drcha.
== != izqda. a drcha.
& izqda. a drcha.
^ izqda. a drcha.
| izqda. a drcha.
&& izqda. a drcha.
|| izqda. a drcha.
? : Drcha. a izqda.
= += -= *= /= %= &= Drcha. a izqda.
^= |= <<= >>=
OPERADORES ARITMETICOS
Puede existir
Son operadores binarios truncamiento si
se aplican a INT
o
+ Suma a CHAR
- Resta
* Multiplicación Sólo enteros
/ División x%y=x-(x/y)*y
% Módulo o resto
- Cambio de signo (operador unario)

El orden de prioridad es el mismo que en matemáticas


, es decir, multiplicación, división y resto de izquierda a
derecha, y después se evalúan la suma y la resta.
OPERADORES DE INCREMENTO
Los operadores de incremento y decremento son:
++ incremento
-- decremento
Ambos son operadores unitarios, sólo se aplican al
operador que los acompaña. Pueden utilizarse como sufijo
o como prefijo ( [post o pre] incremento / decremento ).

Int num1=5; Num2 = num1++; Num2 = 6, num1 = 5


Int num2; Num2 = ++num1; Num2 = 6, num1 = 6
Num2 = num1--; Num2 = 5, num1 = 4
Num2 = --num1;
Num2 = 4, num1 = 4
OPERADORES DE MANEJO DE BITS

Tratan los números como bloques de bits.


<< Desplazamiento a la izquierda
>> Desplazamiento a la derecha
~ Complemento a uno (NOT)
^ Máscara OR exclusiva
& Máscara AND
| Máscara OR
Solo pueden usarse con INT o CHAR y actúan a nivel
de bit. Recordemos que 8 bits forman un byte y que una
‘palabra’ está formada por dos o cuatro bytes (16 o 32 bits)
Los operadores & (AND) y | (OR) se emplean para
activar o desactivar determinados bits del operando
(mascaras).

El operador & (AND) efectúa una operación AND con


cada uno de los bits del operando. De esta manera se
puede saber el estado de los bits que queramos.

El operador | (OR) actúa al contrario. Activa los bits


del operando que coincidan con los bits ‘a uno’ de la
máscara.
EJEMPLO DE APLICACIÓN DE OPERADORES

A B A&B A|B A^B ~A

0 0 0 0 0 1

1 0 0 1 1 0

0 1 0 1 1 1

1 1 1 1 0 0
Los operadores de desplazamiento se dividen en:
•Aritméticos
•Lógicos

Los aritméticos operan sobre enteros (INT) y


mantienen el signo del entero (bit de mayor peso) teniendo
en cuenta que cuando el desplazamiento es a la derecha el
bit se copia en la posición siguiente y que si el
desplazamiento es a la izquierda el bit no se altera.

Los lógicos se realizan con datos UNSIGNED ya que


no tienen consideración con el signo.
Una posible utilidad de los desplazamientos es el
multiplicar y/o dividir por 2 de una manera instantánea. Si
el desplazamiento es a la izquierda se estará multiplicando
por dos en cada bit desplazado. Si el desplazamiento es a
la derecha se estará dividiendo por 2 en cada ‘salto’.

x2^n

1010 0010
/2^n
OPERADORES DE ASIGNACION
Son operadores binarios. El operando izquierdo debe
ser una variable y el operando derecho debe ser del tipo de
dato de dicha variable.
Se dividen en:
De asignación simple: Asigna el valor del operando derecho
al operando izquierdo.
NUM1 = 5
De asignación compuesta: Realizan una operación donde
está implicado el operando izquierdo, al que es asignado el
resultado.
NUM1 += 4 ( o sea NUM1 = NUM1 + 4 )
Asignación Tipo de asignación Ejemplo Equivalente
= Simple P=pta + IVA --------------------
+= De la suma N1 += 4 N1 = N1 + 4
-= De la resta N1 -= 4 N1 = N1 – 4
*= Del producto N1 *= 4 N1 = N1 * 4
/= De la división N1 /= 4 N1 = N1 / 4
%= Del resto Z %= X Z=Z%X
<<= Del desp. A la izqda. Z <<= 2 * X Z = Z << 2 * X
>>= Del desp. A la dercha. Z >>= 2 * X Z = Z >> 2 * X
&= De la operación AND X &= 27 X = X & 27
|= De la operación OR X |= 1110 X = X | 1110
^= De la operación XOR Z ^= 1111 Z = Z ^ 1111
OPERADORES RELACIONALES
Son operadores binarios que establecen una relación
entre los operandos que evalúan. Devuelven una expresión
lógica ( aquella que sólo puede tomar los valores falso,
o igual a cero, o verdadero, o distinto de cero) equivalente
a la relación de los operadores. Son los siguientes:

OP1 == OP2 OP1 Igual que OP2


OP1 != OP2 OP1 Distinto que OP2
OP1 < OP2 OP1 menor que OP2
OP1 > OP2 OP1 Mayor que OP2
OP1 <= OP2 OP1 menor o igual que OP2
OP1 <= OP2 OP1 mayor o igual que OP2
OPERADORES LOGICOS
Son aquellos que relacionan expresiones lógicas y
que devuelven un valor verdadero o falso. Las expresiones
lógicas ocupan 1 bit, puesto que valen o cero o uno.
Los operadores lógicos son:

&& AND
|| OR
! NOT
OPERADORES DE DIRECCION
Son operadores para el uso de punteros. Ambos
operadores son unarios.

* (operador de indirección) :
Devuelve el contenido de la dirección de memoria.

& (operador de dirección) :


Devuelve la dirección en memoria del operando.

Ej:
int Dato;
int *Puntero = &dato;
EJEMPLO DE OPERADORES DE DIRECCION

int Dato = 5;
0x456 5
*Puntero = &Dato;

Dato = 5
int *Puntero; &Dato = 0x456
0x998 0x456 Puntero = 0x456
*Puntero = 5
&Puntero = 0x998
OPERADOR CONDICIONAL
Es característico del lenguaje C. Realiza la misma
función que la estructura if...then...else y, según el caso,
puede sustituirla.
Es un caso de operador ternario. Su sintaxis es:

<condición> ? <expresión_1> : <expresión_2>

Lo primero en evaluarse es la condición. Si es


verdadera se ejecuta la expresión_1 y si es falsa se ejecuta
la expresión_2.
OPERADOR SIZEOF

Devuelve el tamaño en bytes que ocupa determinada


variable o estructura en memoria. Su sintaxis es:

sizeof(expresión)
OPERADOR SECUENCIAL

Este operador se usa para concatenar varias


expresiones. El lado izquierdo de la coma es el que primero
se evalúa.
El resultado de la expresión en conjunto es el resultado
de la última sub-expresión.

La sintaxis es la siguiente:

<variable> = (<expresión1>, <expresión2>, ... , <expresión_n>)


OPERADORES DE ACCESO
Son usados para acceder a los campos (o elementos)
de las estructuras, de las uniones y de los arrays.
Son los siguientes:

. Para estructuras o uniones

 Para punteros a estructuras

[ ] Para arrays
OPERADORES DE MOLDEADO
Son operadores utilizados en la conversión de tipos.
las operaciones requieren que los operandos sean del
mismo tipo. Asi, el operador de moldeado transforma una
variable de un tipo a otro determinado.

( <tipo> ) operando

Donde tipo puede ser cualquiera de los tipos básicos


de variable ( CHAR, INT, FLOAT o DOUBLE ), un puntero o
Un modificador de tipo como LONG O UNSIGNED.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy