Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
_______________________________________________________
____________________