Está en la página 1de 11

7.

OPERADOR DE ASIGNACIÓN (=) ______________________ 
  
El operador "=" asigna el valor de la expresión derecha a la variable
situada a su izquierda.  
código   = 3467;  
fahrenheit  = 123.456;  
coordX  = 525;  
coordY  = 725;  
  
Este operador (=) es asociativo por la derecha, eso permite realizar
asignaciones múltiples. EJ 
a = b = c = 45;  
equivale a  
a = (b = (c = 45));   a las variables a, b y c se asigna el valor 45.  
  
Esta propiedad permite inicializar varias variables con una sola
sentencia  
int a, b, c;  
a = b = c = 5;                                 // se asigna 5 a las variables a, b y c 
  
C proporciona cinco operadores de asignación adicionales. Estos
operadores de asignación actúan como una notación abreviada
para expresiones utilizadas En la Tabla 4.1 aparecen los seis
operadores de asignación. con frecuencia.  
Ej. si se desea multiplicar 10 por i, se puede escribir 
 i = i * 10;  
Simbolo   Uso   Descripción 
=  a = b  Asigna el valor de b => a  
*=  a*=b  Multiplica (a * b) y lo asigna => a 
/=  a/=b  Divide (a entre b) y el resultado lo asigna => a 
%=  a%=b El resto o residuo de (a % b) lo aguarda en => a 
+=  a+=b  Suma (a + b) y lo guarda => a 
-=  a-=b  Resta (b de a) y lo guarda => a 
  
  
  
OPERADORES
ARITMÉTICOS(jerarquía)___________________________________
__________ 
  
  
   operador Operación Nivel  
Unarios  + , - ,  ()  +25  -78  1 
binarios  *,  /,  %  5*5=25  2 
25/5=5 
25%6=1 
Binarios   +,-  2+3=5  3 
2-3=-1 
  
Ejer. 
1. Cuál es el resultado de la siguiente expresión:?  
o 6 + (2 * 3 )- 4 /2? 
o 6 + 6 – (4 / 2) 
o 6 + 6 - 2 
o 12-2 
o 10 
o   
o 5 * 5 ( 5 + ( 6 - 2 )) + 1  
o 7 - 6 / 3 + 2 * 3 / 2 - 4 / 2 
  
  
  
ASOCIATIVIDAD__________________________________________
___ 
  
En una expresión tal como  
(3*4+5 ) 
  
el compilador realiza  
o primero la multiplicación por tener el operador (*)
prioridad más alta  
o y luego la suma (+)  
o por tanto, produce 17.  
  
Para forzar un orden en las operaciones se deben utilizar paréntesis
3 * (4 + 5) produce 2 7, ya que primero se ejecuta las operciones
del parentesis (4 + 5).  
de izquierda a derecha o de derecha a izquierda.  
  
La asociatividad determina el orden en que se agrupan los
operadores de igual prioridad; es decir,  
x - y + z  
se agrupa como  
(x - y) + z  
ya que( - , +) son con igual prioridad, tienen asociatividad de
izquierda a derecha.  
  
Cuál es el resultado de la expresión: 
  
7 * 1 O -5 % 3 * 4 + 9 
  
  
USO DE PARÉNTESIS _________________________________ 
  
  
Los paréntesis se pueden utilizar para cambiar el orden usual de
evaluación de una expresión determinada, por su prioridad y
asociatividad.  
Las sub-expresiones entre paréntesis se evalúan en primer lugar. 
  
o (7 * (10 - 5) % 3)* 4 + 9  
  
  
OPERADORES DE INCREMENTACIÓN Y
DECREMENTACIÓN_______________________________________
_____________ 
  
De las características que incorpora C, una de las más Útiles son  
o los operadores de incremento (++) 
o y decremento (--).  
  
Los operadores ++ y --, denominados de incrementación y
decrementación, suman o restan 1 a su argumento,
respectivamente, cada vez que se aplican a una variable.  
  
Operadores de incrernentación (++) y decrernentación (- -).  
  
Incrementación Decrementación  
++n  --n  
n+= 1  n -= 1 
n=n + 1  n = n - 1  
  
a++ =>  a=a+1 
a-- =>  a=a-1 
  
Estos operadores tienen la propiedad de que pueden utilizarse
como sufijo o prefijo, el resultado de Las sentencias la expresión
puede ser distinto, dependiendo del contexto.  
  
A++ y ++a   tienen el mismo efecto  
  
Pero..el resultado es distinto si se utilizan como prefijo.(Afijo que se
añade al comienzo de una palabra.. ) 
m = ++n;  
printf (" n = %d", --n) ; 
  
++n produce un valor que es mayor en uno que el de n++ ,  
y --n produce un valor que es menor en uno que el valor de n--.  
  
Supongamos que: 
n = 8;  
m = ++n;                                           // incrementa n en 1, 9, y lo asigna
a m  
n = 9;  
printf(" n = %d",--n);                     //decrements n en 1, 8, y lo pasa a
printf()  
n = 8;  
m = n++;                                          // asigna n(8) a m, después
incrementa n en 1 (9)   
n = 9;  
printf(" n = %d',n--);                      // pasa n(9) a printfo, después
decrementa n  
  
  
En este otro ejemplo,  
  
int a = 1, b;  
b = a++; /* b vale 1 y a vale 2 */  
  
int a = 1, b;  
b = ++a; /* b vale 2 y a vale 2 */  
  
Si los operadores ++ y -- están de prefijos,  
la operación de incremento o decremento se efectúa antes que la
operación de asignación;  
  
si los operadores ++ y -- están de sufijos,  
la asignación se efectúa en primer lugar y la incrementación o
decrementación a continuación.  
  
EJ. 
int i = 10:  
int j;  
...  
j = i++;  
  
Ejemplo 4.3 Demostración del funcionamiento de los operadores
de incrementc~/d~crement~~. 
  
  
 #include <stdio.h>                                                /* Test de operadores
++ y -- */  
  
int main( )  

int m = 45, n = 75;  
printf(" m = %d, n = %d\n",m,n);  
+ +m;  
--ni;  
printf( "m = %d, n = %d\n",m,n);  
m++;  
n--;  
printf( "m = %d, n = %d\n",m,n);  
return 0; 

  
Ejecución  
m = 45, n = 75  
m = 46, n = 74  
m = 47, n = 73  
  
En este contexto, el orden de los operadores es irrelevante.  
  
Diferencias entre operadores de pre-incremento y post-
incremento.  
  
#include <stdio.h>                                  /* Test de operadores ++ y --
*/  
  
int main( )  

int m = 99, n;  
n = ++m;  
printf("m = %d, n = %d\n",m,n);  
n = m++;  
printf("m = %d, n = %d\n",m,n);  
printf("m = %d \n" ,m++);  
printf ("m = %d \n",++m) ;  
return 0; 
}  
 
  
OPERADORES
RELACIONALES _________________________________ 
  
Operadores relacionales de C.  
Operador  Significado   Ejemplo  
==   Igual a   a == b  
!=   No igual a   a != b  
>  Mayor que   a > b  
<   Menor que   a < b 
>=   Mayor o igual que   a >= b  
<=   Menor o igual que  a <= b  
  
Ej. 
  
x, a, b y c son de tipo  numero es e inicial es de tipo
double,  int   char,  
 
las siguientes expresiones booleanas son válidas:  
x < 5.75   //? 
(b * b )>= (5.0 * a * c )  //? 
numero == 100 ? 
inicial ! = '5 '  
  
En datos numéricos, los operadores relacionales se utilizan
normalmente para comparar.  
Así, si 
 x = 3.1  
la expresión  
(x < 7.5 )  5<7.5  => verdad 
produce el valor 1 (true). De modo similar si  
numero = 27  
(numero == 100 )  27==100 => falso 
produce el valor O (false).  
  
  
OPERADORES LÓGICOS ___________________________________ 
  
Estos operadores se utilizan con expresiones para devolver un valor
verdadero (cualquier entero distinto de cero) o un valor falso (O).
Los operadores lógicos se denominan también operadores
booleanos, en honor de George Boole, creador del álgebra de
Boole.  
  
Operadores lógicos.  
  
  
Operador   Operación lógica   Ejemplo  
Negación (!)   No lógica (es unario)  ! (10 >= 5)=>"falso"  
Y lógica (&&)  operando-l && operando-2   (m < n) && (i > j ) 
O lógica II   operando-1 II operando-2   (4 == 5) II (10 != 10 ) 
  
  
Tabla de verdad del operador lógico Unario NOT ("!")  
<NEGACIÓN>  
  
Si el Resultado de Condición 1 NOT (!) cambia a:  
Verdadero ( 1 )   => Falso (O)  
Falso (O)   => Verdadero ( 1 )  
  
  
Tabla de verdad del operador lógico Binario AND ("&&") <Y> 
  
                                 Operandos  
Si la Condición 1 es: Si la Condición 2 es:  ejecuta  
Verdadero ( 1 )   Verdadero (1 )   Verdadero ( 1 )  
Verdadero (1)   falso (0)   falso(0) 
Falso (O)   Verdadero ( 1 )   falso (0)  
Falso (O)   Falso (O)   falso(0) 
  
Tabla de verdad del operador lógico OR ("II"). <O> 
  
                                                                           Operandos  
Si la Condición 1 es: Si la Condición 2 es:  ejecuta  
  
Verdadero ( 1 )   Verdadero (1 )    Verdadero (1) 
Verdadero ( 1 )  Falso (O)  Verdadero ( 1 ) 
Falso (O)   Verdadero ( 1 )  Verdadero ( 1 ) 
Falso (O)   Falso (O)    Falso (O)  
  
  
Evaluación en
cortocircuito____________________________________________
________ 
  
En C los operandos de la izquierda de && y II se evalúan siempre en
primer lugar;  
si el valor del operando de la izquierda determina de forma
inequívoca el valor de la expresión,  
el operando derecho no se evalúa.  
 Esto significa que, si el operando de la izquierda de && es
falso o el de II es verdadero, el operando de la derecha no
se evalúa.  
 Esta propiedad se denomina evaluación en cortocircuito y
se debe a que  
o si p es falso, la condición p && q es falsa con
independencia del valor de q y de este modo C no
evalúa q. 
o  De modo similar si p es verdadera la condición p I I
q es verdadera con independencia del valor de q y
C no evalúa a q.  
Ej. 
Supongamos que se evalúa la expresión (x > 0.0) && (log(x) >= 0.5)  
Dado que en una operación lógica Y ( && )  
si el operando de la izquierda ( x >O. O) es falso, (quiere decir que x
es negativo o cero), entonces la expresión lógica se evalúa a falso,  
y en consecuencia, no es necesario evaluar el segundo operando.  
  
En el ejemplo anterior la expresión evita calcular el logaritmo de
números ( x ) negativos o cero. La evaluación en cortocircuito tiene
dos beneficios importantes:  
a. Una expresión booleana se puede utilizar para guardar una
operación potencialmente insegura  
b. Se puede ahorrar una considerable cantidad de tiempo en
la evaluación de condiciones complejas.  
  
  
_______________________________________________________
____________________ 
  
 

También podría gustarte