Вы находитесь на странице: 1из 24

A

TRAINING REPORT
On

C LANGUAGE
Submitted in the practical fulfillment for the award of Degree of Bachelor of Technology In

DEPARTMENT OF ELECTRONICS & COMMUNICATION ENGINEERING

GLOBAL INSTITUTE OF TECHNOLOGY & MANAGEMENT

Submitted by Kamal jain 10 0!" ELECTRONICS & COMMUNICATION ENGINEERING M.D.U. UNIVERSITY, ROHTAK

CERTIFICATE
Thi# i# to certify that $%A&SD''( SI&)%* with +oll &o, 10 0 - of '.'/T+O&I/S 0 /O112&I/ATIO& '&I)I&''+I&) 3 rd 4ear5 ha# #ucce##fully completed the Summer Training for partial fulfillment of the re6uirement for the award of Bachelor of Technology Degree by the 1,D, 2ni7er#ity, Thi# report i# the record of authentic wor8 carried out by the #tudent during the academic year 39011 : 90195, %'AD O; D'(A+T1'&T

DECLARATION
I< $%A&SD''( SI&)%* with +oll &o, 10 0 -< of '.'/T+O&I/S 0 /O112&I/ATIO& '&I)I&''+I&) 3 rd 4ear5< hereby declare that thi# report i# the record of authentic wor8 carried out by me during the academic year 39011 : 90195 at &IIT< =ana8puri< &ew Delhi, Kamal jain

ACKNOWLEDGEMENT

An endea7or o7er long period can be #ucce##ful only with ad7ice and guidance of many well wi#her#, 1y #incere than8# to the management of )lobal In#titute of 1anagement 0 Technology< for pro7iding me the opportunity to conduct my project wor8, I whole heartedly e>pre## my than8# to< 1r,+O%IT .A1BA< trainer<&IIT .td, for #paring time to go through e7ery tiny detail and gi7e hi# 7aluable #ugge#tion# to ma8e thi# project and report a #ucce##, I would al#o li8e to than8 the #taff of ' 0 / Dept for their generou# guidance, .a#t but not the lea#t we would li8e to than8 our friend# and family for their help in e7ery way for the #ucce## of thi# project report,

ABSTRACT
(owerful feature#< #imple #ynta>< and portability ma8e / a preferred language among programmer# for bu#ine## and indu#trial application#. / language i# widely u#ed in the de7elopment of operating #y#tem#, AnOperating Sy#tem3OS5 i# a #oftware3collection of program#5 that control# the 7ariou# function# of a computer, Al#o it ma8e# other program# on your computer wor8, ;or e>ample< you cannot wor8 with a word proce##or program< #uch a# 1icro#oft ?ord< if there i# no operating #y#tem in#talled on your computer, ?indow#< 2ni>< .inu>< Solari#< and 1acOS are #ome of the popular operating #y#tem#,

TABLE OF CONTENTS 1.About I !t"tut"o 9,About / 9,1,De#ign 9,9,/haracter#tic# 9, ,%i#tory 9, ,1,'arly de7elopment 9, ,9,K0+ / 9, , ,A&SI / 0 ISO / 9, ,!,/-9, ,@,/11 9, ,",'mbedded / ,Synta> !,/haracter Set @,Keyword# ",Operator# A,Data Type# B,(ointer# -,Array# -,1 Array pointer interchangability 10,1emory management 11,.ibrarie# 19,.anguage tool# 1 ,2#e# 1!,Bibliography
@

@ @ @ " A B B B 10 19 19 1 1! 1! 1@ 1" 1" 1B

1.ABOUT INSTITUTION
&IIT i# a leading )lobal Talent De7elopment /orporation< building #8illed manpower pool for global indu#try re6uirement#, The company which wa# #et up in 1-B1< to help the na#cent IT indu#try o7ercome it# human re#ource challenge#< ha# today grown to be among#t worldC# leading talent de7elopment companie# offering learning #olution# to Indi7idual#< 'nterpri#e# and In#titution# acro## !0 countrie#, &IITC# training #olution# in IT< Bu#ine## (roce## Out#ourcing< Ban8ing< ;inance and In#urance< '>ecuti7e 1anagement 'ducation< and /ommunication and (rofe##ional .ife S8ill#< touch fi7e million learner# e7ery year, &IITC# e>perti#e in learning content de7elopment< training deli7ery and education proce## management ma8e it the mo#t preferred training partner< worldwide,

+e#earchDba#ed Inno7ation< a 8ey dri7er at &IIT< ha# enabled the organi#ation to de7elop program# and curricula that u#e cuttingDedge in#tructional de#ign methodologie# and training deli7ery, &IITC# Indi7idual .earning Bu#ine## offering# include indu#tryD endor#ed program# for #tudent# #ee8ing career# in IT : N#$ A%# GNIIT 3IndiaC# ;ir#t /loud /ampu#5< E&%#" ##'! and G(ob)( N#t P(u! for IT profe##ional#, &IIT ha# pro7ided computerDba#ed learning to o7er 1@<000 go7ernment and pri7ate #chool#, The futuri#tic &IIT NGu'u range for #chool# i# a holi#tic education pac8age that compri#e# Interacti7e /la##room# 3an embedded Teaching .earning 1aterial< that u#e# element# of interacti7ity< automation and web lin8# library5E M)t* ()b 3technology tool# that enable #chool #tudent# to learn and e>plore mathematical concept#5E IT W"+)'& 3e6uip# the #tudent# with core computer 8nowledge and IT #8ill#5E ,u"-. S-*oo( 3an 'ducation +e#ource (lanning #olution for #chool management5E and Mob"(# S-"# -# L)b 3the fir#t of it# 8ind portable computeriFed Science .aboratory which enable# #tudent# to correlate #cientific concept# taught in the cla## to real life5, To addre## the 7a#t population of under#er7ed< #choolDaged children< &IIT launched the %oleDinDtheD?all education initiati7e, It# achie7ement# in the area of 1inimally In7a#i7e "

'ducation earned &IIT the co7eted Digital Opportunity Award< by the ?orld Information Technology Ser7ice# Alliance 3?ITSA5 in 900B, ;or wor8ing profe##ional#< NIIT I/0#'")< /entre for Ad7anced .earning< offer# '>ecuti7e 1anagement 'ducation (rogram# in a##ociation with II1 Ahmadabad< II1 /alcutta< II1 .uc8now< I1T )haFiabad and II;T Delhi, &IIT Imperia al#o offer# #pecialiFed cour#e# in ;inance in a##ociation with K(1) and on Digital 1ar8eting with )oogle India and Internet and 1obile A##ociation of India 3IA1AI5, NIIT I !t"tut# o1 F" ) -# B) ." % & I !u') -# 2IFBI3< formed by &IIT with e6uity participation from I/I/I Ban8< offer# program# for indi7idual# and corporate# in Ban8ing< ;inancial Ser7ice# and In#urance, NIIT U "4u)< /entre for (roce## '>cellence< addre##e# the increa#ing demand for #8illed wor8er# in the bu#ine## and technology #er7ice# indu#try by pro7iding training program# in rele7ant area#, Thi# i# a part of &IIT In#titute of (roce## '>cellence< a &IITD )enpact 7enture, NIIT C)'##'!5C)/0u!< the companyC# In#titutional Alliance# Bu#ine## for college# and 2ni7er#itie#< deli7er# inDcampu# training through Synchronou# .earning Technology, NIIT6! Co'0o')t# L#)' " % So(ut"o !< &IITC# /orporate .earning Solution#< offer# integrated learning #olution# 3including #trategic con#ulting< learning de#ign< content de7elopment< deli7ery< technology< a##e##ment and learning management5 to ;ortune @00 companie#< 2ni7er#itie#< Technology companie#< Training corporation# and (ubli#hing hou#e#, NIIT Yu7) 89ot"< a joint 7enture between &IIT and &SD/< offer# 7ocational #8ill# training program# to enhance employability of youth acro## India, &IITC# inno7ati7e %+ practice# ha7e been felicitated by Ao H#$"tt a# among#t GTop 9@ Be#t 'mployer# in IndiaD 9011CE I &") E&u-)t"o A$)'&! :;11 a# GBe#t 'ducation /ompany to ?or8 withCE by G'#)t P()-#! to Wo'. I !t"tut# a# among#t GTop 9@ IndiaC# Be#t /ompanie# to ?or8 forC and ;ir#t in Training 0 'ducation Indu#try< 9011, The company ha# al#o been 7oted the #econd mo#t tru#ted education brand in India by Brand '6uity D &iel#en Sur7ey 9011, 2#hering in a new model in higher education i# the notDforDprofit NIIT U "7#'!"t9< e#tabli#hed in 900- with a 7i#ion of being the leading centre of inno7ation and learning in emerging area# of the Knowledge Society, &e#tled in the foothill# of Ara7ali< in &eemrana< +aja#than< the picture#6ue 100 acre# fully re#idential green campu# ha# been de7eloped a# an in#titute of e>cellence ba#ed on the four core principle# of pro7iding indu#try lin8ed< technology ba#ed< re#earch dri7en< #eamle## education,

:.ABOUT C
In computing< C i# a generalDpurpo#e programming language initially de7eloped by Denni# +itchie between 1-"- and 1-A at Bell .ab#, It# de#ign pro7ide# con#truct# that map efficiently to typical machine in#truction#< and therefore it found la#ting u#e in application# that had formerly been coded in a##embly language< mo#t notably #y#tem #oftware li8e the 2ni> computer operating #y#tem, / i# one of the mo#t widely u#ed programming language# of all time< and there are 7ery few computer architecture# for which a / compiler doe# not e>i#t, 1any later language# ha7e borrowed directly or indirectly from /< includingH /I< D< )o< =a7a< =a7aScript< .imbo< .(/< (erl< (%(< (ython< and 2ni>J# / Shell, The mo#t per7a#i7e influence on the#e language# ha# been #yntactical< and they tend to combine the recogniFable e>pre##ion and #tatement #ynta> of / with underlying type #y#tem# and data model# that can be radically different, /KK #tarted a# a preproce##or for / and i# currently nearly a #uper#et of /, Before there wa# an official #tandard for /< many u#er# and implementor# relied on an informal #pecification contained in a boo8 by +itchie and Brian KernighanE that 7er#ion i# generally referred to a# LK0+L /, In 1-B- the American &ational Standard# In#titute publi#hed a #tandard for / 3generally called LA&SI /L or L/B-L5, The ne>t year< the #ame #pecification wa# appro7ed by the International OrganiFation for StandardiFation a# an international #tandard 3generally called L/-0L5, ISO later relea#ed an e>ten#ion to the internationaliFation #upport of the #tandard in 1--@< and a re7i#ed #tandard 38nown a# L/--L5 in 1---, The current 7er#ion of the #tandard 3now 8nown a# L/11L5 wa# appro7ed in December of 9011, :.1.D#!"% / i# an imperati7e 3procedural5 language, It wa# de#igned to be compiled u#ing a relati7ely #traightforward compiler< to pro7ide lowDle7el acce## to memory< to pro7ide language con#truct# that map efficiently to machine in#truction#< and to re6uire minimal runDtime #upport, / wa# therefore u#eful for many application# that had formerly been coded in a##embly language< #uch a# in #y#tem programming, De#pite it# lowDle7el capabilitie#< the language wa# de#igned to encourage cro##Dplatform programming, A #tandard#Dcompliant and portably written / program can be compiled for a 7ery wide 7ariety of computer platform# and operating #y#tem# with few change# to it# #ource code, The language ha# become a7ailable on a 7ery wide range of platform#< from embedded microcontroller# to #upercomputer#,

:.:.C*)')-t#'"!t"-! .i8e mo#t imperati7e language# in the A.)O. tradition< / ha# facilitie# for #tructured programming and allow# le>ical 7ariable #cope and recur#ion< while a #tatic type #y#tem pre7ent# many unintended operation#, In /< all e>ecutable code i# contained within #ubroutine#< which are called Lfunction#L 3although not in the #trict #en#e of functional programming5, ;unction parameter# are alway# pa##ed by 7alue, (a##DbyDreference i# #imulated in / by e>plicitly pa##ing pointer 7alue#, / program #ource te>t i# freeDformat< u#ing the #emicolon a# a #tatement terminator and curly brace# for grouping bloc8# of #tatement#, The / language al#o e>hibit# the following more #pecific characteri#tic#H

There are a #mall< fi>ed number of 8eyword#< including a full #et of flow of control primiti7e#H for< if< while< #witch< and do,,while, There i# ba#ically one name#pace< and u#erDdefined name# are not di#tingui#hed from 8eyword# by any 8ind of #igil, There are a large number of arithmetical and logical operator#< #uch a# K< KM< KK< 0< N< etc, 1ore than one a##ignment may be performed in a #ingle #tatement, ;unction return 7alue# can be ignored when not needed, Typing i# #tatic< but wea8ly enforcedH all data ha# a type< but implicit con7er#ion# can be performedE for in#tance< character# can be u#ed a# integer#, Declaration #ynta> mimic# u#age conte>t, / ha# no LdefineL 8eywordE in#tead< a #tatement beginning with the name of a type i# ta8en a# a declaration, There i# no LfunctionL 8eywordE in#tead< a function i# indicated by the parenthe#e# of an argument li#t, 2#erDdefined 3typedef5 and compound type# are po##ible, o %eterogeneou# aggregate data type# 3#truct5 allow related data element# to be acce##ed< for e>ample a##igned< a# a unit, o Array inde>ing i# a #econdary notion< defined in term# of pointer arithmetic, 2nli8e #truct#< array# are not fir#tDcla## object#E they cannot be a##igned or compared u#ing #ingle builtDin operator#, There i# no LarrayL 8eyword< in u#e or definitionE in#tead< #6uare brac8et# indicate array# #yntactically< e,g, month, o 'numerated type# are po##ible with the enum 8eyword, They are not tagged< and are freely intercon7ertible with integer#, o String# are not a #eparate data type< but are con7entionally implemented a# nullDterminated array# of character#, .owDle7el acce## to computer memory i# po##ible by con7erting machine addre##e# to typed pointer#, (rocedure# 3#ubroutine# not returning 7alue#5 are a #pecial ca#e of function< with a dummy return type 7oid, ;unction# may not be defined within the le>ical #cope of other function#, -

;unction and data pointer# permit ad hoc runDtime polymorphi#m, A preproce##or perform# macro definition< #ource code file inclu#ion< and conditional compilation, There i# a ba#ic form of modularityH file# can be compiled #eparately and lin8ed together< with control o7er which function# and data object# are 7i#ible to other file# 7ia #tatic and e>tern attribute#, /omple> functionality #uch a# IOO< #tring manipulation< and mathematical function# are con#i#tently delegated to library routine#,

/ doe# not include #ome feature# found in newer< more modern highDle7el language#< including object orientation and garbage collection,

:.<H"!to'9
:.<.1.E)'(9 &#7#(o0/# t! Ken Thomp#on and Denni# +itchie The initial de7elopment of / occurred at AT0T Bell .ab# between 1-"- and 1-A E according to +itchie< the mo#t creati7e period occurred in 1-A9, It wa# named L/L becau#e it# feature# were deri7ed from an earlier language called LBL< which according to Ken Thomp#on wa# a #trippedDdown 7er#ion of the B/(. programming language, The origin of / i# clo#ely tied to the de7elopment of the 2ni> operating #y#tem< originally implemented in a##embly language on a (D(DA by +itchie and Thomp#on< incorporating #e7eral idea# from colleague#, '7entually they decided to port the operating #y#tem to a (D(D11, BJ# inability to ta8e ad7antage of #ome of the (D(D11J# feature#< notably byte addre##ability< led to the de7elopment of an early 7er#ion of /, The original (D(D11 7er#ion of the 2ni> #y#tem wa# de7eloped in a##embly language, By 1-A < with the addition of #truct type#< the / language had become powerful enough that mo#t of the 2ni> 8ernel wa# rewritten in /, Thi# wa# one of the fir#t operating #y#tem 8ernel# implemented in a language other than a##embly, 3'arlier in#tance# include the 1ultic# #y#tem 3written in (.OI5< and 1/( 31a#ter /ontrol (rogram5 for the Burrough# B@000 written in A.)O. in 1-"1,5 :.<.:.K&R C In 1-AB< Brian Kernighan and Denni# +itchie publi#hed the fir#t edition of The C Programming Language, Thi# boo8< 8nown to / programmer# a# LK0+L< #er7ed for many year# a# an informal #pecification of the language, The 7er#ion of / that it de#cribe# i# commonly referred to a# K&R C, The #econd edition of the boo8 co7er# the later A&SI / #tandard, K0+ introduced #e7eral language feature#H

10

#tandard IOO library long int data type un#igned int data type compound a##ignment operator# of the form Mop 3#uch a# MD5 were changed to the form opM to remo7e the #emantic ambiguity created by #uch con#truct# a# iMD10< which had been interpreted a# i MD 10 in#tead of the po##ibly intended i M D10

'7en after the publication of the 1-B- / #tandard< for many year# K0+ / wa# #till con#idered the Llowe#t common denominatorL to which / programmer# re#tricted them#el7e# when ma>imum portability wa# de#ired< #ince many older compiler# were #till in u#e< and becau#e carefully written K0+ / code can be legal Standard / a# well, In early 7er#ion# of /< only function# that returned a nonDint 7alue needed to be declared if u#ed before the function definitionE a function u#ed without any pre7iou# declaration wa# a##umed to return type int< if it# 7alue wa# u#ed, ;or e>ampleH long #omePfunction35E OQ int QO otherPfunction35E OQ int QO callingPfunction35 R long te#t1E regi#ter OQ int QO te#t9E te#t1 M #omePfunction35E if 3te#t1 S 05 te#t9 M 0E el#e te#t9 M otherPfunction35E return te#t9E T The int type #pecifier# which are commented out could be omitted in K0+ /< but are re6uired in later #tandard#, Since K0+ function declaration# did not include any information about function argument#< function parameter type chec8# were not performed< although #ome compiler# would i##ue a warning me##age if a local function wa# called with the wrong number of argument#< or if multiple call# to an e>ternal function u#ed different number# or type# of argument#, Separate tool# #uch a# 2ni>J# lint utility were de7eloped that 3among other thing#5 could chec8 for con#i#tency of function u#e acro## multiple #ource file#,

11

In the year# following the publication of K0+ /< #e7eral unofficial feature# were added to the language< #upported by compiler# from AT0T and #ome other 7endor#, The#e includedH

7oid function# 3i,e, function# with no return 7alue5 function# returning #truct or union type# 3rather than pointer#5 a##ignment for #truct data type# enumerated type#

The large number of e>ten#ion# and lac8 of agreement on a #tandard library< together with the language popularity and the fact that not e7en the 2ni> compiler# preci#ely implemented the K0+ #pecification< led to the nece##ity of #tandardiFation, :.<.<.ANSI C ) & ISO C During the late 1-A0# and 1-B0#< 7er#ion# of / were implemented for a wide 7ariety of mainframe computer#< minicomputer#< and microcomputer#< including the IB1 (/< a# it# popularity began to increa#e #ignificantly, In 1-B < the American &ational Standard# In#titute 3A&SI5 formed a committee< U =11< to e#tabli#h a #tandard #pecification of /, U =11 ba#ed the / #tandard on the 2ni> implementationE howe7er< the nonDportable portion of the 2ni> / library wa# handed off to the I''' wor8ing group 100 to become the ba#i# for the 1-BB (OSIU #tandard, In 1-B-< the / #tandard wa# ratified a# A&SI U ,1@-D1-B- L(rogramming .anguage /L, Thi# 7er#ion of the language i# often referred to a# A&SI /< Standard /< or #ometime# /B-, In 1--0< the A&SI / #tandard 3with formatting change#5 wa# adopted by the International OrganiFation for StandardiFation 3ISO5 a# ISOOI'/ -B--H1--0< which i# #ometime# called /-0, Therefore< the term# L/B-L and L/-0L refer to the #ame programming language, A&SI< li8e other national #tandard# bodie#< no longer de7elop# the / #tandard independently< but defer# to the international / #tandard< maintained by the wor8ing group ISOOI'/ =T/1OS/99O?)1!, &ational adoption of an update to the international #tandard typically occur# within a year of ISO publication, One of the aim# of the / #tandardiFation proce## wa# to produce a #uper#et of K0+ /< incorporating many of the unofficial feature# #ub#e6uently introduced, The #tandard# committee al#o included #e7eral additional feature# #uch a# function prototype# 3borrowed from /KK5< 7oid pointer#< #upport for international character #et# and locale#< and preproce##or enhancement#, Although the #ynta> for parameter declaration# wa# augmented to include the #tyle u#ed in /KK< the K0+ interface continued to be permitted< for compatibility with e>i#ting #ource code,

19

/B- i# #upported by current / compiler#< and mo#t / code being written today i# ba#ed on it, Any program written only in Standard / and without any hardwareDdependent a##umption# will run correctly on any platform with a conforming / implementation< within it# re#ource limit#, ?ithout #uch precaution#< program# may compile only on a certain platform or with a particular compiler< due< for e>ample< to the u#e of nonD #tandard librarie#< #uch a# )2I librarie#< or to a reliance on compilerD or platformD#pecific attribute# #uch a# the e>act #iFe of data type# and byte endianne##, In ca#e# where code mu#t be compilable by either #tandardDconforming or K0+ /Dba#ed compiler#< the PPSTD/PP macro can be u#ed to #plit the code into Standard and K0+ #ection# to pre7ent the u#e on a K0+ /Dba#ed compiler of feature# a7ailable only in Standard /, :.<.=.C>> After the A&SIOISO #tandardiFation proce##< the / language #pecification remained relati7ely #tatic for #e7eral year#, In 1--@ &ormati7e Amendment 1 to the 1--0 / #tandard wa# publi#hed< to correct #ome detail# and to add more e>ten#i7e #upport for international character #et#, The / #tandard wa# further re7i#ed in the late 1--0#< leading to the publication of ISOOI'/ -B--H1--- in 1---< which i# commonly referred to a# L/--L, It ha# #ince been amended three time# by Technical /orrigenda, /-- introduced #e7eral new feature#< including inline function#< #e7eral new data type# 3including long long int and a comple> type to repre#ent comple> number#5< 7ariableD length array#< impro7ed #upport for I''' A@! floating point< #upport for 7ariadic macro# 3macro# of 7ariable arity5< and #upport for oneDline comment# beginning with OO< a# in B/(. or /KK, 1any of the#e had already been implemented a# e>ten#ion# in #e7eral / compiler#, /-- i# for the mo#t part bac8ward compatible with /-0< but i# #tricter in #ome way#E in particular< a declaration that lac8# a type #pecifier no longer ha# int implicitly a##umed, A #tandard macro PPSTD/PV'+SIO&PP i# defined with 7alue 1---01. to indicate that /-- #upport i# a7ailable, )//< Solari# Studio< and other / compiler# now #upport many or all of the new feature# of /--, :.<.?.C11 In 900A< wor8 began on another re7i#ion of the / #tandard< informally called L/1UL until it# official publication on 9011D19D0B, The / #tandard# committee adopted guideline# to limit the adoption of new feature# that had not been te#ted by e>i#ting implementation#, The /11 #tandard add# numerou# new feature# to / and the library< including type generic macro#< anonymou# #tructure#< impro7ed 2nicode #upport< atomic operation#< multiDthreading< and bound#Dchec8ed function#, It al#o ma8e# #ome portion# of the e>i#ting /-- library optional< and impro7e# compatibility with /KK,

:.<.@.E/b#&&#& C %i#torically< embedded / programming re6uire# non#tandard e>ten#ion# to the / language in order to #upport e>otic feature# #uch a# fi>edDpoint arithmetic< multiple di#tinct memory ban8#< and ba#ic IOO operation#, In 900B< the / Standard# /ommittee publi#hed a technical report e>tending the / language to addre## the#e i##ue# by pro7iding a common #tandard for all implementation# to adhere to, It include# a number of feature# not a7ailable in normal /< #uch a# fi>edD point arithmetic< named addre## #pace#< and ba#ic IOO hardware addre##ing, <.S9 t)A / ha# a formal grammar #pecified by the / #tandard, 2nli8e language# #uch a# ;O+T+A& AA< / #ource code i# freeDform which allow# arbitrary u#e of white#pace to format code< rather than columnDba#ed or te>tDlineDba#ed re#triction#, /omment# may appear either between the delimiter# OQ and QO< or 3#ince /--5 following OO until the end of the line, / #ource file# contain declaration# and function definition#, ;unction definition#< in turn< contain declaration# and #tatement#, Declaration# either define new type# u#ing 8eyword# #uch a# #truct< union< and enum< or a##ign type# to and perhap# re#er7e #torage for new 7ariable#< u#ually by writing the type followed by the 7ariable name, Keyword# #uch a# char and int #pecify builtDin type#, Section# of code are enclo#ed in brace# 3R and T< #ometime# called Lcurly brac8et#L5 to limit the #cope of declaration# and to act a# a #ingle #tatement for control #tructure#, A# an imperati7e language< / u#e# statements to #pecify action#, The mo#t common #tatement i# an expression statement< con#i#ting of an e>pre##ion to be e7aluated< followed by a #emicolonE a# a #ide effect of the e7aluation< function# may be called and 7ariable# may be a##igned new 7alue#, To modify the normal #e6uential e>ecution of #tatement#< / pro7ide# #e7eral controlDflow #tatement# identified by re#er7ed 8eyword#, Structured programming i# #upported by if3Del#e5 conditional e>ecution and by doDwhile< while< and for iterati7e e>ecution 3looping5, The for #tatement ha# #eparate initialiFation< te#ting< and reinitialiFation e>pre##ion#< any or all of which can be omitted, brea8 and continue can be u#ed to lea7e the innermo#t enclo#ing loop #tatement or #8ip to it# reinitialiFation, There i# al#o a nonD#tructured goto #tatement which branche# directly to the de#ignated label within the function, #witch #elect# a ca#e to be e>ecuted ba#ed on the 7alue of an integer e>pre##ion, '>pre##ion# can u#e a 7ariety of builtDin operator# 3#ee below5 and may contain function call#, The order in which argument# to function# and operand# to mo#t operator# are e7aluated i# un#pecified, The e7aluation# may e7en be interlea7ed, %owe7er< all #ide effect# 3including #torage to 7ariable#5 will occur before the ne>t L#e6uence pointLE #e6uence point# include the end of each e>pre##ion #tatement< and the entry to and return from each function call, Se6uence point# al#o occur during e7aluation of e>pre##ion# 1!

containing certain operator# 300< WW< XH and the comma operator5, Thi# permit# a high degree of object code optimiFation by the compiler< but re6uire# / programmer# to ta8e more care to obtain reliable re#ult# than i# needed for other programming language#, Kernighan and +itchie #ay in the Introduction of The C Programming LanguageH L/< li8e any other language< ha# it# blemi#he#, Some of the operator# ha7e the wrong precedenceE #ome part# of the #ynta> could be better,L The / #tandard did not attempt to correct many of the#e blemi#he#< becau#e of the impact of #uch change# on already e>i#ting #oftware, !,/haracter #et The ba#ic / #ource character #et include# the following character#H

.etter#H a:F< A:Y< P Digit#H 0:(unctuationH N Z [ I \ ] 0 Q 3 5 D K M H E L J ^ S < , X W O _ R T ` a ?hite#pace character#H space< horizontal tab< vertical tab< form feed< newline

&ewline indicate# the end of a te>t lineE it need not corre#pond to an actual #ingle character< although for con7enience / treat# it a# one, Additional multibyte encoded character# may be u#ed< but are not portable, The late#t / #tandard 3/115 allow# multinational 2nicode character# to be embedded portably within / #ource te>t by u#ing a _uDDDD encoding 3where DDDD denote# a 2nicode character code5< although thi# feature i# not yet widely implemented, The ba#ic / e>ecution character #et contain# the #ame character#< along with repre#entation# for alert< bac8#pace< and carriage return, +unDtime #upport for e>tended character #et# ha# increa#ed with each re7i#ion of the / #tandard, ?..K#9$o'&! /B- ha# 9 8eyword# 3re#er7ed word# with #pecial meaning5H auto brea8 ca#e char con#t continue default do double el#e enum e>tern float for goto if int long regi#ter return #hort #igned #iFeof #tatic #truct #witch typedef union un#igned 7oid 7olatile while

/-- add# fi7e more 8eyword#H PBool PImaginary +estrict 1@

P/omple>

inline

/11 add# #e7en more 8eyword#H PAligna# PAlignof PAtomic P)eneric P&oreturn PStaticPa##ert PThreadPlocal

1o#t of the recently added 8eyword# begin with an under#core followed by a capital letter< becau#e identifier# of that form were pre7iou#ly re#er7ed by the / #tandard for u#e only by implementation#, Since e>i#ting program #ource code #hould not ha7e been u#ing the#e identifier#< it would not be affected when / implementation# #tarted #upporting the#e e>ten#ion# to the programming language, ",Operator# / #upport# a rich #et of operator#< which are #ymbol# u#ed within an e>pre##ion to #pecify the manipulation# to be performed while e7aluating that e>pre##ion, / ha# operator# forH

arithmeticH K< D< Q< O< \ a##ignmentH M augmented a##ignmentH KM< DM< QM< OM< \M< 0M< WM< ]M< ^^M< SSM bitwi#e logicH N< 0< W< ] bitwi#e #hift#H ^^< SS boolean logicH Z< 00< WW conditional e7aluationH X H e6uality te#tingH MM< ZM calling function#H 3 5 increment and decrementH KK< DD member #electionH ,< DS object #iFeH #iFeof order relation#H ^< ^M< S< SM reference and dereferenceH 0< Q< ` a #e6uencingH < #ube>pre##ion groupingH 3 5 type con7er#ionH 3typename)

/ u#e# the M operator< re#er7ed in mathematic# to e>pre## e6uality< to indicate a##ignment< following the precedent of ;ortran and (.OI< but unli8e A.)O. and it# deri7ati7e#, The #imilarity between /J# operator for a##ignment and that for e6uality 3MM5 ha# been critici#ed a# it ma8e# it ea#y to accidentally #ub#titute one for the other, In many ca#e#< each may be u#ed in the conte>t of the other without a compilation error 3although #ome compiler# produce warning#5, ;or e>ample< the conditional e>pre##ion in if3aMbK15 i# true if a i# not Fero after the a##ignment,`1"a Additionally< /J# operator precedence i# nonDintuiti7e< #uch a# MM binding more tightly than 0 and W in e>pre##ion# li8e > 0 1 MM 0< which would need to be written 3> 0 15 MM 0 to be properly e7aluated, 1"

BH#((o, $o'(&B #A)/0(# The Lhello< worldL e>ample< which appeared in the fir#t edition of K0+< ha# become the model for an introductory program in mo#t programming te>tboo8#< regardle## of programming language, The program print# Lhello< worldL to the #tandard output< which i# u#ually a terminal or #creen di#play, The original 7er#ion wa#H main35 R printf3Lhello< world_nL5E T A #tandardDconforming Lhello< worldL program i#H Iinclude ^#tdio,hS int main37oid5 R printf3Lhello< world_nL5E return 0E T The fir#t line of the program contain# a preproce##ing directi7e< indicated by Iinclude, Thi# cau#e# the compiler to replace that line with the entire te>t of the #tdio,h #tandard header< which contain# declaration# for #tandard input and output function# #uch a# printf, The angle brac8et# #urrounding #tdio,h indicate that #tdio,h i# located u#ing a #earch #trategy that prefer# #tandard header# to other header# ha7ing the #ame name, 3Double 6uote# are u#ed to include local or projectD#pecific header file#,5 The ne>t line indicate# that a function named main i# being defined, The main function #er7e# a #pecial purpo#e in / program#E the runDtime en7ironment call# the main function to begin program e>ecution, The type #pecifier int indicate# that the 7alue that i# returned to the in7o8er 3in thi# ca#e the runDtime en7ironment5 a# a re#ult of e7aluating the main function< i# an integer, The 8eyword 7oid a# a parameter li#t indicate# that thi# function ta8e# no argument#, The opening curly brace indicate# the beginning of the definition of the main function, The ne>t line calls 3di7ert# e>ecution to5 a function named printf< which i# #upplied from a #y#tem library, In thi# call< the printf function i# passed 3pro7ided with5 a #ingle argument< the addre## of the fir#t character in the #tring literal Lhello< world_nL, The #tring literal i# an unnamed array with element# of type char< #et up automatically by the compiler with a final 0D7alued character to mar8 the end of the array 3printf need# to 8now thi#5, The _n i# an escape se uence that / tran#late# to a newline character< which 1A

on output #ignifie# the end of the current line, The return 7alue of the printf function i# of type int< but it i# #ilently di#carded #ince it i# not u#ed, 3A more careful program might te#t the return 7alue to determine whether or not the printf function #ucceeded,5 The #emicolon E terminate# the #tatement, The return #tatement terminate# the e>ecution of the main function and cau#e# it to return the integer 7alue 0< which i# interpreted by the runDtime #y#tem a# an e>it code indicating #ucce##ful e>ecution, The clo#ing curly brace indicate# the end of the code for the main function, C.D)t) t90#! / ha# a #tatic wea8 typing type #y#tem that #hare# #ome #imilaritie# with that of other A.)O. de#cendant# #uch a# (a#cal, There are builtDin type# for integer# of 7ariou# #iFe#< both #igned and un#igned< floatingDpoint number#< character#< and enumerated type# 3enum5, /-- added a boolean datatype, There are al#o deri7ed type# including array#< pointer#< record# 3#truct5< and untagged union# 3union5, / i# often u#ed in lowDle7el #y#tem# programming where e#cape# from the type #y#tem may be nece##ary, The compiler attempt# to en#ure type correctne## of mo#t e>pre##ion#< but the programmer can o7erride the chec8# in 7ariou# way#< either by u#ing a t!pe cast to e>plicitly con7ert a 7alue from one type to another< or by u#ing pointer# or union# to reinterpret the underlying bit# of a data object in #ome other way, Some find /J# declaration #ynta> unintuiti7e< particularly for function pointer#, 3+itchieJ# idea wa# to declare identifier# in conte>t# re#embling their u#eH Ldeclaration reflect# u#eL,5 /J# usual arithmetic conversions allow for efficient code to be generated< but can #ometime# produce une>pected re#ult#, ;or e>ample< a compari#on of #igned and un#igned integer# of e6ual width re6uire# a con7er#ion of the #igned 7alue to un#igned, Thi# can generate une>pected re#ult# if the #igned 7alue i# negati7e, D.Po" t#'! / #upport# the u#e of pointer#< a type of reference that record# the addre## or location of an object or function in memory, (ointer# can be dereferenced to acce## data #tored at the addre## pointed to< or to in7o8e a pointedDto function, (ointer# can be manipulated u#ing a##ignment or pointer arithmetic, The runDtime repre#entation of a pointer 7alue i# typically a raw memory addre## 3perhap# augmented by an off#etDwithinDword field5< but #ince a pointerJ# type include# the type of the thing pointed to< e>pre##ion# including pointer# can be typeDchec8ed at compile time, (ointer arithmetic i# automatically #caled by the #iFe of the pointedDto data type, 3See ArrayDpointer interchangeability below,5 (ointer# are u#ed for many different purpo#e# in /, Te>t #tring# are commonly manipulated u#ing pointer# into array# of character#, Dynamic memory allocation i# 1B

performed u#ing pointer#, 1any data type#< #uch a# tree#< are commonly implemented a# dynamically allocated #truct object# lin8ed together u#ing pointer#, (ointer# to function# are u#eful for pa##ing function# a# argument# to higherDorder function# 3#uch a# 6#ort or b#earch5 or a# callbac8# to be in7o8ed by e7ent handler#, A null pointer value e>plicitly point# to no 7alid location, Dereferencing a null pointer 7alue i# undefined< often re#ulting in a #egmentation fault, &ull pointer 7alue# are u#eful for indicating #pecial ca#e# #uch a# no Lne>tL pointer in the final node of a lin8ed li#t< or a# an error indication from function# returning pointer#, In appropriate conte>t# in #ource code< #uch a# for a##igning to a pointer 7ariable< a null pointer constant can be written a# 0< with or without e>plicit ca#ting to a pointer type< or a# the &2.. macro defined by #e7eral #tandard header#, In conditional conte>t#< null pointer 7alue# e7aluate to fal#e< while all other pointer 7alue# e7aluate to true, Void pointer# 37oid Q5 point to object# of un#pecified type< and can therefore be u#ed a# LgenericL data pointer#, Since the #iFe and type of the pointedDto object i# not 8nown< 7oid pointer# cannot be dereferenced< nor i# pointer arithmetic on them allowed< although they can ea#ily be 3and in many conte>t# implicitly are5 con7erted to and from any other object pointer type, /arele## u#e of pointer# i# potentially dangerou#, Becau#e they are typically unchec8ed< a pointer 7ariable can be made to point to any arbitrary location< which can cau#e unde#irable effect#, Although properly u#ed pointer# point to #afe place#< they can be made to point to un#afe place# by u#ing in7alid pointer arithmeticE the object# they point to may be deallocated and reu#ed 3dangling pointer#5E they may be u#ed without ha7ing been initialiFed 3wild pointer#5E or they may be directly a##igned an un#afe 7alue u#ing a ca#t< union< or through another corrupt pointer, In general< / i# permi##i7e in allowing manipulation of and con7er#ion between pointer type#< although compiler# typically pro7ide option# for 7ariou# le7el# of chec8ing, Some other programming language# addre## the#e problem# by u#ing more re#tricti7e reference type#, >.A'')9! Array type# in / are traditionally of a fi>ed< #tatic #iFe #pecified at compile time, 3The more recent /-- #tandard al#o allow# a form of 7ariableDlength array#,5 %owe7er< it i# al#o po##ible to allocate a bloc8 of memory 3of arbitrary #iFe5 at runDtime< u#ing the #tandard libraryJ# malloc function< and treat it a# an array, /J# unification of array# and pointer# 3#ee below5 mean# that declared array# and the#e dynamically allocated #imulated array# are 7irtually interchangeable, Since array# are alway# acce##ed 3in effect5 7ia pointer#< array acce##e# are typically not chec8ed again#t the underlying array #iFe< although #ome compiler# may pro7ide bound# chec8ing a# an option, Array bound# 7iolation# are therefore po##ible and rather common in carele##ly written code< and can lead to 7ariou# repercu##ion#< including illegal memory acce##e#< corruption of data< buffer o7errun#< and runDtime e>ception#, If bound# chec8ing i# de#ired< it mu#t be done manually, 1-

/ doe# not ha7e a #pecial pro7i#ion for declaring multidimen#ional array#< but rather relie# on recur#ion within the type #y#tem to declare array# of array#< which effecti7ely accompli#he# the #ame thing, The inde> 7alue# of the re#ulting Lmultidimen#ional arrayL can be thought of a# increa#ing in rowDmajor order, 1ultidimen#ional array# are commonly u#ed in numerical algorithm# 3mainly from applied linear algebra5 to #tore matrice#, The #tructure of the / array i# well #uited to thi# particular ta#8, %owe7er< #ince array# are pa##ed merely a# pointer#< the bound# of the array mu#t be 8nown fi>ed 7alue# or el#e e>plicitly pa##ed to any #ubroutine that re6uire# them< and dynamically #iFed array# of array# cannot be acce##ed u#ing double inde>ing, 3A wor8around for thi# i# to allocate the array with an additional Lrow 7ectorL of pointer# to the column#,5 /-- introduced L7ariableDlength array#L which addre## #ome< but not all< of the i##ue# with ordinary / array#, See al#oH / #tring >.1.A'')9E0o" t#' " t#'-*) %#)b"("t9 The L#ub#criptL notation >`ia 3where > de#ignate# a pointer5 i# a #yntactic #ugar for Q3>Ki5, Ta8ing ad7antage of the compilerJ# 8nowledge of the pointer type< the addre## that > K i point# to i# not the ba#e addre## 3pointed to by >5 incremented by i b!tes" but rather i# defined to be the ba#e addre## incremented by i multiplied b! the size of an element that > point# to, ;urthermore< in mo#t e>pre##ion conte>t# 3a notable e>ception i# a# operand of #iFeof5< the name of an array i# automatically con7erted to a pointer to the arrayJ# fir#t elementE thu# for an array declared with the name A< A`ia de#ignate# the iK1th element of the array, Thi# al#o implie# that an array i# ne7er copied a# a whole when named a# an argument to a function< but rather only the addre## of it# fir#t element i# pa##ed, Therefore< although function call# in / u#e pa##DbyD7alue #emantic#< array# are in effect pa##ed by reference, The #iFe of an element can be determined by applying the operator #iFeof to any dereferenced element of >< a# in n M #iFeof Q> or n M #iFeof >`0a< and the number of element# in a declared array A can be determined a# #iFeof A O #iFeof A`0a, De#pite thi# apparent e6ui7alence between array and pointer 7ariable#< there i# #till a di#tinction to be made between them, '7en though the name of an array i#< in mo#t e>pre##ion conte>t#< con7erted into a pointer 3to it# fir#t element5< thi# pointer doe# not it#elf occupy any #torage< unli8e a pointer 7ariable, /on#e6uently< what an array Lpoint# toL cannot be changed< and it i# impo##ible to a##ign a 7alue to an array variable, 3Array content# may be copied< howe7er< by u#ing the memcpy function< or by acce##ing the indi7idual element#,5

90

1;.M#/o'9 /) )%#/# t One of the mo#t important function# of a programming language i# to pro7ide facilitie# for managing memory and the object# that are #tored in memory, / pro7ide# three di#tinct way# to allocate memory for object#H

Static memory allocationH #pace for the object i# pro7ided in the binary at compileDtimeE the#e object# ha7e an e>tent 3or lifetime5 a# long a# the binary which contain# them i# loaded into memory, Automatic memory allocationH temporary object# can be #tored on the #tac8< and thi# #pace i# automatically freed and reu#able after the bloc8 in which they are declared i# e>ited, Dynamic memory allocationH bloc8# of memory of arbitrary #iFe can be re6ue#ted at runDtime u#ing library function# #uch a# malloc from a region of memory called the heapE the#e bloc8# per#i#t until #ub#e6uently freed for reu#e by calling the library function realloc or free

The#e three approache# are appropriate in different #ituation# and ha7e 7ariou# tradeoff#, ;or e>ample< #tatic memory allocation ha# little allocation o7erhead< automatic allocation may in7ol7e #lightly more o7erhead< and dynamic memory allocation can potentially ha7e a great deal of o7erhead for both allocation and deallocation, The per#i#tent nature of #tatic object# i# u#eful for maintaining #tate information acro## function call#< automatic allocation i# ea#y to u#e but #tac8 #pace i# typically much more limited and tran#ient than either #tatic memory or heap #pace< and dynamic memory allocation allow# con7enient allocation of object# who#e #iFe i# 8nown only at runDtime, 1o#t / program# ma8e e>ten#i7e u#e of all three, ?here po##ible< automatic or #tatic allocation i# u#ually #imple#t becau#e the #torage i# managed by the compiler< freeing the programmer of the potentially errorDprone chore of manually allocating and relea#ing #torage, %owe7er< many data #tructure# can change in #iFe at runtime< and #ince #tatic allocation# 3and automatic allocation# before /--5 mu#t ha7e a fi>ed #iFe at compileDtime< there are many #ituation# in which dynamic allocation i# nece##ary, (rior to the /-- #tandard< 7ariableD#iFed array# were a common e>ample of thi#, 3See the article on malloc for an e>ample of dynamically allocated array#,5 2nli8e automatic allocation< which can fail at run time with uncontrolled con#e6uence#< the dynamic allocation function# return an indication 3in the form of a null pointer 7alue5 when the re6uired #torage cannot be allocated, 3Static allocation that i# too large i# u#ually detected by the lin8er or loader< before the program can e7en begin e>ecution,5 2nle## otherwi#e #pecified< #tatic object# contain Fero or null pointer 7alue# upon program #tartup, Automatically and dynamically allocated object# are initialiFed only if an initial 7alue i# e>plicitly #pecifiedE otherwi#e they initially ha7e indeterminate 7alue# 3typically< whate7er bit pattern happen# to be pre#ent in the #torage< which might not e7en repre#ent a 7alid 7alue for that type5, If the program attempt# to acce## an uninitialiFed 7alue< the re#ult# are undefined, 1any modern compiler# try to detect and warn about thi# problem< but both fal#e po#iti7e# and fal#e negati7e# can occur, 91

Another i##ue i# that heap memory allocation ha# to be #ynchroniFed with it# actual u#age in any program in order for it to be reu#ed a# much a# po##ible, ;or e>ample< if the only pointer to a heap memory allocation goe# out of #cope or ha# it# 7alue o7erwritten before free35 i# called< then that memory cannot be reco7ered for later reu#e and i# e##entially lo#t to the program< a phenomenon 8nown a# a memor! lea#$ /on7er#ely< it i# po##ible for memory to be freed but continue to be referenced< leading to unpredictable re#ult#, Typically< the #ymptom# will appear in a portion of the program far remo7ed from the actual error< ma8ing it difficult to trac8 down the problem, 3Such i##ue# are ameliorated in language# with automatic garbage collection,5 11,.ibrarie# The / programming language u#e# librarie# a# it# primary method of e>ten#ion, In /< a library i# a #et of function# contained within a #ingle Larchi7eL file, 'ach library typically ha# a header file< which contain# the prototype# of the function# contained within the library that may be u#ed by a program< and declaration# of #pecial data type# and macro #ymbol# u#ed with the#e function#, In order for a program to u#e a library< it mu#t include the libraryJ# header file< and the library mu#t be lin8ed with the program< which in many ca#e# re6uire# compiler flag# 3e,g,< Dlm< #horthand for Lmath libraryL5, The mo#t common / library i# the / #tandard library< which i# #pecified by the ISO and A&SI / #tandard# and come# with e7ery / implementation, 3$;ree#tanding* / implementation#< which target embedded #y#tem#< may pro7ide only a #ub#et of the #tandard library,5 Thi# library #upport# #tream input and output< memory allocation< mathematic#< character #tring#< and time 7alue#, Se7eral #eparate #tandard header# 3for e>ample< #tdio,h5 #pecify the interface# for the#e and other #tandard library facilitie#, Another common #et of / library function# are tho#e u#ed by application# #pecifically targeted for 2ni> and 2ni>Dli8e #y#tem#< e#pecially function# which pro7ide an interface to the 8ernel, The#e function# are detailed in 7ariou# #tandard# #uch a# (OSIU and the Single 2&IU Specification, Since many program# ha7e been written in /< there are a wide 7ariety of other librarie# a7ailable, .ibrarie# are often written in / becau#e / compiler# generate efficient object codeE programmer# then create interface# to the library #o that the routine# can be u#ed from higherDle7el language# li8e =a7a< (erl< and (ython, 1:.L) %u)%# too(! Tool# ha7e been created to help / programmer# a7oid #ome of the problem# inherent in the language< #uch a# #tatement# with undefined beha7ior or #tatement# that are not a good practice becau#e they are li8ely to re#ult in unintended beha7ior or runDtime error#, Automated #ource code chec8ing and auditing are beneficial in any language< and for / many #uch tool# e>i#t< #uch a# .int, A common practice i# to u#e .int to detect 6ue#tionable code when a program i# fir#t written, Once a program pa##e# .int< it i# then 99

compiled u#ing the / compiler, Al#o< many compiler# can optionally warn about #yntactically 7alid con#truct# that are li8ely to actually be error#, 1IS+A / i# a proprietary #et of guideline# to a7oid #uch 6ue#tionable code< de7eloped for embedded #y#tem#, There are al#o compiler#< librarie#< and operating #y#tem le7el mechani#m# for performing action# that are not a #tandard part of /< #uch a# array bound# chec8ing< buffer o7erflow detection< #erialiFation< and automatic garbage collection, Tool# #uch a# (urify or Valgrind and lin8ing with librarie# containing #pecial 7er#ion# of the memory allocation function# can help unco7er runtime error# in memory u#age, 1<.U!#! / i# often u#ed for L#y#tem programmingL< including implementing operating #y#tem# and embedded #y#tem application#< due to a combination of de#irable characteri#tic# #uch a# code portability and efficiency< ability to acce## #pecific hardware addre##e#< ability to pun type# to match e>ternally impo#ed data acce## re6uirement#< and low runDtime demand on #y#tem re#ource#, / can al#o be u#ed for web#ite programming u#ing /)I a# a LgatewayL for information between the ?eb application< the #er7er< and the brow#er,`99a Some rea#on# for choo#ing / o7er interpreted language# are it# #peed< #tability< and nearD uni7er#al a7ailability, One con#e6uence of /J# wide a7ailability and efficiency i# that compiler#< librarie#< and interpreter# of other programming language# are often implemented in /, The primary implementation# of (ython 3/(ython5< (erl @< and (%( are all written in /, Due to it# thin layer of ab#traction and low o7erhead< / allow# efficient implementation# of algorithm# and data #tructure#< which i# u#eful for program# that perform a lot of computation#, ;or e>ample< the )&2 1ultiD(reci#ion .ibrary< the )&2 Scientific .ibrary< 1athematica and 1AT.AB are completely or partially written in /, / i# #ometime# u#ed a# an intermediate language by implementation# of other language#, Thi# approach may be u#ed for portability or con7enienceE by u#ing / a# an intermediate language< it i# not nece##ary to de7elop machineD#pecific code generator#, / ha# #ome feature#< #uch a# lineDnumber preproce##or directi7e# and optional #uperfluou# comma# at the end of initialiFer li#t#< which #upport compilation of generated code, %owe7er< #ome of /J# #hortcoming# ha7e prompted the de7elopment of other /Dba#ed language# #pecifically de#igned for u#e a# intermediate language#< #uch a# /DD, / ha# al#o been widely u#ed to implement endDu#er application#< but much of that de7elopment ha# #hifted to newer language,

B"b("o%')0*9

W"."0#&") 2*tt0FGG# .$"."0#&").o'%G$"."GCH20'o%')//" %H() %u)%#33

L#t u! - 29)!*$) t .) #t.)' ?t* #&"t"o 3

9!

Вам также может понравиться