Beruflich Dokumente
Kultur Dokumente
El lenguaje C++ cuenta con los operadores aritméticos básicos, más los operadores paréntesis () para dar
cierta prioridad a operaciones que lo requieran.
int result, a = 8, b = 2;
result = a % b; /* result = 0 */
result = a - b; /* result = 6 */
Ahora sea: b = 3;
* Observe que la sentencia de asignación, termina con un punto y coma, y las variables se declaran sólo
una vez (caso de la variable b).
a) Si uno o más de los operandos es una variable de tipo punto flotante (double, float), entonces la
división es real.
b) Si los dos operandos son variables enteras (int, long,short,byte), entonces la división es entera.
int a = 3;
double b = 2.0;
a = 3 / b; /* ¿a resulta 1 ó 1.5? */
b = 3 / 2; /* ¿Resultado en b? */
Operador de post y pre incremento
Generalmente en un programa, se tienen que hacer incrementos o decrementos de una unidad para
variables enteras de la manera: var = var + 1; o var = var - 1;
Ej:
int a = 5; /* la variable a, toma como valor 5*/
a++; /* la variable se post incrementa y toma el valor 6 */
++a; /* la variable se pre incrementa y toma el valor 7*/
Ahora bien, cuando este tipo de incrementos no son independientes, o sea hay otra(s) variable(s)
involucrada(s) se deben seguir ciertas reglas, que se ejemplifican a continuación:
post-incremento
int a = 7, b; /* a = 7 y b = 0 */
b = a++; /* primero b = 7 y luego a = a + 1 --> 8 */
pre-incremento
a = 8;
b = ++a;
En este caso, lo primero que se hace es incrementar la variable a (a = 8), para luego asignar ese valor a la
variable b (o sea b = 9).
Ejercicios
a)
int a = 3, b = 4, c;
a++;
b = ++a;
c = b / 2;
c--;
b = c++;
--b;
valores finales: a = 5, b = 0, c = 2.
b)
int x, y = 3, z = 6;
--z;
x = z + y++;
x++;
z = --y + z;
valores finales : x = 9, y = 3, z = 8
Expresión Equivalente
a + = b; a = a + b;
a - = b; a = a - b;
a * = b; a = a * b;
a / = b; a = a / b;
a % = b; a = a % b;
Ejemplo:
int a = 2, b = 3; /* Se declaran dos variables enteras a = 2, b = 3 */
a += b; /* a = a + b = 2 + 3 = 5 */
Para mayor orden en el seguimiento de los valores, se escribe la expresión equivalente y a continuación se
evalúan los valores.
b *= 5; /* b = b * 5 = 3 * 5 = 15 */
a = ++b; /* b = b + 1 = 15 + 1 = 16; a = b = 16 */
Como existe una variable que se está pre-incrementando, lo primero que se hace es modificar el valor de
esa variable. Después de haber hecho esto, se evalúan los valores.
b += --a + 5; /* a = a - 1 = 16 - 1 = 15 ; b = b + a + 5 = 16 + 15 + 5 = 36 */
a += b--; /* a = a + b = 15 + 36 = 51; b = b - 1 = 36 - 1 = 35 */
Como ahora b, se está post-incrementando, lo primero que se hace es evaluar la expresión equivalente, y
después finalmente incrementar la variable b. Valores finales: a = 51, b = 35.
Ejercicios
a)
int a = 2, b = 3, c = 5;
a++;
b += a;
c *= b;
b -= 3;
a %= 2;
c /= 5;
Los valores finales: a = 1, b = 3, c = 6
b)
int a = 1;
int b = 2;
b++;
b = ++a;
a *= 2;
b += a;
a = ++b + 2;
Los valores finales son: a = 9, b = 7
Operadores Relacionales
Los siguientes operadores son fundamentales para implementar las condiciones de las sentencias de
control.
== igual A % 2 == 0
!= distinto t != true
Ejemplo:
5>1 /* true */
1 >= 5 /* false */
2 == 2 /* true */
2 != 2 /* false */
Ejercicio: determinar si las siguientes relaciones son true o false.
a) 7 <= 5
b) 2 > 6
c) 3 != 5
d) a == a + 1
e) b++ != b++
Operadores Lógicos
C++ proporciona operadores lógicos que se usan para simular los conceptos Y, O y NO del álgebra de
Boole.
Éstos se conocen con el nombre de conjunción, disyunción y negación respectivamente, y los operadores
correspondientes son &&, || y !. La precedencia de la conjunción y la disyunción es lo suficientemente
baja como para que no sea necesario utilizar paréntesis.
El operador && tiene mayor precedencia que el operador ||, mientras que ! se agrupa con los demás
operadores. Los argumentos y resultados de estos operadores lógicos son valores de tipo boolean.
|| OR (o) e == 1 | | d == 2
En la siguiente tabla se muestran los resultados de aplicar los operadores lógicos para todos los posibles
valores de entrada.
X Y X && Y X | | Y !X