OPERADORES
Un operador es un símbolo que indica al compilador la ejecución de operaciones matemáticas y lógicas.
Operadores aritméticos
Se ilustran en la tabla siguiente:
Operador
|
Función
|
-
|
Substracción o menos unario
|
+
|
Adición
|
*
|
Multiplicación
|
/
|
División
|
%
|
Resto de una división
|
--
|
Decremento
|
++
|
Incremento
|
El operador de resto de una división (módulo) da como resultado el resto de una división de dos números enteros. No puede ser por tanto utilizado con el tipo float o double.
-
#include <stdio.h>
main() {
-
printf("\n 5/2=%f",5/2); /* visualiza 2.5 */
printf("\n resto de 5/2=%d",5%2); /* visualiza 1 */ }
Incremento y decremento
La operación ++ incrementa en una unidad el operando, La operación -- la decrementa
La expresión x++ es equivalente a x=x+1.
La expresión x-- es equivalente a x=x-1.
Los operadores de incremento y decremento pueden preceder o seguir al operando.La interpretación sin embargo es distinta si le preceden o si le siguen.
-
main()
{
-
int x=4;
x++; /* valor de x = 5 */
++x; /* valor de x = 6 */
x--; /* valor de x = 5 */
--x; /* valor de x = 4 */
return x; /* La función main() da en este caso un valor de retorno */
}
En el ejemplo anterior hay una diferencia en la forma de incrementar según esté el operador antes o después. Si se pone antes primero se incrementa/decrementa y después se hace la operación. En el caso de seguir al operando primero se hace la operación y después se incrementa/decrementa. En el ejemplo que sigue se ilustra la diferencia.
-
x=10;
y=++x; /* y=11 x=11 */
y=x++ /* y=11 x=12 */
Jerarquía relativa a la prioridad de los operadores aritméticos
Operador
|
Asociatividad
|
- (unario) ++ --
|
derecha-izquierda
|
* / %
|
izquierda-derecha
|
== !=
|
izquierda-derecha
|
+ -
|
izquierda-derecha
|
Operadores relacionales y lógicos
Cuando se habla de operadores relacionales y lógicos el termino relación se refiere a las características que puede haber entre un valor y otro mientras el termino lógico se refiere al modo de unir estas características.
En C el concepto de verdadero o falso se expresa en términos de distinto de cero para verdadero e igual a cero para falso.
Las expresiones que utilizan los operadores relacionales y lógicos dan o bien el valor cero (falso) o distinto de cero (verdadero).
A continuación se da una tabla con dichos operadores:
: Operadores relacionales
Operador
|
Función
|
>
|
Mayor que
|
>=
|
Mayor o igual que
|
<
|
Menor que
|
<=
|
Menor o igual que
|
==
|
Igual
|
!=
|
No igual (distinto)
|
: Operadores lógicos
Operador
|
Función
|
&&
|
AND (y)
|
||
|
OR (o)
|
!
|
NOT( no)
|
: tabla de verdad de OR AND e NOT
operando1
|
operando2
|
AND
|
OR
|
oper.
|
NOT
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
0
|
1
|
0
|
0
|
1
|
|
|
1
|
1
|
1
|
1
|
|
|
-
#include <stdio.h>
main()
{
-
int i=5,j=3,k;
k= (j>i); /* k=0 */
k=(i==j); /* k=0 */
k= (j<k); /* k=1 */
k=(j<=k); /* k=1 */
k=(j==i)&&(j!=i); /* k=0 */
k=(j==i)||(j!=i); /* k=1 */
k=!((j==i)&&(j!=i));/* k=1 */
return k;
}
Jerarquía de prioridad en los operadores relacionales y lógicos.
Los operadores aritméticos están un grado más bajos en la jerarquía que los relacionales y lógicos. Esto significa que la expresión 10>1+12 se computa como 10>(1+12).
La jerarquía relativa entre estos es:
Operador
|
Asociatividad
|
!
|
derecha-izquierda
|
< <= < <=
|
izquierda-derecha
|
== !=
|
izquierda-derecha
|
&&
|
izquierda-derecha
|
||
|
izquierda-derecha
|
Operadores de asignación
En C el operador de asignación corresponde al signo igual. A diferencia de otros muchos lenguajes de programación el C permite usar el operador de asignación en expresiones que incluyen operadores relacionales y lógicos
-
#include <stdio.h>
void main()
{
-
int x,y,p;
p=x*y;
if (p<0)printf(" p es negativo);
}
-
La secuencia anterior se podría escribir:
void main()
{
-
int x,y,p;
if( (p=x*y)<0) printf("p es negativo);
}
EXPRESIONES
En C una expresión es cualquier combinación válida de operadores, constantes y variables. Si en una expresión hay constantes y /o variables de distinto tipo el compilador convierte todos los operandos al tipo al que pertenece el operando de mayor tipo. El ejemplo que sigue ilustra la conversión.