sábado, 4 de febrero de 2017

Operadores aritméticos, relaciónales y lógicos; operador asignación; operador sizeof y operadores avanzados (operadores sobre bits y operador ?)

Operadores aritméticos.........................................

Los operadores aritméticos existentes en C son, ordenados de mayor a menor precedencia:
 


  

Los operadores ++, -- y % solo pueden usarse con datos de tipo int o char. El operador incremento (++), incrementa en una unidad el valor de la variable sobre la que se aplica, el operador decremento (--), decrementa en una unidad el valor de la variable, y el operador módulo (%), calcula el resto de una división de dos variables de tipo entero o carácter.

Un aspecto que conviene explicar es el hecho de que los operadores incremento y decremento pueden preceder o posceder a su operando, lo cual permite escribir, si x es una variable de tipo int, las expresiones ++x o x++. Usado de forma aislada no presenta ninguna diferencia, sin embargo, cuando se usa en una expresión existe una diferencia en el orden de ejecución del mismo. 


Cuando el operador incremento (o decremento) precede al operando, C primero realiza el incremento (o decremento), y después usa el valor del operando, realizándose la operación al contrario si el operador poscede al operando. Así, considérense el siguiente código de un programa: 

int v1=10,v2; 
v2=++v1; /*Pone 11 en v2, pues primero se
                  /*incrementa v1,  y luego asigna su valor a v2 */

Mientras que el siguiente código funciona de forma distinta:
 
int v1=10,v2; 
v2=v1++; /*Pone 10 en v2, pues primero asigna su*/                        /* valor a v2, y luego incrementa va1 */

Operadores relaciónales y lógico..........................

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 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 sizeo.........................................................

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:



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 ? ......................................................

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.

No hay comentarios.:

Publicar un comentario

Comenta no te cuesta nada