SlideShare una empresa de Scribd logo
1 de 8
¿Qué es un operador?
Un operador es un símbolo (+, -, *, /, etc) que tiene una función
predefinida (suma, resta, multiplicación, etc) y que recibe sus
argumentos de manera infija, en el caso de tener 2 argumentos de
manera prefija o postfija, en el caso de tener uno solo ( , o bien, ).
Operadores aritméticos
Los operadores aritméticos nos permiten, básicamente, hacer
cualquier operación aritmética, que necesitemos (ejemplo: suma,
resta, multiplicación, etc). En la siguiente tabla se muestran los
operadores de los que disponemos en C y su función asociada.
Operadores aritméticos
OperadorAcción Ejemplo
- Resta x = 5 + 3; // x vale 2
+ Suma x = 2 - 3; // x vale 5
* Multiplicaciónx = 2 + 3; // x vale 6
/ División x = 6 / 2; // x vale 3
·/. Módulo x = 5 % 2; // x vale 1
-- Decremento x = 1; x--; // x vale 0
++ Incremento x = 1; x++; // x vale 2
Operadores relacionales
Al igual que en matemáticas, estos operadores nos permitirán evaluar las relaciones
(igualdad, mayor, menor, etc) entre un par de operandos (en principio, pensemos en
números). Los operadores relacionales de los que disponemos en C son:
El resultado de cualquier evaluación de este tipo, es
un valor ``cierto'' (true) o ``falso'' (false). La mayoría de lenguajes tienen algún tipo
predefinido para representar estos valores (boolean, bool, etc); sin embargo en C, se
utilizan valores enteros para representar esto:
Operadores lógicos
Como operadores lógicos designamos a aquellos operadores que nos permiten
``conectar'' un par de propiedades (al igual que en lógica):
Operador Acción
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual
!= Distinto
falso (false) 0
cierto (true) cualquier valor distinto de 0, aunque normalmente se usará el 1
numero = 2701; if ( EsPrimo(numero) && (numero > 1000) ){ /* Ejecutaremos este
código si numero */ /* es primo y numero es mayor que 100 */ }
Los operadores lógicos de los que disponemos en C son los siguientes:
Operadores lógicos.
Al igual que con la igualdad hay que tener especial cuidado con los operadores &&
y , ya que si ponemos sólamente un & o un , nos estamos refiriendo a un ``and''
o un ``or'' a nivel de bit, por lo que el código puede que no haga lo que queremos (o
que algunas veces lo haga y otras veces no).
Operadores a nivel de bit (bitwise operators)
En determinadas ocasiones nos puede interesar manipular datos a nivel de bit; por ejemplo activar
o desactivar flags. Un flag es una ``variable'' que puede tomar 2 valores, por lo que se suele
representar con un bit. Debido a que en C (y en la mayoría de lenguajes de programación) no
OperadorAcción
&& Conjunción (Y)
|| Disyunción (O)
! Negación
existen tipos predefinidos de un bit, lo que se suele hacer es agrupar varios flags en una variable
de tipo entero (``short int'', ``int'' o lo que queramos).
Para acceder a estos flags o simplemente para activarlos es necesario utilizar operadores a nivel de
bit. Veámoslo en un ejemplo.
La llamada al sistema ``open'' (en POSIX) necesita que se le especifique que hacer con el fichero a
abrir: crearlo si no existe, sobreescribirlo si existe, no sobreescribirlo, etc.
int open(const char *path, int flags); //Donde: // path --> indica el path de donde se encuentra el
fichero // flags --> indica lo que queremos hacer con el fichero ... // //Flags puede ser: // O_CREAT
Si el fichero no existe, será creado. // O_EXCL Cuando se combina con O_CREAT, se considerará
un // error que el fichero ya exista. // O_TRUNC Si el fichero ya existe, será truncado. //
O_APPEND El fichero se abrirá en modo de sólo-añadir. // O_NONBLOCK El fichero se abre en
modo no bloqueante. // ...
Si queremos abrir el fichero ``/tmp/tutorial_c.txt'' en modo lectura y que se pueda escribir al final
del mismo pondremosint fd; fd = open ("/tmp/tutorial_c.txt", O_CREAT | O_APPEND ); // también lo
podríamos hacer "a pelo": // open ("/tmp/tutorial_c.txt", 0x440) write(fd, "Hola mundo...n", 14);
close (fd);
Aunque normalmente no se suelen utilizar, es bueno conocer como actúan estos operadores y de
cuales disponemos.
Operadores a nivel de bit
OperadorAcción
& AND a nivel de bit.
OR a nivel de bit.
XOR a nivel de bit.
Complemento.
>> Desplazamiento a la izquierda.
<< Desplazamiento a la derecha.
A continuación describiremos cada uno de estos operadores brevemente.
DEFINICIÓN: El operador AND (&): El operador AND compara dos bits; si los dos
son 1 el resultado es 1, en otro caso el resultado será 0.
Ejemplo:
c1 = 0x45 --> 01000101 c2 = 0x71 --> 01110001 --------------------------- c1 & c2 =
0x41 --> 01000001
DEFINICIÓN: El operador OR ( ): El operador OR compara dos bits; si cualquiera
de los dos bits es 1, entonces el resultado es 1; en otro caso será 0. Ejemplo:
i1 = 0x47 --> 01000111 i2 = 0x53 --> 01010011 --------------------------- i1 | i2 = 0x57 -
-> 01010111
DEFINICIÓN: El operador XOR ( ): El operador OR exclusivo o XOR, dará como
resultado un 1 si cualquiera de los dos operandos es 1, pero no los dos a la vez.
Ejemplo:
i1 = 0x47 --> 01000111 i2 = 0x53 --> 01010011 --------------------------- i1 ^ i2 = 0x14
--> 00010100
DEFINICIÓN: El operador de complemento ( ): Este operador devuelve como
resultado el complemento a uno del operando:
c = 0x45 --> 01000101 ---------------------- ~c = 0xBA --> 10111010
DEFINICIÓN: Los operadores de desplazamiento a nivel de bit (<<
y >>Desplazan a la izquierda o a la derecha un número especificado de bits. En
un desplazamiento a la izquierda los bits que sobran por el lado izquierdo se
descartan y se rellenan los nuevos espacios con ceros. De manera análoga pasa
con los desplazamientos a la derecha. Veamos un ejemplo:
c = 0x1C 00011100
c > 1 c = 0x38 00111000
c < 2 c = 0x07 00000111
Operadores especiales
último describiremos los operadores que nos faltan:
 El operador de asignación
 El operador ternario ?
 Los operadores & y * (unarios)
 El operador sizeof
 El operador cast
 El operador coma ``,''
 Los operadores ``.'' y ``- ''
 El operador ( )
 El operador [ ]
Referencia: http://luzumisu.over-blog.com/article-28322968.html

Más contenido relacionado

La actualidad más candente

El lenguaje de programacion c++ prev
El lenguaje de programacion c++ prevEl lenguaje de programacion c++ prev
El lenguaje de programacion c++ prev
jtk1
 
Introducción a C SHARP
Introducción a C SHARPIntroducción a C SHARP
Introducción a C SHARP
infobran
 

La actualidad más candente (20)

Arreglos en C++
Arreglos en C++Arreglos en C++
Arreglos en C++
 
Arreglos. lidia
Arreglos. lidiaArreglos. lidia
Arreglos. lidia
 
Progfacto
ProgfactoProgfacto
Progfacto
 
Punteros a Funciones en C
Punteros a Funciones en CPunteros a Funciones en C
Punteros a Funciones en C
 
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
 
Lista circulares doblemente enlazadas
Lista circulares doblemente enlazadasLista circulares doblemente enlazadas
Lista circulares doblemente enlazadas
 
Swrewer nuevo hoy
Swrewer nuevo hoySwrewer nuevo hoy
Swrewer nuevo hoy
 
C sharp intro0
C sharp intro0C sharp intro0
C sharp intro0
 
Descripcion de algoritmo
Descripcion de algoritmoDescripcion de algoritmo
Descripcion de algoritmo
 
Tema3 p2%20
Tema3 p2%20Tema3 p2%20
Tema3 p2%20
 
Codigos
CodigosCodigos
Codigos
 
Clase4 tallereje
Clase4 tallerejeClase4 tallereje
Clase4 tallereje
 
Semana 3 Fundamentos de Python(Funciones y Métodos)
Semana 3   Fundamentos de Python(Funciones y Métodos)Semana 3   Fundamentos de Python(Funciones y Métodos)
Semana 3 Fundamentos de Python(Funciones y Métodos)
 
El lenguaje de programacion c++ prev
El lenguaje de programacion c++ prevEl lenguaje de programacion c++ prev
El lenguaje de programacion c++ prev
 
Uso de operadores
Uso de operadoresUso de operadores
Uso de operadores
 
Introducción a C SHARP
Introducción a C SHARPIntroducción a C SHARP
Introducción a C SHARP
 
Sesion1 Php Basico
Sesion1 Php BasicoSesion1 Php Basico
Sesion1 Php Basico
 
JavaScript funciones
JavaScript funcionesJavaScript funciones
JavaScript funciones
 
Introducción a Swift
Introducción a SwiftIntroducción a Swift
Introducción a Swift
 
Ap7 java2
Ap7 java2Ap7 java2
Ap7 java2
 

Destacado

Museo tolerancia proyectos
Museo tolerancia proyectosMuseo tolerancia proyectos
Museo tolerancia proyectos
alexis rico
 
Robespierre 2
Robespierre 2Robespierre 2
Robespierre 2
666676
 
museo de memoria y tolerancia
museo de memoria y toleranciamuseo de memoria y tolerancia
museo de memoria y tolerancia
Noeguzman98
 

Destacado (16)

material audivisuales
material audivisualesmaterial audivisuales
material audivisuales
 
Preguntas gene-3-encu-ana-escri
Preguntas gene-3-encu-ana-escriPreguntas gene-3-encu-ana-escri
Preguntas gene-3-encu-ana-escri
 
Management consultants in Delhi
Management consultants in DelhiManagement consultants in Delhi
Management consultants in Delhi
 
PCGS Student Competes in World’s Largest Crowd Funding Event
PCGS Student Competes in World’s Largest Crowd Funding EventPCGS Student Competes in World’s Largest Crowd Funding Event
PCGS Student Competes in World’s Largest Crowd Funding Event
 
Plantilla proyecto
Plantilla proyectoPlantilla proyecto
Plantilla proyecto
 
conceptos de los ramos de novia - imagenes
conceptos de los ramos de novia - imagenes conceptos de los ramos de novia - imagenes
conceptos de los ramos de novia - imagenes
 
Trabajo tecp
Trabajo tecpTrabajo tecp
Trabajo tecp
 
Delitos informativos
Delitos informativosDelitos informativos
Delitos informativos
 
Museo tolerancia proyectos
Museo tolerancia proyectosMuseo tolerancia proyectos
Museo tolerancia proyectos
 
bibliotecas c++
bibliotecas c++bibliotecas c++
bibliotecas c++
 
Robespierre 2
Robespierre 2Robespierre 2
Robespierre 2
 
Proyecto final tic luz amparo mejia castellanos
Proyecto final tic luz amparo mejia castellanosProyecto final tic luz amparo mejia castellanos
Proyecto final tic luz amparo mejia castellanos
 
Proposal
ProposalProposal
Proposal
 
Web quest
Web questWeb quest
Web quest
 
museo de memoria y tolerancia
museo de memoria y toleranciamuseo de memoria y tolerancia
museo de memoria y tolerancia
 
Origem dos produtos utilizados no di-a-dia.
Origem dos produtos utilizados no di-a-dia.Origem dos produtos utilizados no di-a-dia.
Origem dos produtos utilizados no di-a-dia.
 

Similar a tipos de operadores

Estructuras control java-
Estructuras control java-Estructuras control java-
Estructuras control java-
SENA
 
Elementos básicos de c++
Elementos básicos de c++Elementos básicos de c++
Elementos básicos de c++
luiscristian
 
Elementos básicos de c++
Elementos básicos de c++Elementos básicos de c++
Elementos básicos de c++
luiscristian
 

Similar a tipos de operadores (20)

Tipos de operadores_dulce
Tipos de operadores_dulceTipos de operadores_dulce
Tipos de operadores_dulce
 
Semana 5-Conceptualziación del lenguaje de programación C++
Semana 5-Conceptualziación del lenguaje de programación C++Semana 5-Conceptualziación del lenguaje de programación C++
Semana 5-Conceptualziación del lenguaje de programación C++
 
Semana 1-Conceptualziación del lenguaje d eprogramación C++
Semana 1-Conceptualziación del lenguaje d eprogramación C++Semana 1-Conceptualziación del lenguaje d eprogramación C++
Semana 1-Conceptualziación del lenguaje d eprogramación C++
 
Semana 2-Conceptualización del lenguaje de programación C++
Semana 2-Conceptualización del lenguaje de programación C++Semana 2-Conceptualización del lenguaje de programación C++
Semana 2-Conceptualización del lenguaje de programación C++
 
Practica alice p13 v1
Practica alice p13 v1Practica alice p13 v1
Practica alice p13 v1
 
PRACTICA 13 DE ALICE
PRACTICA 13 DE ALICEPRACTICA 13 DE ALICE
PRACTICA 13 DE ALICE
 
Estructuras control java-
Estructuras control java-Estructuras control java-
Estructuras control java-
 
Taller completo
Taller completoTaller completo
Taller completo
 
Operadores y expresiones en pseudocódigo
Operadores y expresiones en pseudocódigoOperadores y expresiones en pseudocódigo
Operadores y expresiones en pseudocódigo
 
JavaScript.pptx
JavaScript.pptxJavaScript.pptx
JavaScript.pptx
 
trabajo de matematicas
trabajo de matematicastrabajo de matematicas
trabajo de matematicas
 
TRABAJO DE MATE
TRABAJO DE MATETRABAJO DE MATE
TRABAJO DE MATE
 
TRABAJO DE MATE
TRABAJO DE MATETRABAJO DE MATE
TRABAJO DE MATE
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Elementos básicos de c++
Elementos básicos de c++Elementos básicos de c++
Elementos básicos de c++
 
Elementos básicos de c++
Elementos básicos de c++Elementos básicos de c++
Elementos básicos de c++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Alice13
Alice13Alice13
Alice13
 
Practica13
Practica13Practica13
Practica13
 
PRACTICA 13 ALICE
PRACTICA 13 ALICEPRACTICA 13 ALICE
PRACTICA 13 ALICE
 

Más de Gustavo Castillo (20)

Practica 7
Practica 7Practica 7
Practica 7
 
Tutorial practica 5
Tutorial practica 5Tutorial practica 5
Tutorial practica 5
 
Practica 8
Practica 8Practica 8
Practica 8
 
suma de 2 numeros
suma de 2 numeros suma de 2 numeros
suma de 2 numeros
 
Divicion de 2 numero
Divicion de 2 numeroDivicion de 2 numero
Divicion de 2 numero
 
Multiplicacion de dos numeros
Multiplicacion de dos numeros Multiplicacion de dos numeros
Multiplicacion de dos numeros
 
Tutorial eclipse/ Dia final
Tutorial eclipse/ Dia finalTutorial eclipse/ Dia final
Tutorial eclipse/ Dia final
 
Empezando eclipse
Empezando eclipseEmpezando eclipse
Empezando eclipse
 
Mi primera hora con eclipse
Mi primera hora con eclipseMi primera hora con eclipse
Mi primera hora con eclipse
 
Tutorial de eclipse/ El ultimo recurso
Tutorial de eclipse/ El ultimo recursoTutorial de eclipse/ El ultimo recurso
Tutorial de eclipse/ El ultimo recurso
 
Tutorial de eclipse
Tutorial de eclipseTutorial de eclipse
Tutorial de eclipse
 
investigacion evolucion de los dispositivos moviles
investigacion evolucion de los dispositivos movilesinvestigacion evolucion de los dispositivos moviles
investigacion evolucion de los dispositivos moviles
 
investigacion evolucion de moviles
investigacion  evolucion de movilesinvestigacion  evolucion de moviles
investigacion evolucion de moviles
 
Cartel Violencia
Cartel  ViolenciaCartel  Violencia
Cartel Violencia
 
Tipos de datos.java
Tipos de datos.javaTipos de datos.java
Tipos de datos.java
 
Presentacion 4
Presentacion 4Presentacion 4
Presentacion 4
 
Presentacion 3
Presentacion 3Presentacion 3
Presentacion 3
 
Presentacion 2
Presentacion 2Presentacion 2
Presentacion 2
 
Presentacion 1
Presentacion 1Presentacion 1
Presentacion 1
 
Practica 3
Practica 3Practica 3
Practica 3
 

Último

RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
pvtablets2023
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 

Último (20)

SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptxEL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
EL HABITO DEL AHORRO en tu idea emprendedora22-04-24.pptx
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Diapositivas de animales reptiles secundaria
Diapositivas de animales reptiles secundariaDiapositivas de animales reptiles secundaria
Diapositivas de animales reptiles secundaria
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 

tipos de operadores

  • 1.
  • 2. ¿Qué es un operador? Un operador es un símbolo (+, -, *, /, etc) que tiene una función predefinida (suma, resta, multiplicación, etc) y que recibe sus argumentos de manera infija, en el caso de tener 2 argumentos de manera prefija o postfija, en el caso de tener uno solo ( , o bien, ). Operadores aritméticos Los operadores aritméticos nos permiten, básicamente, hacer cualquier operación aritmética, que necesitemos (ejemplo: suma, resta, multiplicación, etc). En la siguiente tabla se muestran los operadores de los que disponemos en C y su función asociada. Operadores aritméticos OperadorAcción Ejemplo - Resta x = 5 + 3; // x vale 2 + Suma x = 2 - 3; // x vale 5 * Multiplicaciónx = 2 + 3; // x vale 6 / División x = 6 / 2; // x vale 3 ·/. Módulo x = 5 % 2; // x vale 1 -- Decremento x = 1; x--; // x vale 0 ++ Incremento x = 1; x++; // x vale 2
  • 3. Operadores relacionales Al igual que en matemáticas, estos operadores nos permitirán evaluar las relaciones (igualdad, mayor, menor, etc) entre un par de operandos (en principio, pensemos en números). Los operadores relacionales de los que disponemos en C son: El resultado de cualquier evaluación de este tipo, es un valor ``cierto'' (true) o ``falso'' (false). La mayoría de lenguajes tienen algún tipo predefinido para representar estos valores (boolean, bool, etc); sin embargo en C, se utilizan valores enteros para representar esto: Operadores lógicos Como operadores lógicos designamos a aquellos operadores que nos permiten ``conectar'' un par de propiedades (al igual que en lógica): Operador Acción > Mayor que >= Mayor o igual que < Menor que <= Menor o igual que == Igual != Distinto falso (false) 0 cierto (true) cualquier valor distinto de 0, aunque normalmente se usará el 1
  • 4. numero = 2701; if ( EsPrimo(numero) && (numero > 1000) ){ /* Ejecutaremos este código si numero */ /* es primo y numero es mayor que 100 */ } Los operadores lógicos de los que disponemos en C son los siguientes: Operadores lógicos. Al igual que con la igualdad hay que tener especial cuidado con los operadores && y , ya que si ponemos sólamente un & o un , nos estamos refiriendo a un ``and'' o un ``or'' a nivel de bit, por lo que el código puede que no haga lo que queremos (o que algunas veces lo haga y otras veces no). Operadores a nivel de bit (bitwise operators) En determinadas ocasiones nos puede interesar manipular datos a nivel de bit; por ejemplo activar o desactivar flags. Un flag es una ``variable'' que puede tomar 2 valores, por lo que se suele representar con un bit. Debido a que en C (y en la mayoría de lenguajes de programación) no OperadorAcción && Conjunción (Y) || Disyunción (O) ! Negación
  • 5. existen tipos predefinidos de un bit, lo que se suele hacer es agrupar varios flags en una variable de tipo entero (``short int'', ``int'' o lo que queramos). Para acceder a estos flags o simplemente para activarlos es necesario utilizar operadores a nivel de bit. Veámoslo en un ejemplo. La llamada al sistema ``open'' (en POSIX) necesita que se le especifique que hacer con el fichero a abrir: crearlo si no existe, sobreescribirlo si existe, no sobreescribirlo, etc. int open(const char *path, int flags); //Donde: // path --> indica el path de donde se encuentra el fichero // flags --> indica lo que queremos hacer con el fichero ... // //Flags puede ser: // O_CREAT Si el fichero no existe, será creado. // O_EXCL Cuando se combina con O_CREAT, se considerará un // error que el fichero ya exista. // O_TRUNC Si el fichero ya existe, será truncado. // O_APPEND El fichero se abrirá en modo de sólo-añadir. // O_NONBLOCK El fichero se abre en modo no bloqueante. // ... Si queremos abrir el fichero ``/tmp/tutorial_c.txt'' en modo lectura y que se pueda escribir al final del mismo pondremosint fd; fd = open ("/tmp/tutorial_c.txt", O_CREAT | O_APPEND ); // también lo podríamos hacer "a pelo": // open ("/tmp/tutorial_c.txt", 0x440) write(fd, "Hola mundo...n", 14); close (fd); Aunque normalmente no se suelen utilizar, es bueno conocer como actúan estos operadores y de cuales disponemos. Operadores a nivel de bit OperadorAcción & AND a nivel de bit. OR a nivel de bit. XOR a nivel de bit. Complemento. >> Desplazamiento a la izquierda. << Desplazamiento a la derecha.
  • 6. A continuación describiremos cada uno de estos operadores brevemente. DEFINICIÓN: El operador AND (&): El operador AND compara dos bits; si los dos son 1 el resultado es 1, en otro caso el resultado será 0. Ejemplo: c1 = 0x45 --> 01000101 c2 = 0x71 --> 01110001 --------------------------- c1 & c2 = 0x41 --> 01000001 DEFINICIÓN: El operador OR ( ): El operador OR compara dos bits; si cualquiera de los dos bits es 1, entonces el resultado es 1; en otro caso será 0. Ejemplo: i1 = 0x47 --> 01000111 i2 = 0x53 --> 01010011 --------------------------- i1 | i2 = 0x57 - -> 01010111 DEFINICIÓN: El operador XOR ( ): El operador OR exclusivo o XOR, dará como resultado un 1 si cualquiera de los dos operandos es 1, pero no los dos a la vez. Ejemplo: i1 = 0x47 --> 01000111 i2 = 0x53 --> 01010011 --------------------------- i1 ^ i2 = 0x14 --> 00010100
  • 7. DEFINICIÓN: El operador de complemento ( ): Este operador devuelve como resultado el complemento a uno del operando: c = 0x45 --> 01000101 ---------------------- ~c = 0xBA --> 10111010 DEFINICIÓN: Los operadores de desplazamiento a nivel de bit (<< y >>Desplazan a la izquierda o a la derecha un número especificado de bits. En un desplazamiento a la izquierda los bits que sobran por el lado izquierdo se descartan y se rellenan los nuevos espacios con ceros. De manera análoga pasa con los desplazamientos a la derecha. Veamos un ejemplo: c = 0x1C 00011100 c > 1 c = 0x38 00111000 c < 2 c = 0x07 00000111 Operadores especiales último describiremos los operadores que nos faltan:  El operador de asignación
  • 8.  El operador ternario ?  Los operadores & y * (unarios)  El operador sizeof  El operador cast  El operador coma ``,''  Los operadores ``.'' y ``- ''  El operador ( )  El operador [ ] Referencia: http://luzumisu.over-blog.com/article-28322968.html