C++ cap 3

Tema 3 - Operadores aritméticos, relaciónales y
lógicos; operador asignación; operador sizeof y
operadores avanzados (operadores sobre bits y
operador ?).
3.1 - Operadores aritméticos.
Los operadores aritméticos existentes en C son, ordenados de mayor a menor
precedencia:
Operador Operador Operador
++ Incremento -- Decremento
- Menos unario
* Multiplicación. / División % Módulo
+ Suma - Resta
Tabla 3.1.1: Operadores aritméticos en C.
Los operadores ++,  -- y % solo pueden usarse con datos de tipo int o char. El
operador incremento (++), incrementa en una unidad el valor de la variable sobre la
que se aplica,  el operador  decremento (--),  decrementa en una unidad el  valor  de la
variable, y el operador módulo (%), calcula el resto de una división de dos variables de
tipo entero o carácter.
Un aspecto que conviene explicar es el hecho de que los operadores incremento
y decremento pueden preceder o posceder a su operando, lo cual permite escribir, si  x
es una variable de tipo  int,  las  expresiones  ++x o  x++.  Usado de forma aislada  no
presenta ninguna diferencia, sin embargo, cuando se usa en una expresión existe una
diferencia  en el  orden de  ejecución del  mismo.  Cuando el  operador  incremento (o
decremento) precede al  operando, C primero realiza el incremento (o decremento), y
después usa el valor del operando, realizándose la operación al contrario si el operador
poscede al operando. Así, considérense el siguiente código de un programa:
int var1=10,var2;
var2=++var1; /* Pone 11 en var2, pues primero incrementa var1,*/
             /* y luego asigna su valor a var2 */
Mientras que el siguiente código funciona de forma distinta:
int var1=10,var2;
var2=var1++; /* Pone 10 en var2, pues primero asigna su valor */
             /* a var2, y luego incrementa var1 */El lenguaje de programación C
3.2 - Operadores relaciónales y lógicos.
Los  operadores  relaciónales  y  lógicos  de  C,  ordenados  de  mayor  a  menor
prioridad son:
Operador Operador Operador Operador
! Not
> Mayor
que
>= Mayor o
igual
que
< Menor
que
<= Menor
o  igual
que
== Igual != No igual
&& And
|| Or
Tabla 3.2.1: Operadores relacionales y lógicos en C.
Los operadores relaciónales y lógicos tiene menor prioridad que los operadores
aritméticos antes descritos, así , escribir 10>3+9 es equivalente a escribir 10>(3+9).
3.3 - Operador asignación.
El lenguaje C, a diferencia de otros lenguajes tales como Pascal, no diferencia
la  asignación de cualquier  otro operador  del  lenguaje.  Para  C,  la  asignación es un
operador, el llamado operador asignación (=), el cual  posee la prioridad más baja de
todos los operadores. Es por ello que en C podemos escribir expresiones del tipo:
if ((c=a*b)<0) /* if es la comprobación condicional de C, que */
               /* se vera con posterioridad */
Esta expresión asigna a la variable c el valor de a*b y devuelve su valor para
compararlo con el valor constante  0. Los paréntesis son necesarios pues el operador
asignación tiene la prioridad mas baja de todos los operadores.
3.4 - Operador sizeof.
El operador sizeof es un operador en tiempo de compilación. El operador sizeof
devuelve el tamaño de una variable o tipo de dato durante la compilación, no durante la
ejecución del programa. Veamos algunos ejemplos:
sizeof(int) devuelve el valor 2 en los sistemas operativos de 16 bits y 4 en los de
32 bits.
Si tenemos char a[20],  sizeof(a) devuelve el valor 20, y si tenemos float a[6],
sizeof(a) devuelve el valor 24 (4*6).
3.5 - Operadores sobre bits.El lenguaje de programación C
El lenguaje C posee operadores que actúan a nivel de bits sobre los datos, estos
operadores son:
Operador Nombre Operación
∼ Not Complemento a uno (NOT)
<< Desplazamiento izquierda Desplazamiento izquierda
>> Desplazamiento derecha Desplazamiento derecha
& And Y
^ Xor O exclusivo (XOR)
| Or O
Tabla 3.5.1: Operadores sobre bits en C.
Los operadores  &,  | y ^ actúan sobre dos operandos, mientras que ∼ ,<< y >>
actúan sobre un solo operando. Veamos su actuación sobre dos valores cualquiera:
Operador Operando 1 Operando 2 Resultado
∼ 0xB2 0x4D
<<3 0xB2 0x90
>>2 0xB2 0x2C
& 0xB2 0x79 0x30
^ 0xB2 0x79 0xCB
| 0xB2 0x79 0xFB
Tabla 3.5.2: Ejemplos de operaciones sobre bits en C.
Donde los números que acompañan a los operadores  << y >> indican cuantas
posiciones se desplaza el operando. La prioridad de los operadores sobre bits es:
• El operador ∼ tiene la misma prioridad que los operadores ++ y .--.
• Los  operadores  << y  >> tienen  la  prioridad  situada  entre  los  operadores
aritméticos y los operadores relaciónales y lógicos.
• Los  operadores  &,  ^  y  | tienen  la  prioridad  situada  entre  los  operadores
relaciónales y los operadores lógicos (&& y ||).
3.6 - El operador ?.
El operador  ? se usa para reemplazar  las sentencias  if/else (que veremos con
posterioridad) de formato general:
if (condición)
   expresión;
else
   expresión;
Donde expresión debe ser una expresión sencilla y no otra sentencia de C.
El operador ? es un operador ternario cuyo formato general es:El lenguaje de programación C
Exp1 ? Exp2 : Exp3;
Donde Exp1,  Exp2 y Exp3 son expresiones. El operador  ? evalúa la expresión
Exp1,  si  es  cierta  se  evalúa  Exp2 y  si  es  falsa  se  evalúa  Exp3.  Veamos  algunos
ejemplos:
int x,y;
y=(x>10) ? 100 : 200;
Asignara el valor 100 a y si x es mayor de 10, y el valor 200 en caso contrario.
int t;
(t) ? f1(t)+f2() : printf(“t vale cero”);
Ejecutara las funciones f1() y f2() si t es distinto de cero, y la función printf si t
vale cero.

No hay comentarios.:

Publicar un comentario

!!Clikeaka al espacio cideral!!

THEMRFRIKI S.A. Con tecnología de Blogger.

About