Operadores relaciónales y lógicos
Los operadores relaciónales y lógicos de C, ordenados de mayor a menor
prioridad son:
Los operadores relaciónales y lógicos tiene menor prioridad que los operadores aritméticos antes descritos, así , escribir 10>3+9 es equivalente a escribir 10>(3+9).
Operador de asignación
El lenguaje C, a diferencia de otros lenguajes tales como Pascal, no diferencia
la asignación de cualquier otro operador del lenguaje. Para C, la asignación es un
operador, el llamado operador asignación (=), el cual posee la prioridad más baja de
todos los operadores. Es por ello que en C podemos escribir expresiones del tipo:
if ((c=a*b)<0) /* if es la comprobación condicional de C, que se vera con posterioridad */
Esta expresión asigna a la variable c el valor de a*b y devuelve su valor para
compararlo con el valor constante 0. Los paréntesis son necesarios pues el operador
asignación tiene la prioridad mas baja de todos los operadores.
Operador sizeof.
El operador sizeof es un operador en tiempo de compilación. El operador sizeof
devuelve el tamaño de una variable o tipo de dato durante la compilación, no durante la
ejecución del programa. Veamos algunos ejemplos:
sizeof(int) devuelve el valor 2 en los sistemas operativos de 16 bits y 4 en los de
32 bits.
Si tenemos:
char a[20], sizeof(a) devuelve el valor 20;
y si tenemos:
float a[6],
sizeof(a) devuelve el valor 24 (4*6).
Operadores sobre bits.
El lenguaje C posee operadores que actúan a nivel de bits sobre los datos, estos
operadores son:
Los operadores &, | y ^ actúan sobre dos operandos, mientras que ∼ ,<< y >>
actúan sobre un solo operando. Veamos su actuación sobre dos valores cualquiera:
Donde los números que acompañan a los operadores << y >> indican cuantas
posiciones se desplaza el operando. La prioridad de los operadores sobre bits es:
- El operador ∼ tiene la misma prioridad que los operadores ++ y .--.
- Los operadores << y >> tienen la prioridad situada entre los operadores aritméticos y los operadores relaciónales y lógicos.
- Los operadores &, ^ y | tienen la prioridad situada entre los operadores relaciónales y los operadores lógicos (&& y ||).
El operador ? / ternario
El operador ? se usa para reemplazar las sentencias if/else (que veremos con
posterioridad) de formato general:
if (condición)
expresión;
else
expresión;
Donde expresión debe ser una expresión sencilla y no otra sentencia de C.
El operador ? es un operador ternario cuyo formato general es:
Exp1 ? Exp2 : Exp3;
Donde Exp1, Exp2 y Exp3 son expresiones.
El operador ? evalúa la expresión
Exp1, si es cierta se evalúa Exp2 y si es falsa se evalúa Exp3. Veamos algunos
ejemplos:
int x,y;
y=(x>10) ? 100 : 200;
Asignara el valor 100 a y si x es mayor de 10, y el valor 200 en caso contrario.
int t;
(t) ? f1(t)+f2() : printf(“t vale cero”);
Ejecutara las funciones f1() y f2() si t es distinto de cero, y la función printf si t
vale cero.