martes, 19 de junio de 2012

Lista de operadores en C

Este artículo pertenece a Referencias de programación

Hola a todos,

En muchas ocasiones  queremos realizar operaciones entre variables que bien por desconocimiento o bien por no caer en ese momento las implementamos con funciones del lenguaje (por ejemplo if) cuando se podrían implementar mucho más rápido y limpio con operadores.

Un operador es una función que se llama mediante un solo carácter. Ejemplo típico seria el operador de suma (+) o resta(-) pero hay muchos más.

Aquí os dejo la lista,espero no dejarme ninguno:


- Operadores aritméticos:
Los operadores aritméticos se basan en realizar operaciones matemáticas sencillas.

+: Suma. c = a + b, siendo c el resultado de la suma de a y b
-:  Resta. c = a - b, siendo c el resultado de la diferencia entre a y b
*: Multiplicación. c = a * b, siendo c el resultado del producto de a y b
/: División. c = a / b, siendo c el resultado del cociente de a entre b
%: Módulo o resto. c = a % b , siendo c el resultado del resto de la división entera entre a y b.
              Ejemplos:
                          a = 10   b = 5  c = 0
                          a = 10   b = 3  c = 1

NOTA: Todos estos operadores admiten el modificador =. Esto significa que si a y c son la misma variable (por ejemplo si estamos acumulando un valor en un variable ) podemos hacer el código más corto de esta manera.

+= , -= , *= , /= , %=

Utilizándose de esta manera: c += b que seria lo mismo que c = c + b


- Operadores lógicos:
Los operadores lógicos se basan en cierto o falso, representandose en forma de variable como:
 0- falso
 cualquier otro valor - cierto


!: Negación: if(!a). Si a es falso el resultado de !a será cierto.
||: OR:  Si alguno de los dos operandos se cumple la condición resultante también se cumple .if( a || b )
&&: AND. Si los dos operandos se cumplen, la condición resultante también se cumple if(a&&b)
>: Mayor que
<: Menor que

NOTA : Todos estos operandos se pueden combinar en una sola condición. Por ejemplo
if ( !( a || (b && c) || !d )  && e )




- Operadores binarios:
Las variables se guardan en memoria en formato binario, es decir, como un conjunto de 0's y 1's. C nos permite trabajar directamente con estos bits , cosa muy útil en operaciones de bajo nivel.
~: Negación . a = ~b , a contendría la misma máscara de bits que b pero con todos sus valores al revés.
NOTA: Para conseguir el símbolo de ~ solo tenéis que darle a ALT+126 en el teclado numérico.
<<  >> Desplazamientos de bits. c = a << b  o c = a >> b . Siendo a una variable y b un número de btis a desplazar. Con esto todos los bits que se "salgan" del margen de la variable  se pierden.
| : OR. c = a | b. c contendría la suma de los bits de a y de b, es decir, que si en a o en b hay un cierto bit a 1 también estará a 1 en c.
& : AND. c = a&b. c contendría la multiplicación binaria de a y b, es decir, que si en a o en b hay un cierto bit a 0, también estará a 0 en c.
^: XOR. Suma Exclusiva.  c = a ^ b. Aplica la suma exclusiva entre a y b. La suma exclusiva es aquella en que el bit de salida solo es 1 si los dos bits de entrada son diferentes y es 0 si los dos bits de entrada son iguales.
NOTA: Igual que con los operadores aritméticos el modificador = funciona con estos operadores (a excepción de con el operador ~ que es unario)
>>=, <<= , |= , &=, ^=



- Operadores de punteros:
Básicamente hay dos tres operadores de punteros:
&: Obtener la dirección de memoria de una variable
*: Obtener el valor de la variable apuntada por un puntero
->: Equivale a (*struct).  Es decir, a acceder a un campo de una estructura de la cual tenemos solamente su puntero.




Consideraciones generales:
- Usar operadores de forma indiscriminada puede complicar la legibilidad del código (casi tanto como su no uso)

- Las diferencias entre operadores son sutiles (|| or logica, | or binaria) o directamente tienen más de un uso (* multiplicación aritmética. *valor de un puntero) que se decide por el contexto del código. Incluso con experiencia en programación, es muy fácil equivocarse.

- Un buen uso de operadores generará un código más compacto y fácil de mantener y de mayor rendimiento computacional.

- Las combinaciones que se pueden llegar ha hacer son asombrosas: investigad.

Creo que no me he dejado ningún operador, si me hubiera dejado alguno, decidmelo y lo añado.
Si algo no ha quedado suficientemente explicado decidmelo y lo intento explicar de otra manera.

Espero que os haya gustado

Nos vemos

LordPakusBlog


Entradas populares