Está en la página 1de 7

31/1/2017

ProgramacinenCCaptulo3

CAPITULO3:OPERADORES

1.INTRODUCCION
Sianalizamoslasentenciasiguiente:
var1=var2+var3
estamosdicindolealprograma,pormediodeloperador+,quecomputelasumadelvalordedos
variables,yunavezrealizadostoasigneelresultadoaotravariablevar1.Estaltimaoperacin
(asignacin)seindicamedianteotrooperador,elsigno=.
EllenguajeCtieneunaampliavariedaddeoperadores,ytodoselloscaendentrode6categorias,a
saber:aritmticos,relacionales,lgicos,incrementoydecremento,manejodebitsyasignacion.
Todosellosseirndescribiendoenlosprrafossubsiguientes.
2.OPERADORESARITMETICOS
Talcomoeradeesperarselosoperadoresaritmticos,mostradosenlaTABLA4,comprendenlas
cuatrooperacionesbasicas,suma,resta,multiplicacinydivisin,conunagregado,eloperador
mdulo.
TABLA4OPERADORESARITMETICOS
SIMBOLO
+

*
/
%

DESCRIPCION
SUMA
RESTA
MULTIPLICACION
DIVISION
MODULO
SIGNO

EJEMPLO
a+b
ab
a*b
a/b
a%b
a

ORDENDEEVALUACION
3
3
2
2
2
2

Eloperadormdulo(%)seutilizaparacalcularelrestodelcocienteentredosENTEROS,yNO
puedeseraplicadoavariablesdeltipofloatdouble.
Sibienlaprecedencia(ordenenelquesonejecutadoslosoperadores)seanalizarmsadelante,
enestecaptulo,podemosadelantaralgosobreelordenqueserealizanlasoperacionesaritmticas.
EnlaTABLA4,ltimacolumna,sedaelordendeevaluacindeunoperadordado.Cuantomsbajo
seadichonmeromayorsersuprioridaddeejecucin.Sienunaoperacinexistenvarios
operadores,primeroseevaluarnlosdemultiplicacin,divisinymduloyluegolosdesumay
resta.Laprecedenciadelostresprimeroseslamisma,porloquesihayvariosdeellos,se
comenzaraevaluaraaquelquequedemsalaizquierda.Lomismoocurreconlasumaylaresta.
Paraevitarerroresenlosclculossepuedenusarparntesis,sinlimitacindeanidamiento,losque
fuerzanarealizarprimerolasoperacionesincluidasenellos.Losparntesisnodisminuyenla
velocidadalaqueseejecutaelprogramasinoquetansloobliganalcompiladorarealizarlas
operacionesenunordendadodado,porloqueesunabuenacostumbreutilizarlosampliamente.
Losparntesistienenunordendeprecedencia0,esdecirqueantesquenadaseevalaloqueellos
encierran.
Sepuedeobservarquenoexistenoperadoresdepotenciacin,radicacin,logaritmacin,etc,yaque
enellenguajeCtodasestasoperaciones(ymuchasotras)serealizanpormediodellamadasa
Funciones.
ElltimodelosoperadoresaritmticoseseldeSIGNO.Nodebeconfundirseloconelderesta,ya
queesteesunoperadorunitarioqueoperasobreunanicavariablecambiandoelsignodesu
http://www.pablin.com.ar/computer/cursos/c2/manc3.htm

1/7

31/1/2017

ProgramacinenCCaptulo3

contenidonmerico.Obviamentenoexisteeloperador+unitario,yaquesuoperacinseraDEJAR
elsignodelavariable,loqueseconsiguesimplementeporomisindelsigno.
3.OPERADORESRELACIONALES
Todaslasoperacionesrelacionalesdanslodosposiblesresultados:VERDADEROFALSO.Enel
lenguajeC,Falsoquedarepresentadoporunvalorenteronulo(cero)yVerdaderoporcualquier
nmerodistintodeceroEnlaTABLA5seencuentraladescripcindelosmismos.
TABLA5OPERADORESRELACIONALES
SIMBOLO DESCRIPCION
<
menorque
>
mayorque

EJEMPLO ORDENDEEVALUACION
(a<b)
5
(a>b)
5

<=
>=

menoroigualque (a<=b) 5
mayoroigualque (a>>=b) 5

==
!=

igualque
distintoque

(a==b)
(a!=b)

6
6

UnodeloserroresmscomunesesconfundireloperadorrelacionalIGUALQUE(==)conelde
asignacionIGUALA(=).Laexpresina=bcopiaelvalordebena,mientrasquea==bretornaun
cero,siaesdistintodebunnmerodistintodecerosisoniguales.
Losoperadoresrelacionalestienemenorprecedenciaquelosaritmticos,deformaquea<b+cse
interpretacomoa<(b+c),peroaunqueseasuperfluorecomendamoselusodeparntesisafinde
aumentarlalegilibilidaddeltexto.
Cuandosecomparandosvariablestipocharelresultadodelaoperacindependerdela
comparacindelosvaloresASCIIdeloscaracterescontenidosenellas.Asielcaractera(ASCII97)
sermayorqueelA(ASCII65)queel9(ASCII57).
4.OPERADORESLOGICOS
HaytresoperadoresquerealizanlasconectividadeslgicasY(AND),O(OR)yNEGACION(NOT)y
estndescriptosenlaTABLA6.
TABLA6OPERADORESLOGICOS
SIMBOLO DESCRIPCION
&&
Y(AND)

EJEMPLO
ORDENDEEVALUACION
(a>b)&&(c<d) 10

||

O(OR)

(a>b)||(c<d)

NEGACION(NOT) !(a>b)

11
1

LosresultadosdelaoperacioneslgicassiempreadoptanlosvaloresCIERTOFALSO.La
evaluacindelasoperacioneslgicasserealizadeizquierdaaderechayseinterrumpecuandose
haaseguradoelresultado.
EloperadorNEGACIONinvierteelsentidolgicodelasoperaciones,asser
!(a>b)equivalea(a<b)
!(a==b)""(a!=b)
etc.

http://www.pablin.com.ar/computer/cursos/c2/manc3.htm

2/7

31/1/2017

ProgramacinenCCaptulo3

Enalgunasoperacionessueleusrselodeunamaneraqueseprestaaconfusin,porejemplo:(!i)
dondeiesunentero.EstodarunresultadoCIERTOsiitieneunvalor0yunresultadoFALSOsii
esdistintodecero.
5.OPERADORESDEINCREMENTOYDECREMENTO
LosoperadoresdeincrementoydecrementosonslodosyestndescriptosenlaTABLA7
TABLA7OPERADORESDEINCREMENTOYDECREMENTO
SIMBOLO DESCRIPCION EJEMPLO ORDENDEEVALUACION
++

incremento

++ii++

decremento

ii

Paravisualizarrapidamentelafuncindelosoperadoresantedichos,digamosquelassentencias:
a=a+1
a++
tienenunaaccinidntica,delamismaformaque
a=a1
a
esdecirincrementaydecrementaalavariableenunaunidad
Sibienestosoperadoressesuelenemplearconvariablesint,puedenserusadossinproblemascon
cualquierotrotipodevariable.Assiaesunfloatdevalor1.05,luegodehacera++adoptarel
valorde2.05ydelamismamanerasibesunavariabledeltipocharquecontieneelcaracter'C',
luegodehacerbsuvalorser'B'.
Sibienlassentencias
i++
++i
sonabsolutamenteequivalentes,enlamayoriadeloscasoslaubicacindelosoperadores
incrementodecrementoindicaCUANDOserealizaste.
Veamoselsiguienteejemplo:
inti=1,j,k;
j=i++;
k=++i;

acjesigualadoalvalordeiyPOSTERIORMENTEalaasignaciniesincrementadoporloquej
seriguala1eiiguala2,luegodeejecutadalasentencia.Enlasiguienteinstruccinise
incrementaANTESdeefectuarselaasignaciontomandoelvalorde3,lqueluegoescopiadoenk.
6.OPERADORESDEASIGNACION
EnprincipiopuederesultaralgofutilgastarpapelendescribiraloperadorIGUALA(=),sinembargo
esnecesarioremarcarciertascaractersticasdelmismo.
Anteriormentedefinimosaunaasignacincomolacopiadelresultadodeunaexpresin(rvalue)
sobreotra(lvalue),estoimplicaquedicholvaluedebetenerLUGAR(esdecirposeerunaposicin
dememoria)paraalojardichovalor.
Esporlotantovlidoescribir
http://www.pablin.com.ar/computer/cursos/c2/manc3.htm

3/7

31/1/2017

ProgramacinenCCaptulo3

a=17
peronoesaceptado,encambio
17=a/*incorrecto*/
yaquelaconstantenumrica17noposeeunaubicacindememoriadondealojaralvalordea.
Aunqueparezcaunpocoextraoalprincipiolasasignaciones,aligualquelasotrasoperaciones,
danunresultadoquepuedeasignarseasuvezaotraexpresin.
Delamismaformaque(a+b)esevaluadaysuresultadopuedocopiarloenotravariable:c=(a+b)
unaasignacin(a=b)dacomoresultadoelvalordeb,porloqueeslcitoescribir
c=(a=b)
Debidoaquelasasignacionesseevalandederechaaizquierda,losparntesissonsuperfluos,y
podrescribirseentonces:
c=a=b=17
conloquelastresvariablesresultarnigualesalvalordelacontante.
Elhechodequeestasoperacionesserealicendederechaaizquierdatambinpermiterealizar
instruccionesdeltipo:
a=a+17
significandoestoquealvalorqueTENIAanteriormentea,selesumalaconstanteyLUEGOse
copiaelresultadoenlavariable.
Comoesteltimotipodeoperacionesespordemscomn,existeenCunpseudocdigo,conelfn
deabreviarlas.
Asiunaoperacinartmeticaodebitcualquiera(simbolizadaporOP)
a=(a)OP(b)
puedeescribirseenformaabreviadacomo:
aOP=b
Porejemplo
a+=b;/*equivale:a=a+b*/
a=b;/*equivale:a=ab*/
a*=b;/*equivale:a=a*b*/
a/=b;/*equivale:a=a/b*/
a%=b;/*equivale:a=a%b*/

Ntesequeelpseudooperadordebeescribirseconlosdossmbolosseguidos,porejemplo+=,yno
seraceptado+(espacio)=.
LosoperadoresdeasignacinestanresumidosenlaTABLA8.
TABLA8OPERADORESDEASIGNACION
SIMBOLO DESCRIPCION EJEMPLO

ORDENDEEVALUACION

iguala

a=b

13

op=

pseudocodigo

a+=b

13

=?:

asig.condicional a=(c>b)?d:e 12

http://www.pablin.com.ar/computer/cursos/c2/manc3.htm

4/7

31/1/2017

ProgramacinenCCaptulo3

VemosdelatablaanteriorqueapareceotrooperadordenominadoASIGNACIONCONDICIONAL.El
significadodelmismoeselsiguiente:
lvalue=(operacinrelacionallogica)?(rvalue1):(rvalue2)
deacuerdoalresultadodelaoperacincondicionalseasignaralvalueelvalordervalue12.Si
aquellaesCIERTAserlvalue=rvalue1ysidieraFALSO,lvalue=rvalue2.
Porejemplo,siquisiramosasignaracelmenordelosvaloresab,bastarconescribir:
c=(a<b)?a:b
7.OPERADORESDEMANEJODEBITS
EstosoperadoresmuestranunadelasarmasmspotentesdellenguajeC,ladepodermanipulear
INTERNAMENTE,esdecirbitabit,lasvariables.
Debemosanticiparqueestosoperadoressloseaplicanavariablesdeltipochar,short,intylongy
NOpuedenserusadosconfloatdouble,
Sabemosquelascomputadorasguardanlosdatosorganizadosenformadigital,enbytes,formado
pornmerosbinariosde8bitsycomosevianteriormentecuandoseanalizeltamaodelas
variables,uncharocuparunbytede8bits,mientrasquelosshorteintseformancondosbytes(
16bits)yloslongporcuatrobytes(32bits).
Paraelmanejodedichosbits,contamosconlosoperadoresdescriptosenlaTABLA9.
TABLA9OPERADORESDEMANEJODEBITS
SIMBOLO DESCRIPCION

EJEMPLO ORDENDEEVAL.

&

YAND(bitabit)

a&b

OORINCLUSIVA

a|b

^
<<

OOREXCLUSIVA
ROTACIONALAIZQUIER

a^b
a<<b

8
4

>>

ROTACIONALADERECHA a>>b

COMPLEMENTOAUNO

~a

Describiremosmedianteunospocosejemploslaoperatoriademanejodebits.
AnalicemosprimerocomofuncionaeloperadorY,tambinllamadoBITWISEAND,lasreglasparala
operacinsonlasdadasenlaTABLA10.

TABLA10REGLASPARALAOPERACIONY(BITWISEAND)
bita & bitb = bitc
0
0

&0
&1

= 0
= 0

&0

= 0

&1

= 1

Sisuponemostenerdosvariablesdeltipochar,unadeelladevalor85(hex.55),otradevalor71
(hex.47)yrealizamoselANDanivelbitsdeellas,obtendremos:

http://www.pablin.com.ar/computer/cursos/c2/manc3.htm

5/7

31/1/2017

ProgramacinenCCaptulo3

bits decimal
hexadecimal

01010101 85
55
&
&
&

01000111 71
47

01000101 69
45

Ntesequelaoperacinesdeltipolgicoentrebits,porloquelosresultadosnumricostienenpoco
ningnsignificadoyslosehanpuestoconelfindeejemplificar.
DelamismamaneraparalaoperacionOINCLUSIVA,cuyasreglassedanenlaTABLA11,ser:

TABLA11REGLASPARALAOPERACIONOINCLUSIVA(BITWISEOR)
bita | bitb = bitc
0

Paralasmismasvariablesanterioresobtendremos:
010101118757
AnalizandoahoralaOEXCLUSIVA(EXOR)tendremos:
TABLA12REGLASPARALAOPERACIONOEXCLUSIVA(EXOR)
bita ^ bitb = bitc
0

^ 0

= 0

0
1

^ 1
^ 0

= 1
= 1

^ 1

= 0

Paralasmismasvariablesanterioresobtendremos:
000100101812
Veamosahoralasoperacionesdedesplazamiento,lasentencia
c=a<<b
implicaasignarleac,elvalordeaconsusbitscorridosalaizquierdaenblugares,losbitsquevan
"saliendo"porlaizquierda,sedesechanylosbitsquevanquedandolibresaladerechase
completanconcero.
Seprocededelamismamaneraparaelcorrimientoaladerecha>>.
EloperadorCOMPLEMENTOAUNOesdeltipounitario,esdecirquerealizaunaoperacinsobre
unanicavariable,ysuefectoesdaralavariableunvalorigualarestarde(1)elvalorquetraa.
Quizsesmsvisibledecirqueesteoperadorcambialosbitsen1delavariableen0yviceversa.
TABLA13PRECEDENCIADELOSOPERADORES

http://www.pablin.com.ar/computer/cursos/c2/manc3.htm

6/7

31/1/2017

ProgramacinenCCaptulo3

PRECEDENCIA OPERADORES

ASOCIATIVIDAD

()[]>.

izq.aderecha

sizeof(tipo)!~++signo*& derechaaizq.

*/%

izq.aderecha

izq.aderecha

>

izq.aderecha

>=

izq.aderecha

==!=

izq.aderecha

&

izq.aderecha

izq.aderecha

izq.aderecha

10

&&

izq.aderecha

11
12

||
?:

izq.aderecha
derechaaizq.

13

=+==*=etc

derechaaizq.

NOTA:enelrenglndelosoperadoresdeprecedenciacerohemosagregadoubicndolosala
derechadelmismoparadiferenciarlos,tresoperadores,[]>>y.quesernanalizadosms
adelante,delamismamaneraenelrenglnsiguientehemoscolocadoalfinaladosoperadores:*y
&yaqueaunquecoincidenensmboloconlosdePRODUCTOyANDANIVELBITS,sonOTROtipo
deoperadoresquesedescribirnencaptulossucesivos.Enesemismorenglnsehaconsignado
comoSIGNOalunitario.

CAPITULOANTERIORDELCURSO
PROXIMOCAPITULODELCURSO

http://www.pablin.com.ar/computer/cursos/c2/manc3.htm

7/7