En el lenguaje C podemos distinguir los siguientes tipos de operadores:
Int a=45;
b = a;
var1 = 3.5 * a;
Hola = b * 7.0 + 5.7;
a++; ó ++a; es lo mismo que escribir: a = a +1;
a--; ó --a; es lo mismo que escribir: a = a 1;
Ejercicio_Op_1. Buscar cuál es la diferencia de poner los operadores a la derecha o a la izquierda de la variable
Ejemplo_Op_1. En realidad los operadores relacionales devuelven un entero, cuyo valor se interpreta como falso si el valor devuelto es 0 y verdadero si el valor devuelto es distinto de 0. Con el siguiente programa se puede comprobar esto:
/* Ejemplo de valor entero devuelto por los operadores relacionales */
#include <stdio.h>
int main( void )
{
printf ("Valor devuelto si falso: %d, valor devuelto si verdadero: %d\n", 6<5, 6!=5);
return 0;
}
a <= 5 || a > 3 Esta expresión será verdad si la variable a (suponiendo que sea entera) vale 4 ó 5.
o Desplazamiento aritmético en complemento a 2 a la derecha: C >> n. Donde C en la variable/constante a desplazar y n es el número de desplazamientos. Recordar que un desplazamiento a la derecha de una cantidad entera supone su división por 2.
o Desplazamiento aritmético en complemento a 2 a la izquierda: C << n. Donde C en la variable/constante a desplazar y n es el número de desplazamientos. Recordar que un desplazamiento a la izquierda de una cantidad entera supone su multiplicación por 2.
o Operación lógico AND: &. Recordar que la operación AND sobre dos combinaciones binarias implica la realización de la operación AND sobre los valores de cada posición.
o Operación lógico OR: |. Recordar que la operación OR sobre dos combinaciones binarias implica la realización de la operación AND sobre los valores de cada posición.
o Operación lógico NOT: ~. En este caso es un operador unario, y su resultado es el complemento del operando. Ejemplo: ~variable.
Ejemplo_Op_2. El siguiente programa sirve para algunas de las utilidades de estos operadores:
/* Ejemplo de uso de operadores binarios*/
#include <stdio.h>
int main( void )
{
int a=-50, b;
/* Emplo de multiplicación/división rápida por potencias de 2 */
printf ("Resultado de desplazar a dos posiciones a la derecha: %d\n", a>>2); //División por 4
printf ("Resultado de desplazar a cuatro posiciones a la izquierda: %d\n", a<<4); //Multiplicación por 16
/* Comprobación de si el dígito cuarto (empezando por la derecha) de la variable a vale 0 ó 1 */
b=8; //Plantilla b (en binario) = ...001000
if ( (b & a) == 0)
{
printf("el dígito vale 0\n");
}
else
{
printf("el dígito vale 1\n");
}
return 0;
}
o Operador coma (","). Sirve para agrupar expresiones: expr1,expr2,expr3. El resultado es que se evalúan todas las expresiones y se devuelve como valor el resultado de la expresión más a la derecha. Su uso más típico es en sentencias for (sentencia que se verá más adelante), por ejemplo:
for (a=0,b=3; a<=50; a++,b++)
o Operador "?" o condicional. Su sintaxis es: expresión ? expresión1 : expresión2. Si expresión es verdad se evalúa y devuelve expresión1, en caso contrario se evalúa y devuelve expresión2. Ejemplo:
max = a>b ? a : b ;