Tipos

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;

}

 

Otros operadores

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 ;