}

Lenguaje de programación C (III). Agentes y Expresiones

1991/04/01 Alegria Loinaz, Iñaki | Maritxalar, Montse Iturria: Elhuyar aldizkaria

En el lenguaje C se utiliza un operador para representar una operación. La combinación de variables y/o constantes con los agentes genera expresiones.

Tras analizar las variables y constantes en el capítulo anterior, el objetivo de este capítulo es ver cómo se pueden combinar las variables y constantes mencionadas para formar expresiones.

En el lenguaje C se utiliza un operador para representar una operación. La combinación de variables y/o constantes con los agentes da lugar a expresiones que consisten en una o varias expresiones, combinadas con los agentes, en una orden. Hay muchos más que los operadores = (asignación) + (suma) – (resta) y * (multiplicación) que hemos utilizado en los programas de los capítulos anteriores. Antes de analizar uno a uno, analizaremos dos características principales de los agentes: la prioridad y la compatibilidad.

Tabla . Agentes y su prioridad y compatibilidad.

Características de los agentes

Cuando hay más de un agente en una expresión, el orden de evaluación depende de la prioridad de los agentes. Se realizan las operaciones de mayor prioridad obteniendo los primeros resultados de trabajo. Posteriormente, y siguiendo el orden decreciente de prioridad, se aplican los siguientes agentes sobre los resultados de trabajo anteriores. Los paréntesis, al igual que en otros lenguajes, modifican el orden de la evaluación. Por ejemplo, la evaluación de 2 + 3 * 4 genera 14 porque la multiplicación tiene un grado de prioridad mayor que la suma.

La convergencia nos dice cómo se realiza la evaluación, de izquierda a derecha o viceversa. Por ejemplo, mientras el operador tiene la compatibilidad derecha izquierda, los operadores aritméticos comunes (+, –, *) tienen la de izquierda a derecha.

a = b = c

se evalúa por la derecha. Por tanto, b primero y a después toman el valor de c.

a + b - c

por el contrario, se evaluará de izquierda a derecha. En la tabla 1 se muestran los agentes más relevantes y su compatibilidad en orden de prioridad.

Vamos a analizar los agentes que aparecen en la tabla.

Tabla . Operadores aritméticos.

Operadores aritméticos

Como se puede observar en la Tabla 2, al margen de las operaciones habituales, se presentan otras dos, el incremento y el decremento. En ambos casos se produce la asignación y aunque se pueden expresar de otra manera, se han introducido dentro del lenguaje C en aras a la comodidad y eficacia, a veces difíciles de leer los programas.

Cabe destacar la existencia de un único agente para la división, tanto total como real (frente al PASCAL, div y / o operadores se diferencian). Si los operandos son completos, el resultado será el de la totalidad de la división y en el resto el real (ver tabla 3).

Tabla . División total y real.

El módulo, el operador%, sólo se puede utilizar con operandos completos.

Ejemplo:

Condición número par (x 2%) = = Ø

Agentes de manejo de bits

Entre las características del lenguaje C se encuentra la capacidad de captura de bits, para lo cual se dispone de los agentes descritos en la tabla 4. Como es sabido, la operación AND se utiliza para poner varios bits en Ø, para poner la operación OR en estado 1 y cambiar el estado xor (bits). Para ello se empareja una variable tipo carácter (8 bits), short (16 bits) o long (32 bits) con una máscara indicada en hexadecimal (prefijo Øx). A los bits que se quieren mantener en la máscara se les asigna el valor Ø y a los que se quieren poner en uno (OR) o cambiar (XOR) el valor. La operación AND se realiza al revés y para ello se puede utilizar el operador.

Tabla . Agentes de manejo de bits.

Por ejemplo, si la variable n está compuesta por 8 bits (sin conocer su valor) y se coloca en un bit a la izquierda, se pone a cero la derecha y se quieren cambiar los dos centrales, se debe:

Tabla . Factores relacionales.
n = n | Øx8Ø n = n ( ØxØ1) n = n^ Øx18

/* n ?ó /* n ?ó /* n ?ó

xxxx xxxx */ 1xxx xxxx */

1xxx xxx Ø */ 1xxx– x–xxØ */

Los desplazamientos sirven sobre todo para utilizar el manejo de bits en estructuras repetitivas, como veremos en el capítulo 5.

Factores de relación

Los operadores relacionales se utilizan principalmente para representar las condiciones (ver tabla 5). En cualquier caso, el lenguaje C puede ser cualquier condición de expresión; la asignación, ...

Cuando una expresión no relacional es condición, la evaluación de la expresión se considera falsa cuando Ø es y en el resto de los casos como verdadera. Por ello, hay que tener mucho cuidado con la relación de igualdad, ya que es muy fácil poner = = en lugar de = (asignación), como se hace en otros lenguajes. En consecuencia, el resultado de la condición a verificar dependerá del valor asignado.

int n = Ø

if (n=Ø) /* siempre falsa, ya que la asignación es */ if (n = Ø) /* en este caso lo verdadero es n Ø ya */

Cabe destacar que las cadenas de caracteres no se pueden combinar con los operadores observados, ya que las cadenas de caracteres no son datos básicos (ver capítulo 7).

Otros agentes

Estos agentes tienen mucho que ver con las estructuras de datos y los demostradores y se profundizará en el capítulo 7 (ver tabla 6).

Tabla .

Agentes combinados

Estos agentes combinan una operación con la asignación, siendo el resultado y el operando 1 siempre la misma variable. De esta forma se puede sustituir x=x+por x+= a, x=x 3 por x =3 etc.

Estos agentes son:

+= % =–= =

*= |=


/= ¿=

Gai honi buruzko eduki gehiago

Elhuyarrek garatutako teknologia