Programación III
Clase #03
Operadores
Expresiones
• Es cualquier cosa que retorne un valor.
• En C++ CASI todo son expresiones.
• Ejemplo:– 5– 3 + 2
• Las expresiones se pueden formar por medio de operadores…
Objetos
• En C++ un objeto es:– Cualquier cosa que ocupe un lugar en
memoria.
Operadores (Precedencia 1)
• Resolución de Ámbito, classname::member
• Global ::name
Operadores (Precedencia 2)
• Selección de Miembros: object.member pointer->member
• Subíndice pointer[expr]
• Llamado a función expr(expr_list)
• Post Increment lvalue++
• Post Decrement lvalue++
Operadores (Precedencia 3)
• Tamaño de Objeto: sizeof expr• Tamaño de Tipo: sizeof(type)• Pre Incremento: ++lvalue• Pre Decremento: --lvalue• Complemento: ~expr• NOT: !expr• Más Unario: +expr• Menos Unario: -expr• Dirección de: &expr• Dereferencia: *expr• Reserva de Memoria: new type(expr_list)• Borrado de Memoria: delete pointer delete[] pointer
Operadores (Precedencia 4)
• Multiplicar: expr * expr
• Dividir: expr / expr
• Módulo: expr % expr
Operadores (Precedencia 5)
• Suma: expr + expr
• Resta: expr - expr
Operadores (Precedencia 6)
• Shift Right: expr >> expr
• Shift Left: expr << expr
Operadores (Precedencia 7)
• Menor que: expr < expr
• Menor o igual que: expr <= expr
• Mayor que: expr > expr
• Mayor o igual que: expr >= expr
Operadores (Precedencia 8)
• Igual: expr == expr
• Diferente: expr != expr
Operadores (Precedencia 9)
• Bitwise AND: expr & expr• Bitwise XOR: expr ^ expr• Bitwise OR: expr | expr• AND Lógico: expr && expr• OR Lógico: expr || expr• Expresión condicional: expr ?expr: expr
• (En esta diapositiva, cada operador tiene diferente precedencia)
Operadores (Precedencia 10)
• Asignación Simple: lvalue = expr• Otros Operadores de Asignación:
– lvalue *= expr– lvalue /= expr– lvalue %= expr– lvalue += expr– lvalue -= expr– lvalue <<= expr lvalue>>=expr– lvalue &= expr lvalue |= expr
lvalue^=expr
Operadores Aritméticos
• + Suma• - Resta• * Multiplicación• / División• % Módulo• + (Unario)• - (Unario)• ++, -- Incremento y Decremento, Unarios
en versiones postfija, y prefija
Ejemplos
int a = 5, b;
b = -a;
int a = 4, b;
b = a++;
int a = 4, b;
b = ++a;
a 5
b 4
a 5
b 5
¿Verdadero / Falso?
• En C++ Falso es:– la constante false– 0
• En C++ Verdadero es:– la constante true– Cualquier valor que NO sea 0– 1, -1.1545, 50000, ‘A’, etc.
Operadores Relacionales
• == Igualdad
• != Diferencia
• < Menor que
• <= Menor igual que
• > Mayor que
• >= Mayor igual que
Ejemplo
int a= 9, b =9, c=1, x;
x = a==b;
x = a==c;
x = a>=b;
Operadores Lógicos
• ! Not
• && And
• || Or
• En C++ los valores lógicos son enteros, Falso es representado por 0, y verdadero es NO 0.
Ejemplo
int a= 9, b =9, c=1, x;
x = (a==b) && (c>0);
x = !((a==b) && (c>0));
x = (a>=b) || (c<100);
Operadores de Asignación
• = Asignación
• += Sume y Asigne (a+=2 a = a + 2)
• -= Reste y Asigne (a-=2 a = a - 2)
• *= Mult. y Asigne (a*=2 a = a * 2)
• /= Div. y Asigne (a/=2 a = a / 2)
• %= Mod. y Asigne (a%=2 a = a % 2)
Ejemplo
int a, b, c, d, e;
a = b = c = d = e = 13;
/*
Todas estas variables quedan con valor 13
*/
Operadores Bitwise
• >> Shift Left
• << Shift Right
• & Bitwise And
• | Bitwise Or
• ^ Bitwise Xor
• ~ Complemento
• <<=, >>=, &=, |=, ^= También
Operador Ternario
• expr1 ? expr2 : expr3• Este operador hace lo siguiente:
– Si la expr1 es verdadera, la expresión total devuelve el valor contenido en expr2
– Si la expr1 es falsa, la expresión total devuelve el valor contenido en expre3
• x = 3 >= 3 ? 5 : 1– Se asignaría 5, dado que expr1 (3>=3) es verdadera.
Otros Operadores (1)
• Memoria Dinámica:– new, delete
• Clases– :: Operador de Resolución de Acceso
• Estructuras– ., -> Operadores de Acceso de Campos
• Apuntadores– * A lo que apunta…– & Operador de dereferencia, la dirección de…
Otros Operadores (2)
• sizeof(obj) Retorna el tamaño en bytes de obj
• sizeof(type) Retorna el tamaño en bytes del type
• [] Operador de subíndice