Los operadores matemáticos básicos son los mismos que están
disponibles en la mayoría de los lenguajes de programación:
adición (+
), substracción (-
),
división (/
), multiplicación (*
), y
módulo (%
; que produce el resto de una división
entera). La división entera trunca el resultado (no lo
redondea). El operador módulo no se puede utilizar con
números con punto flotante.
C y C++ también utilizan notaciones abreviadas para efectuar una
operación y una asignación al mismo tiempo. Esto se denota por
un operador seguido de un signo igual, y se puede aplicar a
todos los operadores del lenguaje (siempre que tenga
sentido). Por ejemplo, para añadir 4
a la
variable x
y asignar x
al
resultado, se escribe: x += 4;
.
Este ejemplo muestra el uso de los operadores matemáticos:
//: C03:Mathops.cpp // Mathematical operators #include <iostream> using namespace std; // A macro to display a string and a value. #define PRINT(STR, VAR) \ cout << STR " = " << VAR << endl int main() { int i, j, k; float u, v, w; // Applies to doubles, too cout << "enter an integer: "; cin >> j; cout << "enter another integer: "; cin >> k; PRINT("j",j); PRINT("k",k); i = j + k; PRINT("j + k",i); i = j - k; PRINT("j - k",i); i = k / j; PRINT("k / j",i); i = k * j; PRINT("k * j",i); i = k % j; PRINT("k % j",i); // The following only works with integers: j %= k; PRINT("j %= k", j); cout << "Enter a floating-point number: "; cin >> v; cout << "Enter another floating-point number:"; cin >> w; PRINT("v",v); PRINT("w",w); u = v + w; PRINT("v + w", u); u = v - w; PRINT("v - w", u); u = v * w; PRINT("v * w", u); u = v / w; PRINT("v / w", u); // The following works for ints, chars, // and doubles too: PRINT("u", u); PRINT("v", v); u += v; PRINT("u += v", u); u -= v; PRINT("u -= v", u); u *= v; PRINT("u *= v", u); u /= v; PRINT("u /= v", u); } ///:~
Listado 3.29. C03/Mathops.cpp
Los rvalues de todas las asignaciones pueden ser, por supuesto, mucho mas complejos.
Observe el uso de la macro PRINT()
para
ahorrar líneas (y errores de sintaxis!). Las macros de
preprocesador se nombran tradicionalmente con todas sus letras
en mayúsculas para que sea fácil distinguirlas - aprenderá más
adelante que las macros pueden ser peligrosas (y también
pueden ser muy útiles).
Los argumentos de de la lista entre paréntesis que sigue al
nombre de la macro son sustituidos en todo el código que sigue
al paréntesis de cierre. El preprocesador elimina el nombre
PRINT
y sustituye el código donde se
invoca la macro, de modo que el compilador no puede generar
ningún mensaje de error al utilizar el nombre de la macro, y
no realiza ninguna comprobación de sintaxis sobre los
argumentos (esto lo último puede ser beneficioso, como se
muestra en las macros de depuración al final del capítulo).