Vous êtes sur la page 1sur 18

15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

C(linguagemdeprogramao)
Origem:Wikipdia,aenciclopdialivre.

C(/si/,comonaletrac)umdeusogeral,imperativo
computadorlinguagemdeprogramao,apoiando C
programaoestruturada,escopodevariveislexicale
recurso,enquantoumsistemadetipoestticoimpedeque
muitasoperaesnointencionais.Pordesign,Cfornece
construesquemapeiamdeformaeficienteparatpicas
instruesdemquinae,portanto,temencontradoutilizao
duradouraemaplicaesqueanteriormentetinhasido
codificadasemlinguagemassembly,incluindosistemas
operacionais,bemcomovriosaplicativosdesoftwarepara
computadoresquevodesdesupercomputadorespara ALinguagemdeProgramaoC [1](muitasvezes
sistemasembarcados. referidacomo"K&R"),olivroseminalsobreC
CfoioriginalmentedesenvolvidoporDennisRitchieentre Paradigma Imperativo(processual),
1969e1973,noBellLabs,[5]eusadoparare estruturado
implementaodoUnixsistemaoperacional.[6]Desdeento Projetadopor DennisRitchie
setornouumadaslinguagensdeprogramaomaisusadas Desenvolvedor DennisRitchieedeBellLabs
detodosostempos,[7][8]comCcompiladoresdevrios (criadores)ANSIX3J11(ANSIC
fornecedoresdisponveisparaamaioriadosexistentes )ISO/IECJTC1/SC22/WG14
arquiteturasdecomputadoresesistemasoperacionais.Cfoi
(ISOC)
padronizadapeloAmericanNationalStandardsInstitute
(ANSI)desde1989(verANSIC)e,posteriormente,pela Primeiro 1972 [2]
OrganizaoInternacionaldeNormalizao(ISO). apareceu

Versoestvel C11/dezembro2011
Adisciplina Esttica,fraco,manifesto,
Contedo dedigitao nominal

1 projeto OS Plataformacruzada
2 Visogeral Extensesde .c,.h
2.1 Relaescomoutraslnguas nomede
3 Histria
arquivo
3.1 desenvolvimentosadiantados
3.2 K&RC grandesimplementaes
3.3 ANSICeISOC K&R,GCC,Clang,IntelC,MicrosoftVisualC
3.4 C99
3,5 C11 ++,PellesC,WatcomC
3.6 EmbutidoC Dialetos
4 Sintaxe
Cyclone,UnifiedParallelC,SplitC,cilk,C*
4.1 Conjuntodecaracteres
4.2 Aspalavrasreservadas Influenciadopor
4.3 Operadores
5 "Ol,mundo"exemplo B(BCPL,CPL),ALGOL68, [3]Assembleia,
6 tiposdedados PL/I,Fortran
6.1 Ponteiros Influenciado
6.2 Arrays
6.3 permutabilidadematrizponteiro Numerosas:AMPL,AWK,csh,C++,C,C#
7 Gerenciamentodememria ,ObjectiveC,BITC,D,Go,Java,JavaScript,
8 Bibliotecas Julia,Limbo,LPC,Perl,PHP,Pike,
9 Ferramentasdeidioma Processing,Python,Rust,Seed7,vala,Verilog
10 Usos
(HDL) [4]
11 idiomasrelacionados
12 Vertambm
https://en.wikipedia.org/wiki/C_(programming_language) 1/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

12 Vertambm ProgramaoCemWikibooks
13 Notas
14 Referncias
15 Fontes
16 Leituraadicional
17 Ligaesexternas

Projeto
Cumimperativoprocessualidioma.Elefoiprojetadoparasercompiladousandoumrelativamentesimples
compilador,paraforneceracessodebaixonvelparaamemria,paraproporcionarconstruesdelinguagem
quemapeiamdeformaeficienteparainstruesdemquina,eparaexigiromnimodesuportedetempode
execuo.Portanto,Ceratilparamuitasaplicaesqueanteriormentetinhasidocodificadasemlinguagem
assembly,porexemplo,naprogramaodosistema.

Apesardassuascapacidadesdebaixonvel,alinguagemfoiprojetadaparaincentivarmultiplataformade
programao.UmcompatvelcomospadreseportablyprogramaCescritopodesercompiladoparauma
amplavariedadedeplataformasdecomputadoresesistemasoperacionaiscompoucasmudanasemseu
cdigofonte.Alinguagemtornousedisponvelemumavastagamadeplataformas,desdeincorporadas
microcontroladoresparasupercomputadores.

Visogeral
ComoamaioriadaslinguagensimperativasnoALGOLtradio,Ctemfacilidadesparaprogramao
estruturadaepermitequeoescopodevariveislexicalerecurso,enquantoumaestticatipodesistema
impedequemuitasoperaesnointencionais.EmC,todoocdigoexecutvelestcontidodentrodesub
rotinas,quesochamadas"funes"(emboranonosentidoestritodaprogramaofuncional).Parmetrosde
funososemprepassadosporvalor.PassagemporrefernciasimuladaemC,passandoexplicitamente
ponteirovalores.TextoCfontedoprogramalivredeformato,usandoopontoevrgulacomoumadeclarao
terminatorechavesparaagruparblocosdedeclaraes.

AlinguagemCtambmapresentaasseguintescaractersticas:

Humpequenonmero,fixadepalavraschave,incluindoumconjuntocompletodefluxodecontrole
primitivos:for,if/else,while,switch,edo/while.Nomesdefinidospelousurionosodistinguidos
depalavraschaveporqualquertipodesigilo.
Humgrandenmerodeoperadoresaritmticoselgicos,taiscomo+,+=,++,&,~,etc.
Maisdoqueumatarefapodeserrealizadaemumanicainstruo.
Osvaloresderetornodafunopodemserignoradosquandonosonecessrios.
Adigitaoesttica,masfracamenteaplicadas:todososdadostemumtipo,masconverses
implcitaspodeserrealizada.
Declaraosintaxecontextodeusoimita.Cnotempalavrachave"definir"Emvezdisso,uma
declaraocomeandocomonomedeumtipotomadacomoumadeclarao.Noexistepalavrachave
"funo"Emvezdisso,umafunoindicadapelosparntesesdeumalistadeargumentos.
Definidospelousurio(typedeftipos)ecompostossopossveis.
Heterogneostiposdedadosagregados(struct)permitemqueoselementosdedados
relacionadosaseracessadoeatribudocomoumaunidade.
Matrizindexaoumanotaosecundrio,definidoemtermosdearitmticadeponteiro.Ao
contrriodasestruturas,asmatrizesnosoobjetosdeprimeiraclasseElesnopodemser
atribudosoucomparadosusandooperadoresincorporadosnicos.Noexistepalavrachave
"matriz",emusooudefinioEmvezdisso,osparntesisrectosindicammatrizes
sintacticamente,porexemplomonth[11].
Tiposenumeradossopossveiscomaenumpalavrachave.Elesnosomarcados,esolivremente
interconvertiblescomnmerosinteiros.

https://en.wikipedia.org/wiki/C_(programming_language) 2/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

Cordasnosoumtipodedadosseparada,massoconvencionalmenteimplementadoscomo
terminaonulaarraysdecaracteres.
Acessodebaixonvelamemriadocomputadorpossvelatravsdaconversodeendereosde
mquinaparadigitadasponteiros.
Procedimentos(subrotinasnoretornamvalores)soumcasoespecialdafuno,comumtipode
retornonotipadovoid.
Asfunesnopodemserdefinidasnombitolexicaldeoutrasfunes.
Funoedadosponteirospermitiradhocpolimorfismoemtempodeexecuo.
Umprprocessadorexecutamacrodefinio,cdigofonteinclusodearquivoecompilao
condicional.
Humaformabsicademodularidade:arquivospodemsercompiladosseparadamenteeligadasem
conjunto,comcontrolesobrequaisfunesedadosobjetossovisveisparaoutrosarquivosviastatice
externatributos.
Funcionalidadecomplexa,comoI/O,cadeiademanipulaoefunesmatemticasso
consistentementedelegadaarotinasdebiblioteca.

EnquantoCnoincluialgumascaractersticasencontradasemoutraslinguagens,taiscomoorientaoa
objetosoucoletadelixo,taiscaractersticaspodemserimplementadasouemuladoemC,muitasvezespor
meiodebibliotecasexternas(porexemplo,ocoletordelixoBoehmouosistemadeobjetoGLib).

Relaescomoutrosidiomas

MuitaslnguasposterioresteremprestadodirectaouindirectamentedeC,incluindoC++,D,Go,Rust,Java
,JavaScript,Limbo,LPC,C#,ObjectiveC,Perl,PHP,Python,Swift,Verilog(descriodehardware
idioma),[4]edoUnixshellC.Estaslnguastmatradomuitasdassuasestruturasdecontroleeoutros
recursosbsicosdeC.Amaioriadeles(comPythonaexceomaisdramtica)tambmsomuito
sintaticamentesemelhanteaC,emgeral,eelestendemacombinaraexpressoeafirmaoreconhecvel
sintaxeCcomsistemassubjacentestipo,modelosdedadosesemnticaquepodeserradicalmentediferente.

Histria
Desenvolvimentosincio

AorigemdoCestintimamenteligadaaodesenvolvimentodoUnix
sistemaoperacional,originalmenteimplementadoemlinguagem
assemblyemumPDP7porRitchieeThompson,incorporandovrias
idiasdoscolegas.Eventualmente,elesdecidiramportarosistema
operacionalparaumPDP11.AversoPDP11originaldoUnixfoi
desenvolvidaemlinguagemassembly.Osdesenvolvedoresestavam
considerandoreescreverosistemautilizandoalinguagemB,verso
simplificadadeThompsondeBCPL.[9]Noentantoaincapacidadede
BparatirarpartidodealgumasdascaractersticasdoPDP11, KenThompson(esquerda)com
nomeadamentebytedeendereamento,levouaC.OnomeCfoi DennisRitchie(direita,oinventor
escolhidosimplesmentecomooseguinte,depoisB.[10] dalinguagemdeprogramaoC)

OdesenvolvimentodeCcomeouem1972nosistemaPDP11Unix
[11]eapareceupelaprimeiraveznaverso2Unix.[12]Alnguanofoiinicialmenteprojetadocom
portabilidadeemmente,maslogocorreuemdiferentesplataformas,bemcomo:umcompiladorparaa
Honeywell6000foiescritonoprimeiroanodahistriadaC,enquantoumIBMSystem/370portoseguidoem
breve.[1][11]

Tambmem1972,umagrandepartedoUnixfoireescritoemC.[13]Em1973,comaadiodestructtipos,a
linguagemCtornousepoderosoosuficienteparaqueamaiorpartedoUnix'sdokernelestavaagoraemC.

https://en.wikipedia.org/wiki/C_(programming_language) 3/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

Unixfoiumdosprimeiroskernelsdosistemaoperacionalimplementadasemumidiomadiferentedoconjunto.
CasosanterioresincluemoMulticssistemaquefoiescritoemPL/I)eControleMestrePrograma(MCP)para
aBurroughsB5000escritoemALGOLem1961.Emvoltade1977,RitchieeStephenC.Johnsonfezmais
alteraesparaoidiomaparafacilitarPortabilidadedosistemaoperacionalUnix.JohnsonporttilCCompiler
serviudebaseparavriasimplementaesdeCemnovasplataformas.[11]

K&RC

Em1978,BrianKernighaneDennisRitchiepublicouaprimeiraediodeThe
CProgrammingLanguage.[1]Estelivro,conhecidoporprogramadoresC
como"K&R",serviupormuitosanoscomouminformalespecificaoda
lngua.AversodeCquesedescrevecomumentereferidocomoCK&R.A
segundaediodolivro[14]abrangeatardeANSICpadro,descritoabaixo.

AK&Rintroduziuvriosrecursosdelinguagem:

BibliotecadeE/Spadro
longinttipodedados
unsignedinttipodedados
Operadoresdeatribuiocompostosdeforma(talcomo)foramalterados
paraaforma(isto,)pararemoveraambiguidadesemnticacriadopor
construes,taiscomo,oqualtinhasidointerpretadascomo(decrscimo
de10)emvezdoquesedestinemeventualmente(deixarser10).=op= Acapadolivro,alinguagem
op==i=10i=10ii=10i deprogramaoC,primeira
edioporBrianKernighane
MesmoapsapublicaodanormaANSI1989,pormuitosanosK&RC DennisRitchie
aindafoiconsideradoo"menordenominadorcomum",aoqueprogramadores
Cserestritoaomximodeportabilidadefoidesejado,umavezquemuitos
compiladoresmaisantigosaindaestavamemuso,eporquecuidadosamenteescritoK&RCcdigopodeser
legalStandardCtambm.

NasprimeirasversesdoC,apenasasfunesqueretornamoutrosdoqueostiposintdevemserdeclaradosse
usadoantesdadefiniodafunofunesutilizadassemdeclaraoprviaforamPresumesequetipode
retornoint.

Porexemplo:

longasome_function();
/**Int/other_function();

/*Int*/calling_function()
{
longatest1;
registrar/*int*/test2;

test1=some_function();
se(test1>0)
test2=0;
outra
test2=other_function();
voltartest2;
}

OsinttiposespecficosquesocomentadaspoderiaseromitidanoK&RC,massonecessriasnormas
posteriores.

DesdeK&Rdeclaraesdefunonoincluemqualquerinformaosobreosargumentosdafuno,
parmetrosdefunotipochequesnoforamrealizados,emboraalgunscompiladoresiriaemitiruma
mensagemdeavisoseumafunolocalfoichamadacomonmeroerradodeargumentos,ousevrias
https://en.wikipedia.org/wiki/C_(programming_language) 4/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

chamadasparaumafunoexternaUsadonmerosdiferentesoutiposdeargumentos.Ferramentasseparadas,
comodoUnixlintutilitrioforamdesenvolvidosque(entreoutrascoisas)poderiaverificaraconsistnciado
usodefunoemvriosarquivosdeorigem.

NosanosseguintespublicaodaK&RC,vriosrecursosforamadicionadoslinguagem,apoiadopor
compiladoresdaAT&T(emparticularPCC[15])ealgunsoutrosfornecedores.Estesincluem:

voidFunes(isto,funessemvalorderetorno)
funesqueretornamstructouuniontipos(aoinvsdeponteiros)
atribuiodestructtiposdedados
Enumerados

Ograndenmerodeextensesefaltadeacordosobreumabibliotecapadro,juntamentecomapopularidade
linguagemeofatodequenemmesmooUnixcompiladoresprecisamenteimplementadaaespecificaoK&
R,levounecessidadedepadronizao.

ANSICeISOC

Duranteofinaldosanos1970e1980,versesdoCforamimplementadas
paraumaamplavariedadedecomputadoresmainframe,minicomputadorese
microcomputadores,incluindooIBMPC,comosuapopularidadecomeou
aaumentarsignificativamente.

Em1983,oAmericanNationalStandardsInstitute(ANSI)formouuma
comisso,X3J11,paraestabelecerumaespecificaopadrodeC.X3J11
baseopadroCsobreaimplementaoUnixnoentanto,aporono
portteisdabibliotecaUnixCfoitransferidaparaoIEEEgrupodetrabalho
1003parasetornarabasepara1988POSIXpadro.Em1989,opadroCfoi
ratificadocomoANSIX3.1591989"LinguagemdeProgramaoC".Esta
versodalinguagemmuitasvezesreferidacomoANSIC,StandardC,ou
svezesC89.

Em1990,opadroANSIC(comasalteraesdeformatao)foiadoptado Acapadolivro,alinguagem
pelaOrganizaoInternacionaldeNormalizao(ISO)comoISO/IEC deprogramaoC,segunda
9899:1990,quesvezeschamadoC90.Portanto,ostermos"C89"e"C90" edioporBrianKernighane
referemsemesmalinguagemdeprogramao. DennisRitchiecobrindoANSI
C
ANSI,comooutrosorganismosnacionaisdenormalizao,nomaisse
desenvolveopadroCdeformaindependente,masadiaanorma
internacionalC,mantidopelogrupodetrabalhoISO/IECJTC1/SC22/WG14.Aadoonacionaldeuma
atualizaoaopadrointernacionalocorretipicamentedentrodeumanodapublicaodaISO.

UmdosobjectivosdoprocessodenormalizaoCeraproduzirumsuperconjuntodoK&RC,incorporando
muitasdascaractersticasnooficiaisposteriormenteintroduzidas.Ocomitdepadrestambmincluiuvrios
recursosadicionais,taiscomoprottiposdefuno(emprestadodeC++),voidponteiros,suportepara
internacionaisconjuntosdecaractereselocaisemelhoriasdeprprocessamento.Emboraasintaxeparaas
declaraesdeparmetrosfoiaumentadoparaincluiroestilousadonoC++,aK&interfacedeRcontinuaram
aserpermitido,paracompatibilidadecomcdigofonteexistente.

C89suportadopeloscompiladoresCatuais,eamaioriadocdigoCqueestsendoescritohojebaseado
nele.QualquerprogramaescritoapenasemPadroCesemquaisquerhiptesesdependentedehardwareser
executadocorretamenteemqualquerplataformacomumaexecuoconformeC,dentrodeseuslimitesde
recursos.Semestasprecaues,osprogramaspodemcompilarapenasnumadeterminadaplataformaoucom
umcompiladorparticular,devido,porexemplo,comautilizaodebibliotecasdenoconvencionais,tais
comoGUIbibliotecas,ouumadependnciadeatributosespecficosplataformacompileroutaiscomoo
tamanhoexatodetiposdedadosebyteordenao.
https://en.wikipedia.org/wiki/C_(programming_language) 5/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

NoscasosemqueocdigodevesercompilabletantoporcompiladoresoubaseadoemCK&Rconforme
padro,a__STDC__macropodeserusadaparadividirocdigoemseesStandardeK&Rparaevitarousode
umcompiladorbaseadoemCK&RderecursosdisponveissomentenaNormaC

ApsoprocessodepadronizaoANSI/ISO,aespecificaodalinguagemCpermaneceurelativamente
estticaporvriosanos.Em1995,foipublicadaaEmendaNormativa1normaCde1990(ISO/IEC9899/
AMD1:1995,conhecidainformalmentecomoC95)paracorrigiralgunsdetalheseacrescentarumsuportemais
extensoparaconjuntosdecaracteresinternacionais.

C99

OpadroCfoiposteriormenterevistonofinalde1990,levandopublicaodaISO/IEC9899:1999em
1999,quecomumentereferidocomo"C99".Desdeento,foialteradatrsvezesporCorrigendaTcnica.[16]

C99introduziuvriosnovosrecursos,incluindofunesembutidas,vriosnovostiposdedados(incluindo
longlonginteumcomplextipopararepresentarnmeroscomplexos),matrizesdecomprimentovarivele
membrosdamatrizflexvel,suportemelhoradoparaIEEE754ponto,suporteflutuanteparamacrosvaridicos
(macrosdevarivelarity),esuporteparacomentriosdeumalinhacomeandocom//,comoemBCPLouC
++.MuitosdelesjforamimplementadoscomoextensesemvrioscompiladoresC.

C99paraamaiorpartecompatvelcomC90,masmaisrgidoemalgunsaspectosemparticular,uma
declaraoquenotenhaumespecificadordetiponotemintassumidoimplicitamente.Amacropadro
__STDC_VERSION__definidocomovalor199901LparaindicarqueoapoioC99estdisponvel.GCC,Solaris
StudioeoutroscompiladoresCagorasuportammuitosoutodososnovosrecursosdoC99.OcompiladorCno
MicrosoftVisualC++,noentanto,implementaopadroC89easpartesdoC99quesonecessriospara
compatibilidadecomC++11.[17]

C11

Em2007,iniciouseumanovarevisodopadroC,informalmentedenominada"C1X",atasuapublicao
oficialem20111208.OComitdePadresCadotoudiretrizesparalimitaraadoodenovosrecursosque
noforamtestadospelasimplementaesexistentes.

OpadroC11adicionavriosnovosrecursosaoCebiblioteca,incluindomacrosgenricosdetipo,estruturas
annimas,suporteUnicodeaprimorado,operaesatmicas,multithreadingefunesdeverificaode
limites.TambmtornaalgumaspartesdabibliotecaC99existenteopcionaisemelhoraacompatibilidadecom
C++.Amacropadro__STDC_VERSION__definidocomo201112LparaindicarqueoapoioC11estdisponvel.

EmbutidoC

Historicamente,aprogramaoCembutidarequerextensesnopadronizadasparaalinguagemC,afimde
suportarrecursosexticoscomoaritmticadepontofixo,vriosbancosdememriadistintoseoperaes
bsicasdeE/S.

Em2008,oComitdePadresCpublicouumrelatriotcnicoestenderalinguagemC[18]pararesolveresses
problemas,fornecendoumpadrocomumparatodasasimplementaesdeaderir.Eleincluiumasriede
recursosnodisponveisemCnormais,taiscomoaritmticadepontofixo,espaosdeendereocomnome,e
eubsica/Ohardwaredeendereamento.

Sintaxe

https://en.wikipedia.org/wiki/C_(programming_language) 6/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

CtemumagramticaformalespecificadopelanormaC.[19]Osfinsdelinhasogeralmentenosignificativa
noCContudo,oslimitesdelinhatmsignificadoduranteafasedeprprocessamento.Comentriospodem
aparecerentreosdelimitadores/*e*/,ou(desdeC99)seguinte//atofimdalinha.Comentriosdelimitada
por/*e*/noseaninham,eessassequnciasdecaracteresnosointerpretadoscomodelimitadoresde
comentriosseelesaparecemdentrodecordasoudecaracteresliterais.[20]

OsarquivosdeorigemCcontmdeclaraesedefiniesdefuno.Asdefiniesdefuno,porsuavez,
contmdeclaraeseafirmaes.Declaraesquerdefinirnovostiposusandopalavraschavecomostruct,
unioneenum,ouatribuirtiposdeetalvezdearmazenamentodereservaparanovasvariveis,geralmentepor
escritodotiposeguidodonomedavarivel.Palavraschave,taiscomochareintespecificarostiposde
embutidos.Seesdecdigosocolocadosentrechaves({e},svezeschamadode"chaves")paralimitaro
mbitodasdeclaraeseagircomoumanicainstruoparaestruturasdecontrole.

Comoumalinguagemimperativa,Cusadeclaraesdeespecificaraes.Aindicaomaiscomumuma
indicaodaexpresso,queconsistedeumaexpressoaseravaliada,seguidoporumpontoevrgulacomo
umefeitocolateraldaavaliao,asfunespodemserchamadosevariveispodemseratribudosnovos
valores.Paramodificaraexecuosequencialnormaldeinstrues,Cfornecevriasinstruesdecontrole
fluxoidentificadasporpalavraschavereservadas.Programaoestruturadaapoiadoporif(else)aexecuo
condicionalepordowhile,whileeforexecuoiterativo(looping).Afordeclaraoteminicializao
separada,ensaios,easexpressesdereinicializao,qualquerumoutodosdosquaispodemseromitidos.
breakecontinuepodeserusadoparadeixarainstruodeloopmaisinternooupularparaasuareinicializao.
Htambmumnoestruturadagotodeclaraoqueseramificadiretamenteparaadesignadaetiquetadentroda
funo.switchseleccionaumcaseparaserexecutadocombasenovalordeumaexpressointeira.

Asexpressespodemusarumavariedadedeoperadoresinternosepodemconterchamadasdefuno.Aordem
naqualosargumentosparafuneseoperandosparaamaioriadosoperadoressoavaliadosno
especificada.Asavaliaespodemmesmoserintercaladas.Noentanto,todososefeitossecundrios(incluindo
oarmazenamentodevariveis)ocorrerantesdoprximo"pontodesequncia"Ospontosdeseqncia
incluemofinaldecadadeclaraodeexpressoeaentradaeretornodecadachamadadefuno.Pontosde
seqnciatambmocorrerduranteaavaliaodeexpressesquecontmdeterminadosoperadores(&&,||,?:e
ooperadorvrgula).Issopermiteumaltograudeotimizaodecdigoobjetopelocompilador,masrequer
programadoresCparatermaiscuidadoparaobterresultadosconfiveisdoquenecessrioparaoutras
linguagensdeprogramao.

KernighaneRitchiediznaintroduodeALinguagemdeProgramaoC:"C,comoqualqueroutralngua,
temsuasmanchasAlgunsdosoperadorestemaprecednciaerrado,algumaspartesdasintaxepoderiaser
melhor.".[21]OpadroCnotentoucorrigirmuitasdestasmanchas,devidoaoimpactodetaisalteraesnas
softwarejexistente.

Conjuntodecaracteres

OconjuntodecaracteresdeorigemCbsicoincluiosseguintescaracteres:

LetrasmaisculaseminsculasdeISOBsicoalfabetolatino:azAZ
Dgitosdecimais:09
Personagensgrficos:!"#%&'()*+,./:;<=>?[\]^_{|}~
Caracteresembranco:espao,tabulaohorizontal,verticalguia,alimentaodeformulrio,de
novalinha

NewlineindicaofinaldeumalinhadetextoElenoprecisacorresponderaumnicocarterreal,emborapor
conveninciaCtratalocomoum.

https://en.wikipedia.org/wiki/C_(programming_language) 7/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

Caracterescodificadosadicionaismultibytepodeserusadoemstringsliterais,maselesnosototalmente
porttil.OmaisrecentepadroC(C11)permitemultinacionaisUnicodecaracteresparaserincorporado
portablynotextofonteCusando\uXXXXou\UXXXXXXXXcodificao(ondeoXdenotaumcaracterehexadecimal),
emboraesserecursoaindanofoiamplamenteimplementado.

OconjuntobsicoCcarterdeexecuocontmosmesmoscaracteres,juntamentecomrepresentaesde
alerta,deretrocesso,eretornodecarro.Runtimesuporteparaconjuntosdecaracteresestendidostem
aumentadoacadarevisodopadroC.

Aspalavrasreservadas

C89tem32palavrasreservadas,tambmconhecidascomopalavraschave,quesoaspalavrasquenopodem
serusadasparaoutrospropsitosquenoaquelesparaosquaiselesestoprdefinidos:

auto double int struct


break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

C99reservoumaiscincopalavras:

_Bool _Imaginary restrict


_Complex inline

C11reservadosmaissetepalavras:[22]

_Alignas _Atomic _Noreturn _Thread_local


_Alignof _Generic _Static_assert

Amaioriadaspalavrasrecentementereservadascomeamcomumsublinhadoseguidoporumaletra
maiscula,porqueidentificadoresdesseformulrioforampreviamentereservadospelopadroCparauso
somenteporimplementaes.Comoocdigofontedoprogramaexistentenodeveriaterusadoesses
identificadores,elenoseriaafetadoquandoasimplementaesCcomeassemasuportaressasextensespara
alinguagemdeprogramao.Algunscabealhospadrodefinemsinnimosmaisconvenientespara
identificadoressublinhados.Alinguagemanteriormenteincludoumapalavrareservadachamadaentry,mas
issoraramentefoiimplementado,eagorafoiremovidocomoumapalavrareservada.[23]

Operadores

Csuportaumricoconjuntodeoperadores,quesosmbolosusadosdentrodeumaexpressoparaespecificar
asmanipulaesaserexecutadaaoavaliaressaexpresso.Ctemoperadorespara:

aritmtica:+,,*,/,%
atribuio:=
atribuioampliada:+=,=,*=,/=,%=,&=,|=,^=,<<=,>>=
lgicabitabit:~,&,|,^
bitabitdesloca:<<,>>
https://en.wikipedia.org/wiki/C_(programming_language) 8/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

lgicabooleana:!,&&,||
avaliaocondicional:?:
testedeigualdade:==,!=
chamarfunes:()
incrementoedecremento:++,
seleodemembro:.,>
Tamanhodoobjeto:sizeof
relaesdeordem:<,<=,>,>=
derefernciaeremoodereferncia:&,*,[]
Sequenciamento:,
agrupamentosubexpresso:()
conversodetipo:(typename)

Cusaooperador=(usadaemmatemticaparaexpressaraigualdade)paraindicaraatribuio,seguindoo
precedentedoFortranePL/I,masaocontrriodeALGOLeseusderivados.Cusaooperador==paratestara
igualdade.Asemelhanaentreestesdoisoperadores(atribuioeigualdade)poderesultarnousoacidentalde
umnolugardooutro,eemmuitoscasos,oerronoproduzumamensagemdeerro(emboraalguns
compiladoresproduzamavisos).Porexemplo,aexpressocondicionalif(a==b+1)podesererroneamente
escritoscomoif(a=b+1),oqueseravaliadocomoverdadeiroseafordiferentedezeroapsaatribuio.[24]

OCprecednciadooperadornemsempreintuitiva.Porexemplo,ooperador==ligamaisfortementedoque
(executadoantes)osoperadores&(bitabitE)e|(bitabitOR)emexpresses,taiscomox&1==0,oque
deveserescritocomo(x&1)==0seessaaintenodoprogramador.[25]

"Ol,mundo"exemplo
O"Ol,mundo"exemplo,queapareceunaprimeiraediodoK&R,tornouseomodeloparaumprograma
deintroduonamaioriadoslivrosdeprogramao,independentementedalinguagemdeprogramao.O
programaimprime"Ol,mundo"paraasadapadro,quenormalmenteumateladoterminalounatela.

Aversooriginalfoi:[26]

principal()
{
printf("Ol,mundo\n");
}

Umpadroconforme"Ol,mundo"programa:[a]

#include<stdio.h>

intprincipal(vazio)
{
printf("Ol,mundo\n");
}

Aprimeiralinhadoprogramacontmumadirectivadeprprocessamento,indicadopor#include.Issofaz
comqueocompiladorparasubstituiressalinhacomtodootextodostdio.hcabealhopadro,quecontm
declaraesparapadrofunesdeentradaesada,taiscomoprintf.Oscolchetesemtornostdio.hindicam
questdio.hestlocalizadousandoumaestratgiadepesquisaquepreferecabealhosfornecidoscomo
compiladorparaoutroscabealhoscomomesmonome,aoinvsdeaspasduplasquetipicamenteincluem
arquivosdecabealholocaisouespecficasdoprojeto.

https://en.wikipedia.org/wiki/C_(programming_language) 9/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

Aprximalinhaindicaqueumafunochamadamainestsendodefinido.Amainfunoserveaumpropsito
especialemprogramasemCoambientedetempodeexecuochamaamainfunoparacomearaexecuo
doprograma.Otipoespecificadorintindicaqueovalorqueretornadaparaochamador(nestecaso,o
ambientedetempodeexecuo)comoumresultadodaavaliaodamainfuno,umnmerointeiro.A
palavrachavevoidcomoumalistadeparmetrosindicaqueestafunonotemargumentos.[B]

Achavedeaberturaindicaoinciodadefiniodamainfuno.

Aprximalinhachama(desviaaexecuopara)umafunochamadaprintf,quenestecasofornecidoa
partirdeumsistemadebiblioteca.Nestachamada,aprintffunopassada(fornecido)comumnico
argumento,oendereodoprimeirocaracterenastringliteral"hello,world\n".Astringliteralumsemnome
matrizcomelementosdotipochar,criadoautomaticamentepelocompiladorcomumcaracterefinal0
valorizadoparamarcarofimdoarray(printfprecisasaberdisso).A\numasequnciadeescapequeCse
traduzemumanovalinhadecaracteres,quenasadasignificaofimdalinhaatual.Ovalorderetornoda
printffunodotipoint,masdescartadosilenciosamente,umavezquenousado.(Umprogramamais
cuidadosopodetestarovalorderetornoparadeterminarseounoaprintffunocomxito.)Opontoe
vrgula;terminaocomunicado.

Achavedefechamentoindicaofimdocdigoparaamainfuno.DeacordocomaespecificaodoC99e
maisrecente,amainfuno,aocontrriodequalqueroutrafuno,voltarimplicitamenteumvalorde0ao
atingira}queterminaafuno.Issointerpretadopelosistemadetempodeexecuocomoumcdigode
sadaindicandoexecuobemsucedida.[27]

Ostiposdedados
OtipodesistemaemCestticaefracamentetipado,oqueotornasemelhanteaosistematipodeALGOL
descendentes,comoPascal.[28]Hbuiltintiposdeinteirosdevriostamanhos,ambosassinadose,sem
assinaturanmerosdepontoflutuanteetiposenumerados(enum).Tipointeirocharmuitasvezesusadopara
caracteresdebytenico.C99acrescentouumtipodedadosbooleano.Htambmostiposderivados,
incluindomatrizes,ponteiros,registros(struct),enomarcadossindicatos(union).

Cfreqentementeusadoemprogramaodesistemasdebaixonvelondeescapesdosistemadetipopodem
sernecessrios.Ocompiladortentaassegurartipodecorreodamaioriadasexpresses,masoprogramador
podesubstituirasverificaesdevriasmaneiras,usandoumtipocastparaconverterexplicitamenteumvalor
deumtipoparaoutro,ouusandoponteirosousindicatosparareinterpretarosbitssubjacentesDeumobjetode
dadosdealgumaoutramaneira.

AlgunsachamsintaxededeclaraodeCintuitiva,particularmenteparaponteirosdefuno.(Aidiade
Ritchiefoideclararidentificadoresemcontextosqueassemelhaseasuautilizao:"declaraorefleteouso
.")[29]

DoCconversesaritmticasusuaispermitircdigoeficienteasergerado,massvezespodeproduzir
resultadosinesperados.Porexemplo,umacomparaodeinteirosassinadosenoassinadosdelarguraigual
requerumaconversodovalorassinadoparaunsigned.Issopodegerarresultadosinesperadosseovalor
assinadofornegativo.

Ponteiros

Csuportaousodeponteiros,umtipoderefernciaqueregistraoendereooulocalizaodeumobjetoou
funonamemria.Osponteirospodemserdereferencedparaacessardadosarmazenadosnoendereo
apontado,ouparainvocarumapontadoparafuncionar.Ponteirospodemsermanipuladosusandocessoou
aritmticadeponteiro.Arepresentaoemtempodeexecuodeumvalordeponteironormalmenteum
endereodememriabruta(talvezaumentadoporumcampodedeslocamentodentrodeumapalavra),mas
https://en.wikipedia.org/wiki/C_(programming_language) 10/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

comootipodeumponteiroincluiotipodacoisaapontada,asexpressesincluindoponteirospodemser
verificadasportipoEmtempodecompilao.Aaritmticadoponteiroautomaticamentedimensionadapelo
tamanhodotipodedadosapontadopara.OsponteirossousadosparamuitasfinalidadesemC.Ascadeiasde
textosocomumentemanipuladosusandoponteirosparaarraysdecaracteres.Alocaodememriadinmica
realizadautilizandoponteiros.Muitostiposdedados,taiscomorvores,socomumenteimplementado
comoalocadosdinamicamentestructobjetosvinculadosemconjunto,utilizandoponteiros.Ponteirospara
funessoteisparapassarfunescomoargumentosparafunesdeordemsuperior(taiscomoqsortou
bsearch)oucomochamadasderetornoaserinvocadaspelosmanipuladoresdeeventos.[27]

Umponteironulovalorapontaexplicitamenteanenhumlocalvlido.Dereferencingumvalordeponteironulo
indefinido,muitasvezesresultandoemumafalhadesegmentao.Valoresponteironulosoteispara
indicarcasosespeciais,comono"prximo"ponteirononfinaldeumalistaligada,oucomoumaindicao
deerrodefunesretornarponteiros.Emcontextosapropriadosnocdigofonte,comoparaatribuirauma
varivelponteiro,umaconstanteponteironulopodeserescritocomo0,comousemconversoexplcitapara
umtipodeponteiro,oucomoaNULLmacrodefinidaporvrioscabealhospadro.Emcontextoscondicionais,
osvaloresdeponteironulosoavaliadoscomofalsos,enquantotodososoutrosvaloresdeponteiroso
avaliadoscomoverdadeiros.

Ponteirosvoid(void*)apontamparaobjetosdotiponoespecificado,epode,portanto,serusadocomo
ponteirosdedados"genricos".Comootamanhoeotipodoobjetoapontadonosoconhecidos,osponteiros
vaziosnopodemserdesreferenciados,nemaaritmticadeponteirosnelespermitida,emborapossamser
facilmenteconvertidas(eemmuitoscontextos)paraedequalqueroutroponteirodeobjetodigitar.[27]

Ousodescuidadodeponteirospotencialmenteperigoso.Comoelesnormalmentesodesmarcados,uma
variveldeponteiropodeserfeitaparaapontarparaqualquerlocalarbitrrio,oquepodecausarefeitos
indesejveis.Emboraponteirosadequadamenteutilizadosapontamparalugaresseguros,elespodemserfeitos
paraapontarparalocaisinsegurosusandoinvlidoponteiroaritmticaosobjetosqueapontamparapodem
continuaraserutilizadosapsadesalocao(ponteirospendurados)quepodeserusadosemtersido
inicializado(ponteirossilvestres)Ouelespodemserdiretamenteatribudoumvalorinsegurousandoum
elenco,unioouatravsdeoutroponteirocorrompido.Emgeral,Cpermissivoparapermitiramanipulaoe
conversoentretiposdeponteiro,emboraoscompiladorestipicamentefornecemopesparavriosnveisde
verificao.Algumasoutraslinguagensdeprogramaoresolverestesproblemasatravsdautilizaomais
restritivasderefernciatipos.

Arrays

MatriztiposemCso,tradicionalmente,deumtamanhofixo,estticoespecificadoemtempodecompilao.
(ArecentenormamaisC99permitetambmumaformadematrizesdecomprimentovarivel.)Noentanto,
tambmpossvelalocarumblocodememria(detamanhoarbitrrio)emtempodeexecuo,usandoa
bibliotecapadromallocfuno,etratlocomoumMatriz.Cunificaodematrizeseponteirossignificaque
arraysdeclaradoseestesalocadosdinamicamentearrayssimuladossopraticamenteintercambiveis.

Desdematrizessosempreacedidos(emvigor)atravsdeponteiros,acessosdematrizsotipicamenteno
verificadaemrelaoaotamanhodamatrizsubjacente,emboraalgunscompiladorespodefornecerverificao
delimitescomoumaopo.[30]delimitesdematrizviolaesso,portanto,possvelebastantecomumem
cdigodescuidadamenteescrita,epodelevaravriasrepercusses,incluindomemriailegalacessos,
corrupodedados,estourosdebuffer,etempodeexecuoexcees.Seaverificaodelimitesfor
desejada,eladeveserfeitamanualmente.

Cnotemumadisposioespecialparadeclarararraysmultidimensionais,massimdependederecurso
dentrodosistemadetipoparadeclarararraysdearrays,querealizaefetivamenteamesmacoisa.Osvaloresdo
ndicede"matrizmultidimensional"resultantepodeserpensadocomooaumentonaordemdelinhaprincipal
.

https://en.wikipedia.org/wiki/C_(programming_language) 11/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

Matrizesmultidimensionaissocomumenteutilizadosemalgoritmosnumricos(principalmentedaApplied
lgebralinear)paraarmazenarasmatrizes.AestruturadoarrayCbemadequadaparaestatarefaespecfica.
Noentanto,umavezqueasmatrizessopassadasapenascomoponteiros,oslimitesdamatrizdevemser
conhecidosvaloresfixosouentoexplicitamentepassadosparaqualquersubrotinaqueosnecessite,ematrizes
dematrizesdinamicamentedimensionadasnopodemseracessadasusandoduplaindexao.(Umasoluo
paraissoalocaramatrizcomum"vetordelinha"adicionaldeponteirosparaascolunas.)

C99introduzidos"matrizesdecomprimentovarivel"queabordamalguns,masnotodososproblemascom
ordinriasarraysC.

Matrizponteiropermutabilidade

Anotaosubscritax[i](ondexdesignaumponteiro)umacarsintticopara*(x+i).[31]Aproveitandoo
conhecimentodocompiladordotipodeponteiro,oendereoquex+iapontaparanooendereodebase
(apontadaporx)incrementadoemibytes,massimestdefinidaparaseroendereodebaseincrementadopor
imultiplicadapelotamanhodeumelementoquexapontapara.Destemodo,x[i]designaoi+1simoelemento
damatriz.

Almdisso,namaioriadoscontextosdeexpresso(aexceonotvelcomooperandodesizeof),onomede
umamatrizautomaticamenteconvertidoparaumponteiroparaoprimeiroelementodamatriz.Issoimplica
queumarraynuncacopiadocomoumtodoquandonomeadocomoumargumentoparaumafuno,mas
apenasoendereodoseuprimeiroelementopassado.Portanto,apesardechamadasdefunoemusoC
passarporvalorsemntica,asmatrizesestoemvigorpassadosporreferncia.

Otamanhodeumelementopodeserdeterminadaaplicandoooperadorsizeofaqualquerelementodeno
referenciadox,comoemn=sizeof*xoun=sizeofx[0],eonmerodeelementosemumamatrizdeclarada
ApodeserdeterminadacomosizeofA/sizeofA[0].Esteltimosseaplicaaosnomesdematriz:as
variveisdeclaradascomsubscritos(intA[20]).DevidosemnticadeC,nopossveldeterminaro
tamanhointeirodematrizesatravsdeponteirosparaarraysouaquelescriadosporalocaodinmica(
malloc)decdigo,taiscomosizeofarr/sizeofarr[0](emquearrdesignaumponteiro)noirfuncionar
desdequeocompiladorassumeotamanhodoponteiroemsiestasersolicitada.[32][33]Desdeargumentosde
nomedematrizparasizeofnosoconvertidosparaponteiros,elesnoapresentamessaambiguidade.No
entanto,matrizescriadaspelaalocaodinmicasoacessadosporponteirosemvezdevariveisdematriz
verdadeiras,entoelessofremdosmesmossizeofproblemascomoponteirosdematriz.

Assim,apesardestaaparenteequivalnciaentrematrizeponteirovariveis,aindahumadistinoaserfeita
entreeles.Mesmoqueonomedeumamatriz,namaioriadoscontextosdeexpresso,convertidoemum
ponteiro(paraseuprimeiroelemento),esteponteironoocupanenhumarmazenamentoonomedamatrizno
umlvalor,eseuendereoumaconstante,aocontrriodeumavarivelponteiro.Conseqentemente,oque
umamatriz"apontapara"nopodeseralterada,eimpossvelatribuirumnovoendereoaumnomede
matriz.Contedodamatrizpodesercopiado,noentanto,usandoamemcpyfuno,ouacessandooselementos
individuais.

Gerenciamentodememria
Umadasfunesmaisimportantesdeumalinguagemdeprogramaoproporcionarfacilidadesparao
gerenciamentodememriaeosobjetosqueestoarmazenadosnamemria.Cfornecetrsmaneirasdistintas
paraalocarmemriaparaobjetos:[27]

Alocaodememriaesttica:oespaoparaoobjetofornecidonobinrioemtempodecompilao
estesobjectostmumaextenso(outempodevida),enquantoobinrioquecontmdelescarregadona
memria.
Alocaodememriaautomtica:objetostemporriospodemserarmazenadosnapilha,eesseespao
automaticamenteliberadoereutilizvelapsoblocoemqueelassodeclaradasencerrado.
https://en.wikipedia.org/wiki/C_(programming_language) 12/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

Alocaodinmicadememria:blocosdememriadetamanhoarbitrriopodesersolicitadoemtempo
deexecuousandofunesdebiblioteca,taiscomomallocapartirdeumaregiodememriachamado
depilhaestesblocospersistiratqueposteriormenteliberadoparareutilizaochamandoafunode
bibliotecareallocoufree

Estastrsabordagenssoapropriadasemsituaesdiferentesetmvriascompensaes.Porexemplo,a
alocaodememriaestticatempoucasobrecargadealocao,aalocaoautomticapodeenvolverum
poucomaisdesobrecarga,ealocaodememriadinmicapodepotencialmenteterumagrandequantidadede
sobrecargaparaalocaoedesalocao.Anaturezapersistentedeobjetosestticostilparamanter
informaesdeestadoatravsdechamadasdefuno,aalocaoautomticafcildeusar,masoespaode
pilhatipicamentemuitomaislimitadoetransitriodoqueamemriaestticaouoespaodepilhaea
alocaodememriadinmicapermiteaalocaoconvenientedeobjetoscujosTamanhoconhecidosomente
emtempodeexecuo.AmaioriadosprogramasdeCfazusoextensivodetodosostrs.

Semprequepossvel,aalocaoautomticaouestticageralmentemaissimplesporqueoarmazenamento
gerenciadopelocompilador,liberandooprogramadordatarefapotencialmentepropensaaerrosdealocare
liberarmanualmenteoarmazenamento.Noentanto,muitasestruturasdedadospodemmudardetamanhoem
tempodeexecuoe,umavezquealocaesestticas(ealocaesautomticasantesdeC99)devemterum
tamanhofixoemtempodecompilao,existemmuitassituaesemqueaalocaodinmicanecessria.[27]
AntesdopadroC99,matrizesdetamanhovarivelforamumexemplocomumdeste.(Vejaoartigosobre
mallocumexemplodematrizesalocadasdinamicamente.)Aocontrriodealocaoautomtica,quepodefalhar
emtempodeexecuocomconsequnciasdescontroladas,asfunesdealocaodinmicaretornaruma
indicao(naformadeumvalordeponteironulo),quandooarmazenamentonecessrionopodeSer
alocados.(Alocaoestticaquemuitograndenormalmentedetectadapelovinculadoroucarregador,antes
deoprogramapodeatmesmocomearaexecuo.)

Salvoespecificaoemcontrrio,osobjectosestticoscontmvaloresdeponteirozeroounulonoarranquedo
programa.Objetosalocadosautomaticamenteedinamicamentesoinicializadossomenteseumvalorinicial
forexplicitamenteespecificadocasocontrrio,elesinicialmentetervaloresindeterminados(tipicamente,
qualquerquesejaopadrodobitpassaaestarpresentenaarmazenamento,quepodeatnorepresentamum
valorvlidoparaotipo).Seoprogramatentaacessarumvalornoinicializado,osresultadossoindefinidos.
Muitoscompiladoresmodernostentamdetectarealertarsobreesteproblema,masambososfalsospositivose
falsosnegativospodemocorrer.

Outraquestoqueaalocaodememriadoheaptemdesersincronizadacomoseuusorealemqualquer
programaparaqueelepossaserreutilizadotantoquantopossvel.Porexemplo,seonicoponteiroparauma
alocaodememriaheapsaidoescopooutenhaoseuvalorsubstitudoantesfree()chamado,emseguida,
queamemrianopodeserrecuperadoparareutilizaoposteriore,essencialmente,perdeuparao
programa,umfenmenoconhecidocomoumafugadememria.Poroutrolado,possvelqueamemriaseja
liberada,mascontinueaserreferenciada,levandoaresultadosimprevisveis.Normalmente,ossintomas
apareceroemumapartedoprogramamuitodistantedoerroreal,tornandodifcilrastrearoproblema.(Tais
questessomelhoradasdelnguascomacoletadelixoautomtica.)

Bibliotecas
AlinguagemdeprogramaoCutilizabibliotecascomoseuprincipalmtododeextenso.EmC,uma
bibliotecaumconjuntodefunescontidasemumnicoarquivo"archive".Cadabibliotecatem,tipicamente,
umficheirodecabealho,oqualcontmosprottiposdasfunescontidasdentrodabibliotecaquepodeser
utilizadoporumprograma,edeclaraesdetiposdedadosespeciaisemacrosmbolosutilizadoscomestas
funes.Paraqueumprogramaparausarumabiblioteca,eledeveincluiroarquivodecabealhodabiblioteca,
eabibliotecadeveservinculadocomoprograma,queemmuitoscasosrequersinalizadoresdecompilador(por
exemplo,lm,abreviaode"ligaodabibliotecadematemtica").[27]

https://en.wikipedia.org/wiki/C_(programming_language) 13/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

AbibliotecamaiscomumCabibliotecapadroC,queespecificadopeloISOeANSICnormasevemcom
todasasimplementaesC(implementaesquevisamambienteslimitados,taiscomosistemasembarcados
podemfornecerapenasumsubconjuntodabibliotecapadro).Estabibliotecaoferecesuporteaentradaesada
defluxo,alocaodememria,matemtica,seqnciasdecaracteresevaloresdetempo.Vrioscabealhos
padroseparadas(porexemplo,stdio.h)especificaasinterfacesparaessaseoutrasinstalaesdabiblioteca
padro.

OutroconjuntocomumdefunesdebibliotecaCsoaquelesusadosporaplicativosvoltadosespecificamente
paraUnixeUnixlikesistemas,especialmentefunesqueproporcionamumainterfaceparaoncleo.Estas
funessodetalhadasemvriospadrescomoPOSIXeoSingleUNIXSpecification.

UmavezquemuitosprogramasforamescritosemC,humagrandevariedadedeoutrasbibliotecas
disponveis.BibliotecassomuitasvezesescritosemC,porquecompiladoresCgerareficientecdigode
objetoprogramadores,emseguida,criarinterfacesparaabibliotecaparaqueasrotinaspodemserutilizadosa
partirdelinguagensdealtonvelcomoJava,PerlePython.[27]

Ferramentasdelinguagem
VriasferramentasforamdesenvolvidasparaajudarosprogramadoresCaencontrarecorrigirdeclaraescom
comportamentoindefinidooupossivelmenteexpresseserrneas,commaiorrigordoqueofornecidopelo
compilador.Aferramentalintfoioprimeiro,levandoamuitosoutros.

Automatizadoverificaodecdigofonteeauditoriasobenficosemqualqueridioma,eporCexistem
muitasdessasferramentas,taiscomoLint.UmaprticacomumusarLintparadetectarcdigoquestionvel
quandoumprogramaescritopelaprimeiravez.UmavezqueumprogramapassaLint,elecompilado
usandoocompiladorC.Almdisso,muitoscompiladorespodemopcionalmenteavisarsobresintaticamente
construesvlidasquesosusceptveisderealmentesererros.MISRACumconjuntoproprietriode
diretrizesparaevitartalcdigoquestionvel,desenvolvidoparasistemasembarcados.[34]

Htambmcompiladores,bibliotecasemecanismosdenveldesistemaoperacionalparaexecutaraesque
nosoumapartepadrodeC,comoaverificaodelimitesparaarrays,adetecodeestourodebuffer,
serializao,memriadinmicademonitoramentoecoletadelixoautomtica.

FerramentascomooPurifyouValgrindevinculaocombibliotecascontendoversesespeciaisdasfunes
dealocaodememriapodeajudaradescobrirerrosdeexecuonousodememria.

Usos
Camplamenteutilizadopara"programaodosistema",incluindoaimplementaodesistemas
operacionaisesistemasembarcadosaplicaes,porqueocdigoC,quandoescritosparaaportabilidade,pode
serusadonamaioriadoscasos,noentanto,quandonecessrio,ocdigoespecficodosistemapodeserusado
paraacessarhardwareespecficoendereoseexecutartipotrocadilhosparacorresponderaosrequisitosde
interfaceimpostasexternamente,comumabaixadetempodeexecuodemandaderecursosdosistema.C
tambmpodeserusadoparaaprogramaodesiteusandoCGIcomouma"portadeentrada"parainformaes
entreoaplicativodaWeb,oservidoreobrowser.[36]Cmuitasvezesescolhidoemdetrimentodelinguagens
interpretadasporcausadesuavelocidade,estabilidadeedisponibilidadequaseuniversal.[37]

UmaconsequnciadaampladisponibilidadeeeficinciadeCquecompiladores,bibliotecaseintrpretesde
outraslinguagensdeprogramaosomuitasvezesimplementadoemC.Asimplementaesprimriasde
Python,Perl5ePHP,porexemplo,sotodosescritosemC.

Comoacamadadeabstraofinaeasobrecargabaixa,Cpermitequeosprogramadorescriem
implementaeseficientesdealgoritmoseestruturasdedados,teisparaprogramascomputacionalmente
intensos.Porexemplo,aAritmticaBibliotecaGNUMultiplePrecision,oGNUScientificLibrary,
https://en.wikipedia.org/wiki/C_(programming_language) 14/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

MathematicaeMATLABesto
completamenteouparcialmenteescrito
emC.

Cporvezesutilizadocomouma
linguagemintermediriapor
implementaesdeoutraslnguas.Esta
abordagempodeserutilizadaparaa
portabilidadeouconveninciaUsando
Ccomoumalinguagemintermediria,
nosonecessriosgeradoresdecdigo
adicionaisespecficosdamquina.C
temalgunsrecursos,comoasdiretivas
deprprocessadordenmerodelinhae
asvrgulassuprfluasopcionaisnofinal
daslistasdeinicializao,quesuportam
acompilaodocdigogerado.No
entanto,algumasdeficinciasdeCter
Ondicetiobegrficode20022015,quemostraumacomparaoda
solicitadoodesenvolvimentodeoutras
linguagensbaseadasemCconcebidos popularidadedevriaslinguagensdeprogramao [35]
especificamenteparautilizaocomo
lnguasintermedirias,taiscomoC.

Ctambmtemsidoamplamenteusadoparaimplementardeusuriofinalaplicaes.Noentanto,esses
aplicativostambmpodemserescritosemlinguagensmaisrecentesedenvelsuperior.

Idiomasrelacionados
Ctemtantodirectacomoindirectamenteinfluenciadasmuitaslnguasposteriores,comoC#,D,Go,Java,
JavaScript,Limbo,LPC,Perl,PHP,Python,edeUnixshellC.Ainflunciamaisdifundidatemsido
sinttica:todasaslnguasmencionadascombinaradeclaraoe(maisoumenosreconhecvel)expresso
sintaxedoCcomsistemasdotipo,modelosdedadose/ouestruturasdeprogramasemgrandeescalaque
diferemdosdeC,svezesradicalmente.

ExistemvriosintrpretesCouquaseC,incluindoCheCINT,quetambmpodeserusadoparascripting.

Quandolinguagensorientadasaobjetotornousepopular,C++eObjectiveCforamduasextensesdiferentes
deCqueforneceuascapacidadesorientadasaobjetos.Ambasaslnguasforamoriginalmenteimplementado
comocompiladoresfonteafonteCdigofontefoiconvertidoemCe,emseguida,compiladocomum
compiladorC.

OC++linguagemdeprogramaofoiconcebidoporBjarneStroustrupcomoumaabordagemparafornecer
orientadaaobjetosfuncionalidadecomumasintaxeClike.[38]C++acrescentamaisforadigitao,escopo,e
outrasferramentasteisnaprogramaoorientadaaobjetos,epermiteaprogramaogenricaatravsde
modelos.QuaseumsuperconjuntodeC,C++agorasuportaamaiorparteC,comalgumasexcees.

ObjectiveCfoioriginalmenteummuito"fina"camadaemcimadeC,econtinuaaserumsuperrigorosadoC
quepermiteaprogramaoorientadaaobjetosusandoumparadigmahbridoedinmico/estticodedigitao.
ObjectiveCderivasuasintaxedoCeSmalltalk:sintaxequeenvolveoprprocessamento,expresses,
declaraesdefunoechamadasdefunoherdadodeC,enquantoasintaxepararecursosorientadosa
objetosprovmoriginalmentedoSmalltalk.

AlmdeC++eObjectiveC,Ch,cilkeUnifiedParallelCsoquasesupersetsdeC.

https://en.wikipedia.org/wiki/C_(programming_language) 15/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

Vejatambm
ComparaodePascaleC
Comparaodelinguagensdeprogramao
ConcursoInternacionaldeCdigoCOfuscado
ListadelinguagensdeprogramaobaseadasemC
ListadecompiladoresdeC

Notas
a.Ocdigodeexemplooriginalircompilarnamaioriadoscompiladoresmodernosquenoestoemestrita
conformidadecomopadromodo,masnototalmenteemconformidadecomosrequisitosdeambososC89ouC99.
Defato,C99requerqueumamensagemdediagnsticosejaproduzida.
b.Amainfunotemdoisargumentos,intargcechar*argv[],respectivamente,oquepodeserusadoparalidar
comargumentosdelinhadecomando.OpadroISOC(seco5.1.2.2.1)exigequeambasasformasdemainaapoiar,
queotratamentoespecialnoconcedidoaqualqueroutrafuno.

Referncias
1.Kernighan,BrianW.Ritchie,DennisM.(Fevereirode1978).ALinguagemdeProgramaoC(1ed.).Englewood
Cliffs,NJ:PrenticeHall.ISBN0131101633.ConsideradopormuitoscomoarefernciaautorizadaemC.
2.Ritchie(1993):"Thompsontinhafeitoumabrevetentativadeproduzirumsistemacodificadoemumaversoinicial
doCantesestruturasem1972,masdeuseoesforo."
3.Ritchie(1993):"OesquemadecomposiodotipoadotadapelaCdevedvidaconsidervelparaAlgol68,embora
issonoaconteceu,talvez,emergiremumaformaqueosaderentesdeAlgolaprovaria."
4."VerilogHDL(eC)"(PDF).AEscoladePesquisadeCinciadaComputaodaUniversidadeNacionaldaAustrlia.
20100603.Retirado2013/08/19."Dcadade1980:VerilogintroduzidopelaprimeiravezVeriloginspiradona
linguagemdeprogramaoC"
5.Ritchie(1993)
6.Lawlis,PatriciaK.(Agostode1997)."Diretrizesparaescolherumalinguagemdecomputador:oapoioorganizao
visionria".AdaInformationClearinghouse.Retirado18dedeJulhodede2006.
7."LinguagemdeProgramaodepopularidade".2009.Retirado16dedeJaneirode2009.
8."IndexComunidadeTIOBEProgramming".2009.Obtido6deMaiode2009.
9.Ritchie,DennisM.(Marode1993)."ODesenvolvimentodaLinguagemC".AvisosACMSIGPLAN.28(3):201
208.doi:10,1145/155.360,155580.
10.UlfBilting&JanSkansholm"VgenatC"(sueco)quesignifica"TheRoadtoC",terceiraedio,Studentlitteratur,
2000,pgina3.ISBN9144014686.
11.Johnson,SCRitchie,DM(1978)."PortabilidadedeprogramasemCedoSistemaUNIX".BellSystemTech.J.57
(6):20212048.doi:10.1002/j.15387305.1978.tb02141.x.Retirado16dedeDezembrode2012.(Nota:esta
refernciaumadigitalizaoOCRdooriginalecontmumarepresentaodefalhadeOCR"IBM370"como"IBM
310".)
12.McIlroy,MD(1987).UmleitorResearchUnix:trechosanotadosdoProgrammerManual,19711986(PDF)
(Relatriotcnico).CSTR.BellLabs.P.10.139.
13.Stallings,William."SistemasOperacionais:InternosePrincpiosdeDesign",5edio,pgina91.Pearson
Education,Inc.2005.
14.Kernighan,BrianW.Ritchie,DennisM.(Marode1988).ALinguagemdeProgramaoC(2ed.).Englewood
Cliffs,NJ:PrenticeHall.ISBN0131103628.
15.Stroustrup,Bjarne(2002).Arivalidadeentreirmos:CeC++(PDF)(Relatrio).AT&TLabs.
16."JTC1/SC22/WG14C".Homepage.ISO/IEC.Retirado2deJunhode2011.
17.AndrewBinstock(12deoutubrode2011)."EntrevistacomHerbSutter".Dr.Dobbs.Retirado7deSetembrode,
2013.
18."18037TR:EmbutidoC"(PDF).ISO/IEC.Retirado26dedeJulhode2011.
19.Harbison,SamuelP.Steele,GuyL.(2002).C:UmManualdeReferncia(5ed.).EnglewoodCliffs,NJ:Prentice
Hall.ISBN013089592X.ContmumaBNFgramticaparaC.
20.Kernighan,BrianW.Ritchie,DennisM.(1996).ALinguagemdeProgramaoC(2ed.).PrenticeHall.P.192.
ISBN730202412X.
21.Page3doKoriginal&R[1]
22.ISO/IEC9899:201x(ISOC11)ComissoProjecto(http://www.openstd.org/jtc1/sc22/wg14/www/docs/n1548.pdf)
https://en.wikipedia.org/wiki/C_(programming_language) 16/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

23.Kernighan,BrianW.Ritchie,DennisM.(1996).ALinguagemdeProgramaoC(2ed.).PrenticeHall.pp.192,
259.ISBN730202412X.
24."10erroscomunsdeprogramaoemC++".Cs.ucr.edu.Retirado26dedeJunhode2009.
25.Schultz,Thomas(2004).Cea8051(3ed.).Otsego,MI:PageFreePublishingInc.p.20.ISBN158961237X.
Retirado10deFevereirode2012.
26.Page6doKoriginal&R[1]
27.Klemens,Ben(2013).21stCenturyC.O'ReillyMedia.ISBN1449327141.
28.Feuer,AlanR.Gehani,NarainH.(Maro1982)."ComparaodaslinguagensdeprogramaoCePascal".ACM
Computing.14(1):7392.doi:10,1145/356.869,356872.(subscrioexigida(ajuda)).
29.pgina122daK&R2[14]
30.Porexemplo,gccfornece_FORTIFY_SOURCE."Recursosdesegurana:CompilartempodebufferChecks
(FORTIFY_SOURCE)".fedoraproject.org.Retirado2012/08/05.
31.Raymond,EricS.(11Outubro1996).DicionrioTheNewHacker(3ed.).MITPressione.P.432.ISBN9780
262680929.Retirado5deAgostode2012.
32.Summit,Steve."comp.lang.cPerguntasFrequentes6,23".Obtido6deMarode,2013.
33.Summit,Steve."comp.lang.cPerguntasFrequentes7,28".Obtido6deMarode,2013.
34."ManPginadefiapos(SeoFreeBSD1)".unix.com.2001/05/24.Retirado2014/07/15.
35.McMillan,Robert(2013/08/01)."JavaestperdendoseuMojo?".Comfios.
36.SourcebookdoDr.Dobb.EUA:MillerFreeman,Inc.NovembroDezembrode1995.
37."UsandoCparaprogramaoCGI".Linuxjournal.com.01demarode2005.Retirado4deJaneirode2010.
38.Stroustrup,Bjarne(1993)."UmaHistriadeC++:19791991"(PDF).Retirado9deJunhode2011.

Fontes
Ritchie,DennisM.(1993).ODesenvolvimentodaLinguagemC.OsegundoACMSIGPLANHistoryof
ProgrammingLanguagesConference(HOPLII).Cambridge,MA,EUA2023abril,1993:ACM.Pp.
201208.doi:10,1145/154.766,155580.ISBN0897915704.Retirado2014/11/04.

Almdissoleitura
Banahan,M.Brady,D.Doran,M.(1991).OCReserve(2ed.).AddisonWesley.
King,KN(Abrilde2008).CProgramming:UmaAbordagemModerna(2ed.).Norton.ISBN9780
393979503.
Thompson,Ken."ANewCCompiler"(PDF).MurrayHill,NovaJersey:AT&TBellLaboratories.
Feuer,AlanR.(1998).OCPuzzleBook(1,revistaedimpresso.).AddisonWesley.ISBN9780201
604610.

Ligaesexternas
SiteoficialdoGrupodeTrabalhodaISOC(http://www.openstd.org/jtc1/sc22/wg14/)
Comp.lang.cPerguntasFreqentes(http://www.cfaq.com/)
ISO/IEC9899(http://www.openstd.org/JTC1/SC22/WG14/www/standards),documentosCoficiais
publicamentedisponveis,incluindooC99Fundamentao
"C99comrectificaesTcnicoTC1,TC2eTC3includo"(PDF).(3,61MB)
UmaHistriadeC(http://csapp.cs.cmu.edu/3e/docs/chistory.html),porDennisRitchie

Retiradode"https://en.wikipedia.org/w/index.php?title=C_(programming_language)&oldid=760173334"

Categorias: Invenesamericanas C(linguagemdeprogramao) FamliadelinguagemdeprogramaoC


Softwaremultiplataforma Linguagensdeprogramaodebaixonvel
Linguagensdeprogramaoprocessuais Linguagensdeprogramaocriadasem1972
LinguagensdeprogramaocomumpadroISO Linguagensdeprogramaotipadasestaticamente
Linguagensdeprogramaodesistemas

https://en.wikipedia.org/wiki/C_(programming_language) 17/18
15/01/2017 C(linguagemdeprogramao)Wikipdia,aenciclopdialivre

Estapginafoimodificadapelaltimavezem15dejaneirode2017,s11:37.
OtextoestdisponvelsobaLicenaCreativeCommonsAtribuioCompartilhamentopelamesma
Termosadicionaispodemseraplicados.Aoutilizarestesite,vocconcordacomosTermosdeUsoe
PolticadePrivacidade.WikipdiaumamarcacomercialregistradadaWikimediaFoundation,Inc.,
umaorganizaosemfinslucrativos.

https://en.wikipedia.org/wiki/C_(programming_language) 18/18

Vous aimerez peut-être aussi