Concepto de operador en C
“Un operador es un elemento de programa que se aplica a uno o varios operandos en una expresión o instrucción. Los operadores que requieren un operando, como el operador de incremento se conocen como operadores unarios. Los operadores que requieren dos operandos, como los operadores aritméticos (+,-,*,/) se conocen como operadores binarios. Un operador, el operador condicional (?:), utiliza tres operandos y es el único operador ternario de C.
Existen 6 tipos de operadores según su función, que son aritméticos, relacionales, de asignación,
lógicos, de dirección y de manejo de Bits.
Operadores aritméticos
Operadores aritméticos
Operación | Acción |
x++ | Postincremento |
++x | Preincremento |
x-- | Predecremento |
+x | + Unario |
-x | - Unario |
x*y | Multiplicación |
x/y | División |
x%y | Módulo |
x+y | Suma |
x-y | Resta |
Los operadores incremento y decremento proporcionan una forma breve de sumar o restar 1 a una variable. Usados como prefijo, como ++i, el valor de la variable se incrementa (decrementa) antes de que la variable sea usada; usada como sufijo, como i++ el valor de la variable se incrementa (decrementa) despues de su utilizacion.
Ejemplo:
Hacer una calculadora básica en C
#includeint main() { int x,y; /*Declaración de variables a utilizar*/ printf("\nCalculadorea en C\n\n1.-Suma"); /*Creación del menú*/ printf("\n2.-Resta"); printf("\n3.-Multiplicacion"); printf("\n4.-Division"); printf("\n\nSeleccion una opcion: "); scanf("%d",&x); /*Se guardará la opción en la variable x*/ switch(x){ /*Se usará switch para realizar cada operación*/ case 1: printf("\nIngresa un numero: "); scanf("%d",&x); /*para no declarar más variables se sobreescribirá x*/ printf("\nIngresa otro numero: "); scanf("%d",&y); printf("\nla suma de %d + %d = %d",x,y,x+y); /*Operador suma*/ break; case 2: printf("\nIngresa un numero: "); scanf("%d",&x); printf("\nIngresa otro numero: "); scanf("%d",&y); printf("\nla resta de %d - %d = %d",x,y,x-y); /*Operador resta*/ break; case 3: printf("\nIngresa un numero: "); scanf("%d",&x); printf("\nIngresa otro numero: "); scanf("%d",&y); printf("\nla multiplicacion de %d * %d = %d",x,y,x*y); /*Operador multiplicacion*/ break; case 4: printf("\nIngresa un numero: "); scanf("%d",&x); printf("\nIngresa otro numero: "); scanf("%d",&y); printf("\nla devisión de %d / %d = %d",x,y,x/y); /*Operador Division*/ printf(" y el residuo es %d",x%y);/*Operador Módulo*/ break; } return 0; }
Los operadores relacionales comparan sus operandos y devuelven el valor 1 si la relacion es cierta y 0 si no lo es. Son:
Operador | Propósito |
< | Menor que |
<= | Menor o igual que |
> | Mayor que |
>= | Mayor o igual que |
== | Igual que |
!= | Direrente de |
Hacer un programam en C que pida dos número, los compare y diga si son iguales, diferentes y cual es el mayor.
#includeint main() { int x,y; printf("\nIngresa un numero "); scanf("%d",&x); printf("\nIngresa otro numero: "); scanf("%d",&y); if(x==y) printf("\n%d y %d son iguales",x,y); else if(x!=y){ printf("\n%d y %d no son iguales",x,y); if(x>y) printf("\n\n%d es mayor que %d",x,y); if(x&l;ty) printf("\n\n%d es menor que %d",x,y); } return 0; }
Operador | Accion |
! | Negación lógica |
&& | Y lógico |
|| | O lógico |
valor = (expresion1 && expresion2)
En este caso si expresion1 y expresion2 son verdaderas, el valor resulta verdadero (true).
Si alguna o ambas de las expresiones son falsas, el valor resulta en falso (false).
valor = (expresion1 || expresion2)
En este caso si ambas expresiones son verdaderas, el valor resulta verdadero.
Si una de las expresiones es verdadera y la otra falsa, el valor resulta verdadero.
Si las dos expresiones son falsas, el valor resulta falso.
valor = (!expresion1)
En este caso si la expresión es verdadera, el valor resulta falso.
Si la expresión es falsa, el valor resulta falso.
Ejemplo:
#includeint main() { int x; printf("\nIngresa tu edad: "); scanf("%d",&x); /*El valor ingresados guardará en x*/ if(x>=12 && x<=18) /*El operador && nos dice que si eres mayor o igual a 12 y menor o igual a 18 eres un adolescente, si alguna de las 2 condiciones no se cumple, entonces no se jecutará la intrucción*/ printf("\nEres un adolescente\n"); else printf("\Es usted un adulto"); return 0; }
#includeint main() { int x; printf("\nIngresa tu edad: "); scanf("%d",&x); if(!(x>17)) /*Niega por completo la expresión*/ printf("\nAun no eres un adulto"); else printf("\nEs usted un adulto"); return 0; }
Los valores logicos en C estan representados por enteros: 0 es falso y un valor no cero es verdadero. Por ejemplo, el operador ! toma un operando numerico y devuelve int 1 para un operando cero y int 0 En el lenguaje caso contrario. El operador && devuelve 1 si los dos operandos son valores no cero y 0 en el lenguaje cualquier otro caso. El operador || devuelve 1 si cualquiera de los dos operandos es no cero y 0 en otro caso. Los operadores && y || evaluan primero el operando de su izquierda, y no evaluan el operando de la derecha si no es necesario.
Por ejemplo, si y es cero, la expresion y && x/y da 0 y no realiza la division por 0.
Precedencia de operadores.
La interpretación de cualquier expresión en el lenguaje C esta determinada por la precedencia y asociatividad de los operadores en dicha expresión. Cada operador tiene una precedencia y los operadores en una expresión se evalúan en orden de mayor a menor precedencia. La evaluación de operadores con la misma precedencia viene determinada por su asociatividad. Y, al igual que en matemáticas, los paréntesis anulan las reglas de precedencia.
En la siguiente tabla se listan los operadores en el lenguaje C, su precedencia y su asociatividad. Los operadores se listan en orden de prioridad decreciente (los situados mas arriba tienen mayor prioridad). Los operadores en la misma linea horizontal tienen la misma precedencia.
Operador | Propósito | Asociatividad |
:: | Scope (unario) | De derecha a izquierda |
:: | Scope (binario) | De izquierda a derecha |
-> . | Seleccion de miembros | De izquierda a derecha |
[] | indices | De izquierda a derecha |
() | Llamada a funcion | De izquierda a derecha |
++ | Postincremento | De izquierda a derecha |
-- | Postdecremento | De izquierda a derecha |
sizeof | Tamaño de un objeto | De derecha a izquierda |
++ | Preincremento | De derecha a izquierda |
-- | Predecremento | De derecha a izquierda |
* & + - ! ~ | Operadores unarios | De derecha a izquierda |
new | Crea un objeto | De derecha a izquierda |
delete | Borra un objeto | De derecha a izquierda |
() | Conversion de tipo (type cast) | De derecha a izquierda |
->* .* | Puntero a un miembro | De izquierda a derecha |
* / % | Operadores multiplicativos | De izquierda a derecha |
+ - | Operadores aditivos | De izquierda a derecha |
<< >> | Operadores bitwise | De izquierda a derecha |
< > <= >= | Operadores de relacion | De izquierda a derecha |
== != | Operadores de igualdad | De izquierda a derecha |
& | Y bitwise | De izquierda a derecha |
^ | bitwise O exclusivo | De izquierda a derecha |
| | bitwise O inclusivo | De izquierda a derecha |
&& | Y logico | De izquierda a derecha |
|| | O logico | De izquierda a derecha |
?: | Operador condicional | De derecha a izquierda |
= *= /= += -= >*gt;= &= ^= |= %= <<= |
Operadores de asignacion | De derecha a izquierda |
, | Operador coma | De derecha a izquierda |
En el lenguaje C las reglas de precedencia y asociatividad de operadores corresponden a las reglas matemáticas. Sin embargo, esto no funcionara, por ejemplo, con los operadores bitwise. Para tales operadores, se debe utilizar la tabla anterior, o bien parentesis.
0 comentarios:
Publicar un comentario