CAPITULO 3: OPERADORES1. INTRODUCCION Si analizamos la sentencia siguiente: var1 = var2 + var3; estamos diciéndole al programa, por medio del operador +, que compute
la suma del valor de dos variables , y una vez realizado ésto asigne el resultado
a otra variable var1. Esta última operación (asignación) se indica mediante
otro operador, el signo =. 2. OPERADORES ARITMETICOS Tal como era de esperarse los operadores aritméticos ,mostrados en la TABLA 4 , comprenden las cuatro operaciones basicas , suma , resta , multiplicación y división , con un agregado , el operador módulo . TABLA 4 OPERADORES ARITMETICOS
El operador módulo ( % ) se utiliza para calcular el resto del cociente
entre dos ENTEROS , y NO puede ser aplicado a variables del tipo float ó
double . 3. OPERADORES RELACIONALES Todas las operaciones relacionales dan sólo dos posibles resultados : VERDADERO ó FALSO . En el lenguaje C, Falso queda representado por un valor entero nulo (cero) y Verdadero por cualquier número distinto de cero En la TABLA 5 se encuentra la descripción de los mismos . TABLA 5 OPERADORES RELACIONALES
Uno de los errores más comunes es confundir el operador relacional IGUAL
QUE (= =) con el de asignacion IGUAL A (=). La expresión a=b copia el valor
de b en a, mientras que a = = b retorna un cero , si a es distinto de b ó
un número distinto de cero si son iguales. 4. OPERADORES LOGICOS Hay tres operadores que realizan las conectividades lógicas Y (AND) , O (OR) y NEGACION (NOT) y están descriptos en la TABLA 6 . TABLA 6 OPERADORES LOGICOS
Los resultados de la operaciones lógicas siempre adoptan los valores CIERTO
ó FALSO. La evaluación de las operaciones lógicas se realiza de izquierda
a derecha y se interrumpe cuando se ha asegurado el resultado . !( a >> b ) equivale a ( a < b ) !( a == b ) " " ( a != b ) etc. En algunas operaciones suele usárselo de una manera que se presta a confusión , por ejemplo : ( !i ) donde i es un entero. Esto dará un resultado CIERTO si i tiene un valor 0 y un resultado FALSO si i es distinto de cero . 5. OPERADORES DE INCREMENTO Y DECREMENTO Los operadores de incremento y decremento son sólo dos y están descriptos en la TABLA 7 TABLA 7 OPERADORES DE INCREMENTO Y DECREMENTO
Para visualizar rapidamente la función de los operadores antedichos , digamos que las sentencias : a = a + 1 ; tienen una acción idéntica , de la misma forma que a = a - 1 ; es decir incrementa y decrementa a la variable en una unidad i++ ; ++i ; son absolutamente equivalentes, en la mayoria de los casos la ubicación
de los operadores incremento ó decremento indica CUANDO se realiza éste . int i = 1 , j , k ; j = i++ ; k = ++i ; acá j es igualado al valor de i y POSTERIORMENTE a la asignación i es incrementado por lo que j será igual a 1 e i igual a 2 , luego de ejecutada la sentencia . En la siguiente instrucción i se incrementa ANTES de efectuarse la asignacion tomando el valor de 3 , él que luego es copiado en k . 6. OPERADORES DE ASIGNACION En principio puede resultar
algo futil gastar papel en describir al operador IGUAL A ( = ) , sin embargo
es necesario remarcar ciertas características del mismo . a = 17 ; pero no es aceptado , en cambio 17 = a ; /* incorrecto */ ya que la constante numérica 17 no posee una ubicación de memoria donde alojar al valor de a . c = ( a = b ) ; Debido a que las asignaciones se evalúan de derecha a izquierda , los paréntesis son superfluos , y podrá escribirse entonces : c = a = b = 17 ; con lo que las tres variables resultarán iguales al valor de la contante . a = a + 17 ; significando esto que al valor que TENIA anteriormente a , se le suma
la constante y LUEGO se copia el resultado en la variable . a = (a) OP (b) ; puede escribirse en forma abreviada como : a OP= b ; Por ejemplo a += b ; /* equivale : a = a + b */ a -= b ; /* equivale : a = a - b */ a *= b ; /* equivale : a = a * b */ a /= b ; /* equivale : a = a / b */ a %= b ; /* equivale : a = a % b */ Nótese que el pseudooperador debe escribirse con los dos símbolos seguidos , por ejemplo += , y no será aceptado +(espacio) = . TABLA 8 OPERADORES DE ASIGNACION
Vemos de la tabla anterior que aparece otro operador denominado ASIGNACION CONDICIONAL . El significado del mismo es el siguiente : lvalue = ( operación relacional ó logica ) ? (rvalue 1) : (rvalue 2) ; de acuerdo al resultado de la operación condicional se asignará a lvalue
el valor de rvalue 1 ó 2 . Si aquella es CIERTA será lvalue = rvalue 1 y
si diera FALSO , lvalue = rvalue 2 . c = ( a < b ) ? a : b ; 7. OPERADORES DE MANEJO DE BITS Estos operadores
muestran una de las armas más potentes del lenguaje C , la de poder manipulear
INTERNAMENTE , es decir bit a bit , las variables . TABLA 9 OPERADORES DE MANEJO DE BITS
Describiremos mediante unos pocos ejemplos la operatoria de manejo de bits.
TABLA 10 REGLAS PARA LA OPERACION Y (BITWISE AND)
Si suponemos tener dos variables del tipo char, una de ella de valor 85 (hex. 55 ), otra de valor 71 (hex. 47) y realizamos el AND a nivel bits de ellas, obtendremos :
bits decimal hexadecimal
0 1 0 1 0 1 0 1 85 55
& & &
0 1 0 0 0 1 1 1 71 47
------------------------- ------- -------
0 1 0 0 0 1 0 1 69 45
Nótese que la operación es del tipo lógico entre bits, por lo que los
resultados numéricos tienen poco ó ningún significado y sólo se han puesto
con el fin de ejemplificar .
TABLA 11 REGLAS PARA LA OPERACION O INCLUSIVA (BITWISE OR )
Para las mismas variables anteriores obtendremos : TABLA 12 REGLAS PARA LA OPERACION O EXCLUSIVA ( EXOR )
Para las mismas variables anteriores obtendremos : 0 0 0 1 0 0 1 0 18 12 Veamos ahora las operaciones de desplazamiento , la sentencia c = a << b implica asignarle a c, el valor de a con sus bits corridos a la izquierda
en b lugares , los bits que van "saliendo" por la izquierda , se desechan
; y los bits que van quedando libres a la derecha se completan con cero . TABLA 13 PRECEDENCIA DE LOS OPERADORES
NOTA: en el renglón de los operadores de precedencia cero hemos agregado ubicándolos a la derecha del mismo para diferenciarlos, tres operadores , [] ->> y . que serán analizados más adelante, de la misma manera en el renglón siguiente hemos colocado al final a dos operadores: * y & ya que aunque coinciden en símbolo con los de PRODUCTO y AND A NIVEL BITS, son OTRO tipo de operadores que se describirán en capítulos sucesivos. En ese mismo renglón se ha consignado como SIGNO al unitario (-).
© Derechos Reservados, Copyright, DATA-2013, 1998-2020.
|