40232723 c programming language

Upload: madhu-midha

Post on 04-Jun-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/13/2019 40232723 C Programming Language

    1/22

    C (programming language)From Wikipedia, the free encyclopedia

    Jump to: navigation,search

    C

    Paradigm imperative(procedural)

    Appeared in 197

    Designed by !ennis "itchie

    Developer !ennis "itchie # $ell %a&s

    Typing discipline static,'eak

    Major

    implementations, *+, $orland ,Watcom

    Influenced by$($-%,-%), .%/% 0,213

    .ssem&ly, -%45,F/"6".

    Influenced

    a'k,csh, 88, ,/&ective;,$it,

    !, Java,Java+cript,%im&o, -erl,-

  • 8/13/2019 40232723 C Programming Language

    2/22

    @

  • 8/13/2019 40232723 C Programming Language

    3/22

    %ike most imperative languages in the.%/%tradition, has facilities for structuredprogrammingand allo's le>ical varia&le scopeand recursion, 'hile a static type systempreventsmany unintended operations? 5n , all e>ecuta&le code is contained 'ithin functions? Functionparametersare al'ays passed &y value? -ass;&y;reference is achieved in &y e>plicitly passingpointervalues? divergent from .%/%, often follo'ing the lead of Is predecessor $, fore>ample using

    { ... }rather than .%/%Is begin ... end

    the eGual;sign for assignment (copying), much like Fortran

    t'o consecutive eGual;signs to test for eGuality (compare to .EQ.in Fortranor the

    eGual;sign in $.+5) &&and ||in place of .%/%Is andand or, 'hich

    are syntactically distinct from the⁢'iseoperators &and |(used &y $for &oth meanings)

    never evaluate the right operand if the result can &e determined from theleft alone (short;circuit evaluation)

    a large num&er of compound operators, such as +=, ++, etc?

    [edit "istory

    [edit #arly developments

    6he initial development of occurred at .6#6$ell %a&s&et'een 1909 and 197@H according to"itchie, the most creative period occurred in 197? 5t 'as named EE &ecause many of itsfeatures 'ere derived from an earlier language called E$E, 'hich according to Ben 6hompson'as a stripped;do'n version of the $-%programming language?

    6he origin of is closely tied to the development of the =ni>operating system, originallyimplemented in assem&ly language on a -!-;7&y "itchie and 6hompson, incorporating severalideas from colleagues? Aventually they decided to port the operating system to a -!-;11?$Is

    http://wiki/ALGOLhttp://wiki/ALGOLhttp://wiki/ALGOLhttp://wiki/Structured_programminghttp://wiki/Structured_programminghttp://wiki/Scope_(programming)http://wiki/Recursionhttp://wiki/Type_systemhttp://wiki/Type_systemhttp://wiki/Subroutinehttp://wiki/Parameter_(computer_science)http://wiki/Pointer_(computing)http://wiki/Structhttp://wiki/Weak_typinghttp://wiki/Computer_memoryhttp://wiki/Pointer_(computing)http://wiki/Pointer_(computing)http://wiki/Closure_(computer_science)http://wiki/Closure_(computer_science)http://wiki/Type_polymorphismhttp://wiki/Type_polymorphismhttp://wiki/Arrayhttp://wiki/C_preprocessorhttp://wiki/C_preprocessorhttp://wiki/Macro_(computer_science)http://wiki/Source_codehttp://wiki/Source_codehttp://wiki/Input/outputhttp://wiki/Input/outputhttp://wiki/String_(computer_science)http://wiki/String_(computer_science)http://wiki/Library_(computer_science)http://wiki/Library_(computer_science)http://wiki/Keyword_(computer_programming)http://wiki/ALGOLhttp://wiki/B_(programming_language)http://wiki/ALGOLhttp://wiki/ALGOLhttp://wiki/Fortranhttp://wiki/Fortranhttp://wiki/Fortranhttp://wiki/BASIChttp://wiki/ALGOLhttp://wiki/ALGOLhttp://wiki/Bitwise_operationhttp://wiki/Bitwise_operationhttp://wiki/Bitwise_operationhttp://wiki/B_(programming_language)http://wiki/Short-circuit_evaluationhttp://w/index.php?title=C_(programming_language)&action=edit&section=3http://w/index.php?title=C_(programming_language)&action=edit&section=4http://wiki/AT&Thttp://wiki/Bell_Labshttp://wiki/Bell_Labshttp://wiki/B_(programming_language)http://wiki/Ken_Thompson_(computer_programmer)http://wiki/BCPLhttp://wiki/BCPLhttp://wiki/Unixhttp://wiki/PDP-7http://wiki/PDP-7http://wiki/PDP-11http://wiki/PDP-11http://wiki/ALGOLhttp://wiki/Structured_programminghttp://wiki/Structured_programminghttp://wiki/Scope_(programming)http://wiki/Recursionhttp://wiki/Type_systemhttp://wiki/Subroutinehttp://wiki/Parameter_(computer_science)http://wiki/Pointer_(computing)http://wiki/Structhttp://wiki/Weak_typinghttp://wiki/Computer_memoryhttp://wiki/Pointer_(computing)http://wiki/Closure_(computer_science)http://wiki/Type_polymorphismhttp://wiki/Arrayhttp://wiki/C_preprocessorhttp://wiki/Macro_(computer_science)http://wiki/Source_codehttp://wiki/Input/outputhttp://wiki/String_(computer_science)http://wiki/Library_(computer_science)http://wiki/Keyword_(computer_programming)http://wiki/ALGOLhttp://wiki/B_(programming_language)http://wiki/ALGOLhttp://wiki/Fortranhttp://wiki/Fortranhttp://wiki/BASIChttp://wiki/ALGOLhttp://wiki/Bitwise_operationhttp://wiki/B_(programming_language)http://wiki/Short-circuit_evaluationhttp://w/index.php?title=C_(programming_language)&action=edit&section=3http://w/index.php?title=C_(programming_language)&action=edit&section=4http://wiki/AT&Thttp://wiki/Bell_Labshttp://wiki/B_(programming_language)http://wiki/Ken_Thompson_(computer_programmer)http://wiki/BCPLhttp://wiki/Unixhttp://wiki/PDP-7http://wiki/PDP-11
  • 8/13/2019 40232723 C Programming Language

    4/22

    lack of functionality to take advantage of some of the -!-;11Is features, nota&ly &yteaddressa&ility, led to the development of an early version of the programming language?

    6he original -!-;11 version of the =ni> system 'as developed in assem&ly language? $y 197@,'ith the addition of structtypes, the language had &ecome po'erful enough that most of the=ni>kernel'as re'ritten in ? 6his 'as one of the first operating system kernels implemented

    in a language other than assem&ly? (Aarlier instances include the*ulticssystem ('ritten in-%45), and *- (*aster ontrol -rogram) for the $urroughs $D'ritten in .%/%in 1901?)

    [edit $%& C

    5n 197, $rian Bernighanand !ennis "itchiepu&lished the first edition of The C ProgrammingLanguage? 6his &ook, kno'n to programmers as EB#"E, served for many years as an informalspecificationof the language? 6he version of that it descri&es is commonly referred to asEB#" E? 6he second edition of the &ook covers the later .+5 standard?

    B#" introduced several language features:

    standard 54/ li&rary

    long intdata type

    unsigned intdata type

    compound assignment operators =op'ere changed to op=to remove the semanticam&iguity created &y the construct i=-10, 'hich had &een interpreted as i =- 10insteadof the possi&ly intended i = -10

    Aven after the pu&lication of the 199 standard, for many years B#" 'as still consideredthe Elo'est common denominatorE to 'hich programmers restricted themselves 'henma>imum porta&ility 'as desired, since many older compilers 'ere still in use, and &ecausecarefully 'ritten B#" code can &e legal +tandard as 'ell?

    5n early versions of , only functions that returned a non;integer value needed to &e declared if

    used &efore the function definitionH a function used 'ithout any previous declaration 'asassumed to return an integer, if its value 'as used?

    For e>ample:

    long int SomeFunction!"#$ int %terFunction!" $#

    #$ int $# 'allingFunction!{ long int test1" register #$ int $# test("

    test1 = SomeFunction!"

    i) test1 * 0!test( = 0"

    elsetest( = %terFunction!"

    return test("}

    .ll the a&ove commented;out intdeclarations could &e omitted in B#" ?

    http://wiki/Bytehttp://wiki/Unixhttp://wiki/Kernel_(computers)http://wiki/Multicshttp://wiki/Multicshttp://wiki/Multicshttp://wiki/PL/Ihttp://wiki/MCP_(Burroughs_Large_Systems)http://wiki/Burroughs_large_systemshttp://wiki/ALGOLhttp://w/index.php?title=C_(programming_language)&action=edit&section=5http://wiki/Brian_Kernighanhttp://wiki/Brian_Kernighanhttp://wiki/Dennis_Ritchiehttp://wiki/Dennis_Ritchiehttp://wiki/The_C_Programming_Language_(book)http://wiki/The_C_Programming_Language_(book)http://wiki/Specificationhttp://wiki/Specificationhttp://wiki/ANSI_Chttp://wiki/Bytehttp://wiki/Unixhttp://wiki/Kernel_(computers)http://wiki/Multicshttp://wiki/PL/Ihttp://wiki/MCP_(Burroughs_Large_Systems)http://wiki/Burroughs_large_systemshttp://wiki/ALGOLhttp://w/index.php?title=C_(programming_language)&action=edit&section=5http://wiki/Brian_Kernighanhttp://wiki/Dennis_Ritchiehttp://wiki/The_C_Programming_Language_(book)http://wiki/The_C_Programming_Language_(book)http://wiki/Specificationhttp://wiki/ANSI_C
  • 8/13/2019 40232723 C Programming Language

    5/22

    +ince B#" function declarations did not include any information a&out function arguments,function parameter type checks'ere not performed, although some compilers 'ould issue a'arning message if a local function 'as called 'ith the 'rong num&er of arguments, or ifmultiple calls to an e>ternal function used different num&ers or types of arguments? +eparatetools such as =ni>Is lintutility 'ere developed that (among other things) could check forconsistency of function use across multiple source files?

    5n the years follo'ing the pu&lication of B#" , several unofficial features 'ere added to thelanguage, supported &y compilers from .6#6 and some other vendors? 6hese included:

    oid functions

    functions returning structor uniontypes (rather than pointers)

    assignment for structdata types

    enumerated types

    6he large num&er of e>tensions and lack of agreement on a standard li&rary,together 'ith thelanguage popularity and the fact that not even the =ni> compilers precisely implemented theB#" specification, led to the necessity of standardiation?

    [edit A'I C and I C

    Main article:ANSI C

    !uring the late 197s and 19s, versions of 'ere implemented for a 'ide variety ofmainframe computers, minicomputers, and microcomputers,including the 5$* -, as itspopularity &egan to increase significantly?

    5n 19@, the .merican ational +tandards 5nstitute(.+5) formed a committee, K@J11, toesta&lish a standard specification of ? 5n 199, the standard 'as ratified as .+5 K@?1D9;199E-rogramming %anguage ?E 6his version of the language is often referred to as .+5 ,+tandard , or sometimes 9?

    5n 199, the .+5 standard ('ith formatting changes) 'as adopted &y the 5nternational/rganiation for +tandardiation(5+/) as 5+/45A 999:199, 'hich is sometimes called 9?6herefore, the terms E9E and E9E refer to the same programming language?

    .+5, like other national standards &odies, no longer develops the standard independently, &utdefers to the 5+/ standard? ational adoption of updates to the international standard typicallyoccurs 'ithin a year of 5+/ pu&lication?

    /ne of the aims of the standardiation process 'as to produce a supersetof B#" ,incorporating many of the unofficial features su&seGuently introduced? 6he standards committeealso included several additional features such asfunction prototypes(&orro'ed from 88), oidpointers, support for international character setsandlocales, and preprocessor enhancements?6he synta> for parameter declarations 'as also augmented to include the style used in 88,

    although the B#" interface continued to &e permitted, for compati&ility 'ith e>isting sourcecode?

    9 is supported &y current compilers, and most code &eing 'ritten no'adays is &ased on it?.ny program 'ritten only in +tandard and 'ithout any hard'are;dependent assumptions 'illrun correctly on anyplatform'ith a conforming implementation, 'ithin its resource limits?Without such precautions, programs may compile only on a certain platform or 'ith a particularcompiler, due, for e>ample, to the use of non;standard li&raries, such as =5li&raries, or to a

    http://wiki/Type_checkinghttp://wiki/Type_checkinghttp://wiki/Lint_programming_toolhttp://wiki/Lint_programming_toolhttp://wiki/Void_typehttp://wiki/Void_typehttp://wiki/Structhttp://wiki/Union_(computer_science)http://wiki/Assignment_(computer_science)http://wiki/Enumerated_typehttp://wiki/C_standard_libraryhttp://wiki/C_standard_libraryhttp://w/index.php?title=C_(programming_language)&action=edit&section=6http://wiki/ANSI_Chttp://wiki/Mainframe_computerhttp://wiki/Minicomputerhttp://wiki/Microcomputerhttp://wiki/Microcomputerhttp://wiki/IBM_PChttp://wiki/American_National_Standards_Institutehttp://wiki/ANSI_Chttp://wiki/International_Organization_for_Standardizationhttp://wiki/International_Organization_for_Standardizationhttp://wiki/Supersethttp://wiki/Function_prototypehttp://wiki/Function_prototypehttp://wiki/Function_prototypehttp://wiki/Character_encodinghttp://wiki/Character_encodinghttp://wiki/Localehttp://wiki/Localehttp://wiki/System_platformhttp://wiki/System_platformhttp://wiki/Graphical_user_interfacehttp://wiki/Graphical_user_interfacehttp://wiki/Type_checkinghttp://wiki/Lint_programming_toolhttp://wiki/Void_typehttp://wiki/Structhttp://wiki/Union_(computer_science)http://wiki/Assignment_(computer_science)http://wiki/Enumerated_typehttp://wiki/C_standard_libraryhttp://w/index.php?title=C_(programming_language)&action=edit&section=6http://wiki/ANSI_Chttp://wiki/Mainframe_computerhttp://wiki/Minicomputerhttp://wiki/Microcomputerhttp://wiki/IBM_PChttp://wiki/American_National_Standards_Institutehttp://wiki/ANSI_Chttp://wiki/International_Organization_for_Standardizationhttp://wiki/International_Organization_for_Standardizationhttp://wiki/Supersethttp://wiki/Function_prototypehttp://wiki/Character_encodinghttp://wiki/Localehttp://wiki/System_platformhttp://wiki/Graphical_user_interface
  • 8/13/2019 40232723 C Programming Language

    6/22

    reliance on compiler; or platform;specific attri&utes such as the e>act sie of data types and &yteendianness?

    5n cases 'here code must &e compila&le &y either standard;conforming or B#" ;&asedcompilers, the ,,S',,macro can &e used to split the code into +tandard and B#" sections totake advantage of features availa&le only in +tandard ?

    [edit C**

    Main article: C99

    .fter the .+545+/ standardiation process, the language specification remained relativelystatic for some time, 'hereas 88continued to evolve, largely during its o'n standardiationeffort? 5n 199D ormative .mendment 1 to the 199 standard 'as pu&lished, to correct somedetails and to add more e>tensive support for international character sets? 6he standard 'asfurther revised in the late 199s, leading to the pu&lication of 5+/45A 999:1999 in 1999, 'hichis commonly referred to as E99?E 5t has since &een amended three times &y 6echnicalorrigenda? 6he international standard is maintained &y the 'orking group5+/45AJ614+4W1C?

    99 introduced several ne' features, includinginline functions, several ne'data types(including long long intand a com/letype to represent comple> num&ers),varialengtharrays,support for variadic macros(macros of varia&le arity) and support for one;line comments&eginning 'ith ##, as in $-%or 88? *any of these had already &een implemented ase>tensions in several compilers?

    99 is for the most part &ack'ard compati&le 'ith 9, &ut is stricter in some 'aysH inparticular, a declaration that lacks a type specifier no longer has intimplicitly assumed? .standard macro ,,S',E2S3%4,,is defined 'ith value 1555016to indicate that 99 supportis availa&le? , +un +tudioand other compilers no' support many or all of the ne'features of 99?

    .s of 7, 'ork has &egun in anticipation of another revision of the standard, informallycalled E1xE? 6he standards committee has adopted guidelines to limit the adoption of ne'features that have not &een tested &y e>isting implementations?

    [edit +sesIs primary use is for Esystem programmingE, including implementing operating systemsandem&edded systemapplications, due to a com&ination of desira&le characteristics such as codeporta&ility and efficiency, a&ility to access specific hard'are addresses, a&ility to EpunEtypes tomatch e>ternally imposed data access reGuirements, and lo'runtimedemand on systemresources?

    has also &een 'idely used to implement end;userapplications, although as applications&ecame larger much of that development shifted to other, higher;level languages?

    /ne conseGuence of Is 'ide acceptance and efficiency is that the compilers, li&raries, andinterpreters of other higher;level languages are often implemented in ?

    is used as an intermediate language&y some implementations of higher;level languages, 'hichtranslate the input language to source code, perhaps along 'ith other o&ect representations?6he source code is compiled &y a compiler to produce o&ect code? 6his approach may &eused to gain porta&ility ( compilers e>ist for nearly all platforms) or for convenience (it avoidshaving to develop machine;specific code generators)? +ome programming languages 'hich use

    http://wiki/Endiannesshttp://w/index.php?title=C_(programming_language)&action=edit&section=7http://wiki/C99http://wiki/C++http://wiki/C99http://wiki/Working_grouphttp://wiki/SC22http://wiki/SC22http://wiki/Inline_functionhttp://wiki/Inline_functionhttp://wiki/Data_typehttp://wiki/Data_typehttp://wiki/Complex_numberhttp://wiki/Variable-length_arrayhttp://wiki/Variable-length_arrayhttp://wiki/Variable-length_arrayhttp://wiki/Variable-length_arrayhttp://wiki/Variadic_macrohttp://wiki/Arityhttp://wiki/BCPLhttp://wiki/GNU_Compiler_Collectionhttp://wiki/Sun_Studio_(software)http://w/index.php?title=C_(programming_language)&action=edit&section=8http://wiki/System_programminghttp://wiki/Operating_systemhttp://wiki/Embedded_systemhttp://wiki/Type_punninghttp://wiki/Runtimehttp://wiki/Runtimehttp://wiki/End-user_(computer_science)http://wiki/Intermediate_languagehttp://wiki/Endiannesshttp://w/index.php?title=C_(programming_language)&action=edit&section=7http://wiki/C99http://wiki/C++http://wiki/C99http://wiki/Working_grouphttp://wiki/SC22http://wiki/SC22http://wiki/Inline_functionhttp://wiki/Data_typehttp://wiki/Complex_numberhttp://wiki/Variable-length_arrayhttp://wiki/Variable-length_arrayhttp://wiki/Variadic_macrohttp://wiki/Arityhttp://wiki/BCPLhttp://wiki/GNU_Compiler_Collectionhttp://wiki/Sun_Studio_(software)http://w/index.php?title=C_(programming_language)&action=edit&section=8http://wiki/System_programminghttp://wiki/Operating_systemhttp://wiki/Embedded_systemhttp://wiki/Type_punninghttp://wiki/Runtimehttp://wiki/End-user_(computer_science)http://wiki/Intermediate_language
  • 8/13/2019 40232723 C Programming Language

    7/22

    this 'ay are $it, Aiffel, Asterel,am&it,the lasgo' t;line;&ased restrictions?omments may appear either &et'een the delimiters #$and $#, or (in 99) follo'ing ##untilthe end of the line?

    Aach source file contains declarations and function definitions? Function definitions, in turn,contain declarations and statements? !eclarations either define ne' types using key'ords suchas struct, union, and enum, or assign types to and perhaps reserve storage for ne' varia&les,usually &y 'riting the type follo'ed &y the varia&le name? Bey'ords such as carand intspecify &uilt;in types? +ections of code are enclosed in &races ({and }, sometimes called Ecurly&racketsE) to limit the scope of declarations and to act as a single statement for control structures?

    .s an imperative language, usesstatementsto specify actions? 6he most common statement isan expression statement, consisting of an e>pression to &e evaluated, follo'ed &y a semicolonH asa side effect of the evaluation, functions may &e calledand varia&les may &eassignedne'values? 6o modify the normal seGuential e>ecution of statements, provides several control;flo' statements identified &y reserved key'ords? +tructured programmingis supported &y i)(;else) conditional e>ecution and &y do;7ile, 7ile, and )oriterative e>ecution (looping)? 6he)orstatement has separate initialiation, testing, and reinitialiation e>pressions, any or all of'hich can &e omitted? brea8and continuecan &e used to leave the innermost enclosing loopstatement or skip to its reinitialiation? 6here is also a non;structured gotostatement 'hich&ranches directly to the designatedla&el'ithin the function? s7itcselects a caseto &ee>ecuted &ased on the value of an integer e>pression?

    A>pressions can use a variety of &uilt;in operators (see &elo') and may contain function calls?6he order in 'hich operands to most operators, as 'ell as the arguments to functions, areevaluated is unspecifiedH the evaluations may even &e interleaved? t EseGuence pointEH seGuence pointsinclude the end of each e>pression statement and the entry to and return from each function call?6his permits a high degree of o&ect code optimiation &y the compiler, &ut reGuires programmers to e>ert more care to o&tain relia&le results than is needed for other programminglanguages?

    .lthough mimicked &y many languages &ecause of its 'idespread familiarity, Is synta> hasoften &een criticied? For e>ample, Bernighan and "itchie say in the second edition of The CProgramming Language, E, like any other language, has its &lemishes? +ome of the operatorshave the 'rong precedenceH some parts of the synta> could &e &etter?E

    +ome specific pro&lems 'orth noting are:

    http://wiki/BitChttp://wiki/Eiffel_(programming_language)http://wiki/Esterelhttp://wiki/Esterelhttp://wiki/Gambit_(Scheme_implementation)http://wiki/Gambit_(Scheme_implementation)http://wiki/Glasgow_Haskell_Compilerhttp://wiki/Lisp_(programming_language)http://wiki/Lisp_(programming_language)http://wiki/Programming_language_dialecthttp://wiki/Lush_(programming_language)http://wiki/Lush_(programming_language)http://wiki/Satherhttp://wiki/Squeakhttp://wiki/Vala_(programming_language)http://wiki/Vala_(programming_language)http://wiki/C--http://wiki/C--http://w/index.php?title=C_(programming_language)&action=edit&section=9http://wiki/C_syntaxhttp://wiki/C_variable_types_and_declarationshttp://wiki/FORTRAN_77http://wiki/FORTRAN_77http://wiki/Free-form_languagehttp://wiki/Free-form_languagehttp://wiki/Procedure_callhttp://wiki/Assignment_(computer_science)http://wiki/Assignment_(computer_science)http://wiki/Structured_programminghttp://wiki/Structured_programminghttp://wiki/Gotohttp://wiki/Gotohttp://wiki/Label_(programming_language)http://wiki/Label_(programming_language)http://wiki/Sequence_pointhttp://wiki/BitChttp://wiki/Eiffel_(programming_language)http://wiki/Esterelhttp://wiki/Gambit_(Scheme_implementation)http://wiki/Glasgow_Haskell_Compilerhttp://wiki/Lisp_(programming_language)http://wiki/Programming_language_dialecthttp://wiki/Lush_(programming_language)http://wiki/Satherhttp://wiki/Squeakhttp://wiki/Vala_(programming_language)http://wiki/C--http://w/index.php?title=C_(programming_language)&action=edit&section=9http://wiki/C_syntaxhttp://wiki/C_variable_types_and_declarationshttp://wiki/FORTRAN_77http://wiki/Free-form_languagehttp://wiki/Procedure_callhttp://wiki/Assignment_(computer_science)http://wiki/Structured_programminghttp://wiki/Gotohttp://wiki/Label_(programming_language)http://wiki/Sequence_point
  • 8/13/2019 40232723 C Programming Language

    8/22

    ot checking num&er and types of arguments 'hen the function declaration has an emptyparameter list? (6his provides&ack'ard compati&ility'ith B#" ,'hich lackedprototypes?)

    +ome Guestiona&le choices of operator precedence, as mentioned &y Bernighan and"itchie a&ove, such as ==&inding more tightly than &and |in e>pressions like & 1 ==

    0? 6he use of the =operator, used in mathematics for eGuality, to indicate assignment,

    follo'ing the precedent of Fortran,-%45, and $.+5, &ut unlike .%/%and itsderivatives? "itchie made this synta> design decision consciously, &ased primarily on theargument that assignment occurs more often than comparison?

    +imilarity of the assignment and eGuality operators (=and ==), making it easy toaccidentally su&stitute one for the other? Is 'eak type system permits each to &e used inthe conte>t of the other 'ithout a compilation error (although some compilers produce'arnings)? For e>ample, the conditional e>pression in i) a=b!is only true if ais notero after the assignment?2C3

    . lack of infi>operators for comple> o&ects, particularly for string operations, makingprograms 'hich rely heavily on these operations (implemented as functions instead)some'hat difficult to read?

    . declaration synta> that some find unintuitive, particularly for function pointers?("itchieIs idea 'as to declare identifiers in conte>ts resem&ling their use: Edeclarationreflects useE?)

    [edit peratorsMain article: !perators in C an C""

    supports a rich set of operators, 'hich are sym&ols used 'ithin ane>pressionto specify themanipulations to &e performed 'hile evaluating that e>pression? has operators for:

    arithmetic

    eGuality testing

    order relations

    &oolean logic

    &it'ise logic

    assignment

    increment and decrement

    reference and dereference

    conditional evaluation mem&er selection

    type conversion

    o&ect sie

    function argument collection

    seGuencing

    http://wiki/Backward_compatibilityhttp://wiki/The_C_Programming_Language_(book)http://wiki/The_C_Programming_Language_(book)http://wiki/Fortranhttp://wiki/Fortranhttp://wiki/PL/Ihttp://wiki/BASIChttp://wiki/ALGOLhttp://wiki/Infix_notationhttp://wiki/Infix_notationhttp://wiki/Function_pointerhttp://wiki/Declaration_reflects_usehttp://wiki/Declaration_reflects_usehttp://w/index.php?title=C_(programming_language)&action=edit&section=10http://wiki/Operators_in_C_and_C++http://wiki/Operator_(programming)http://wiki/Expression_(programming)http://wiki/Expression_(programming)http://wiki/Backward_compatibilityhttp://wiki/The_C_Programming_Language_(book)http://wiki/Fortranhttp://wiki/PL/Ihttp://wiki/BASIChttp://wiki/ALGOLhttp://wiki/Infix_notationhttp://wiki/Function_pointerhttp://wiki/Declaration_reflects_usehttp://wiki/Declaration_reflects_usehttp://w/index.php?title=C_(programming_language)&action=edit&section=10http://wiki/Operators_in_C_and_C++http://wiki/Operator_(programming)http://wiki/Expression_(programming)
  • 8/13/2019 40232723 C Programming Language

    9/22

    su&e>pression grouping

    has a formal grammar, specified &y the standard?

    [edit -"ello. /orld- e,ample6he Ehello, 'orldE e>ample 'hich appeared in the first edition ofB#"has &ecome the model

    for an introductory program in most programming te>t&ooks, regardless of programminglanguage? 6he program prints Ehello, 'orldE to the standard output, 'hich is usually a terminalor screen display? . standard;conforming Ehello, 'orldE program is:2D3

    9include :stdio.*

    int mainoid!{ /rint);ello< 7orldn;!" return 0"}

    6he first line of the program contains apreprocessing directive,indicated &y 9include? 6his

    causes the preprocessor L the first tool to e>amine source code as it is compiled L to su&stitutethe line 'ith the entire te>t of the stdio.standard header, 'hich contains declarations forstandard input and output functions such as /rint)? 6he angle &rackets surrounding stdio.indicate that stdio.is located using a search strategy that prefers standard headers to otherheaders having the same name? !ou&le Guotes may also &e used to include local or proect;specific header files?

    6he ne>t line indicates that a function named mainis &eing defined? 6hemainfunction serves aspecial purpose in programs: 6he run;time environment calls the mainfunction to &eginprogram e>ecution? 6he type specifier intindicates that the return value#the value that isreturned to the invoker (in this case the run;time environment) as a result of evaluating the mainfunction, is an integer? 6he key'ord oidas a parameter list indicates that the mainfunctiontakes no arguments?203

    6he opening curly &race indicates the &eginning of the definition of the mainfunction?

    6he ne>t line calls(e>ecutes the code for) a function named /rint), 'hich 'as declared instdio.and is supplied from a system li&rary? 5n this call, the /rint)function ispasse(provided 'ith) a single argument, the address of the first character in the string literal ;elloit code indicating successfule>ecution?

    6he closing curly &race indicates the end of the code for the mainfunction?

    [edit Data structures

    http://wiki/Formal_grammarhttp://w/index.php?title=C_(programming_language)&action=edit&section=11http://wiki/Hello,_worldhttp://wiki/The_C_Programming_Language_(book)http://wiki/The_C_Programming_Language_(book)http://wiki/Standard_outputhttp://wiki/Preprocessinghttp://wiki/Preprocessinghttp://wiki/Preprocessinghttp://wiki/Main_function_(programming)http://wiki/Main_function_(programming)http://wiki/Printfhttp://wiki/Library_(computer_science)http://wiki/Arrayhttp://wiki/Newlinehttp://w/index.php?title=C_(programming_language)&action=edit&section=12http://wiki/Formal_grammarhttp://w/index.php?title=C_(programming_language)&action=edit&section=11http://wiki/Hello,_worldhttp://wiki/The_C_Programming_Language_(book)http://wiki/Standard_outputhttp://wiki/Preprocessinghttp://wiki/Main_function_(programming)http://wiki/Printfhttp://wiki/Library_(computer_science)http://wiki/Arrayhttp://wiki/Newlinehttp://w/index.php?title=C_(programming_language)&action=edit&section=12
  • 8/13/2019 40232723 C Programming Language

    10/22

    has a static 'eak typingtype systemthat shares some similarities 'ith that of other .%/%descendants such as -ascal? 6here are &uilt;in types for integers of various sies, &oth signed andunsigned,floating;point num&ers, characters, and enumerated types (enum)? 99 added a&ooleandatatype? 6here are also derived types including arrays,pointers,records(struct), and untaggedunions(union)?

    is often used in lo';level systems programming 'here escapes from the type system may &enecessary? 6he compiler attempts to ensure type correctness of most e>pressions, &ut theprogrammer can override the checks in various 'ays, either &y using a type castto e>plicitlyconvert a value from one type to another, or &y using pointers or unions to reinterpret theunderlying &its of a value in some other 'ay?

    [edit Pointers

    supports the use of pointers, a very simple type of referencethat records, in effect, the addressor location of an o&ect or function in memory? -ointers can &e ere&erenceto access datastored at the address pointed to, or to invoke a pointed;to function? -ointers can &e manipulatedusing assignment and alsopointer arithmetic?6he run;time representation of a pointer value istypically a ra' memory address (perhaps augmented &y an offset;'ithin;'ord field), &ut since a

    pointerIs type includes the type of the thing pointed to, e>pressions including pointers can &etype;checked at compile time? -ointer arithmetic is automatically scaled &y the sie of thepointed;to data type? (+ee .rray;pointer interchangea&ility&elo'?) -ointers are used for manydifferent purposes in ? 6e>t stringsare commonly manipulated using pointers into arrays ofcharacters? !ynamic memory allocation, 'hich is descri&ed &elo', is performed using pointers?*any data types, such as trees, are commonly implemented as dynamically allocated structo&ects linked together using pointers? -ointers to functions are useful for call&acksfrom eventhandlers?

    . null pointeris a pointer value that points to no valid location (it is often represented &y addressero)? !ereferencing a null pointer is therefore meaningless, typically resulting in a run;timeerror? ull pointers are useful for indicating special cases such as no nextpointer in the final

    node of a linked list,or as an error indication from functions returning pointers?oid pointers (oid $) point to o&ects of unkno'n type, and can therefore &e used as EgenericEdata pointers? +ince the sie and type of the pointed;to o&ect is not kno'n, void pointers cannot&e dereferenced, nor is pointer arithmetic on them allo'ed, although they can easily &e (and inmany conte>ts implicitly are) converted to and from any other o&ect pointer type?

    areless use of pointers is potentially dangerous? $ecause they are typically unchecked, a pointervaria&le can &e made to point to any ar&itrary location, 'hich can cause undesira&le effects?.lthough properly;used pointers point to safe places, they can &e made to point to unsafe places&y using invalidpointer arithmeticH the o&ects they point to may &e deallocated and reused(dangling pointers)H they may &e used 'ithout having &een initialied ('ild pointers)H or theymay &e directly assigned an unsafe value using a cast, union, or through another corrupt pointer?5n general, is permissive in allo'ing manipulation of and conversion &et'een pointer types,although compilers typically provide options for various levels of checking? +ome otherprogramming languages address these pro&lems &y using more restrictive referencetypes?

    [edit Arrays

    .rraytypes in are al'ays one;dimensional and, traditionally, of a fi>ed, static sie specified atcompile time? (6he more recent 99 standard also allo's a form of varialength arrays?)

  • 8/13/2019 40232723 C Programming Language

    11/22

    the standard li&raryIs mallocfunction, and treat it as an array? Is unification of arrays andpointers (see &elo') means that true arrays and these dynamically;allocated, simulated arrays arevirtually interchangea&le? +ince arrays are al'ays accessed (in effect) via pointers, array accessesare typically notchecked against the underlying array sie, although the compiler may provide&ounds checking as an option? .rray &ounds violations are therefore possi&le and rather commonin carelessly 'ritten code, and can lead to various repercussions, including illegal memoryaccesses, corruption of data, &uffer overruns, and run;time e>ceptions?

    does not have a special provision for declaring multidimensional arrays, &ut rather relies onrecursion 'ithin the type system to declare arrays of arrays, 'hich effectively accomplishes thesame thing? 6he inde> values of the resulting Emultidimensional arrayE can &e thought of asincreasing in ro';maor order?

    .lthough supports static arrays, it is not reGuired that array indices &e validated (&oundschecking)? For e>ample, one can try to 'rite to the si>th element of an array 'ith five elements,generally yielding undesira&le results? 6his type of &ug, called abu&&er over&lo%or bu&&eroverrun#is notorious for causing a num&er of security pro&lems? /n the other hand, since &oundschecking eliminationtechnology 'as largely none>istent 'hen 'as defined, &ounds checking

    came 'ith a severe performance penalty, particularly in numerical computation? . fe' yearsearlier, some Fortrancompilers had a s'itch to toggle &ounds checking on or offH ho'ever, this'ould have &een much less useful for , 'here array arguments are passed as simple pointers?

    *ultidimensional arrays are commonly used in numerical algorithms (mainly from applied linearalge&ra) to store matrices? 6he structure of the array is 'ell suited to this particular task?ed values or else e>plicitly passed to any su&routine that reGuires them, and dynamically siedarrays of arrays cannot &e accessed using dou&le inde>ing? (. 'orkaround for this is to allocatethe array 'ith an additional Ero' vectorE of pointers to the columns?)

    99 introduced Evarialength arraysE 'hich address some, &ut not all, of the issues 'ithordinary arrays?

    See also: C string

    [edit Array0pointer interc!angeability

    . distinctive (&ut potentially confusing) feature of is its treatment of arrays and pointers? 6hearray;su&script notation >i?can also &e used 'hen is a pointerH the interpretation (usingpointer arithmetic) is to access the i+1!th of several adacent data o&ects pointed to &y ,counting the o&ect that points to ('hich is >0?) as the first element of the array?

    Formally, >i?is eGuivalent to $ + i!? +ince the type of the pointer involved is kno'n to thecompiler at compile time, the address that + ipoints to is notthe address pointed to &y incremented &y i&ytes, &ut rather incremented &y imultiplied &y the sie of an element that points to? 6he sie of these elements can &e determined 'ith the operator si@eo)&y applying it

    to any dereferenced element of , as in n = si@eo) $or n = si@eo) >0??Furthermore, in most e>pression conte>ts (a nota&le e>ception is si@eo)array), the name of anarray is automatically converted to a pointer to the arrayIs first elementH this implies that an arrayis never copied as a 'hole 'hen named as an argument to a function, &ut rather only the addressof its first element is passed? 6herefore, although Is function calls usepass;&y;valuesemantics,arrays are in e&&ectpassed &y reference?

    6he num&er of elements in a declared array acan &e determined as si@eo) a # si@eo) a>0??

    http://wiki/Row-major_orderhttp://wiki/Bounds_checkinghttp://wiki/Bounds_checkinghttp://wiki/Buffer_overflowhttp://wiki/Buffer_overflowhttp://wiki/Buffer_overflowhttp://wiki/Bounds_checking_eliminationhttp://wiki/Bounds_checking_eliminationhttp://wiki/Bounds_checking_eliminationhttp://wiki/Fortranhttp://wiki/Fortranhttp://wiki/Linear_algebrahttp://wiki/Linear_algebrahttp://wiki/C_stringhttp://w/index.php?title=C_(programming_language)&action=edit&section=15http://wiki/Sizeofhttp://wiki/Sizeofhttp://wiki/Call-by-valuehttp://wiki/Reference_(computer_science)http://wiki/Row-major_orderhttp://wiki/Bounds_checkinghttp://wiki/Bounds_checkinghttp://wiki/Buffer_overflowhttp://wiki/Bounds_checking_eliminationhttp://wiki/Bounds_checking_eliminationhttp://wiki/Fortranhttp://wiki/Linear_algebrahttp://wiki/Linear_algebrahttp://wiki/C_stringhttp://w/index.php?title=C_(programming_language)&action=edit&section=15http://wiki/Sizeofhttp://wiki/Call-by-valuehttp://wiki/Reference_(computer_science)
  • 8/13/2019 40232723 C Programming Language

    12/22

    .n interesting demonstration of the interchangea&ility of pointers and arrays is sho'n &elo'?6he four assignments are eGuivalent and each is valid code? ote ho' the last line contains thestrange code i>? = 1", 'hich has the inde> varia&le iapparently interchanged 'ith the arrayvaria&le ? 6his last line might &e found in o&fuscated code?

    #$ designates an arraA $#>i? = 1"$ + i! = 1"$i + ! = 1"i>? = 1" #$ strange< but correctB i>? is eCuialent to $i + ! $#

    pression conte>ts converted to a pointer (to its first element), thispointer does not itself occupy any storage? onseGuently, you cannot change 'hat an arrayEpoints toE, and it is impossi&le to assign to an array? (.rrays may ho'ever &e copied using thememc/Afunction, for e>ample?)

    [edit Memory management

    /ne of the most important functions of a programming language is to provide facilities formanaging memoryand the o&ects that are stored in memory? provides three distinct 'ays toallocate memory for o&ects:

    +tatic memory allocation: space for the o&ect is provided in the &inary at compile;timeHthese o&ects have ane>tent(or lifetime) as long as the &inary 'hich contains them isloaded into memory

    .utomatic memory allocation: temporary o&ects can &e stored on thestack,and thisspace is automatically freed and reusa&le after the &lock in 'hich they are declared ise>ited

    !ynamic memory allocation: &locks of memory of ar&itrary sie can &e reGuested at run;

    time using li&rary functions such as mallocfrom a region of memory called theheapHthese &locks persist until su&seGuently freed for reuse &y calling the li&rary function )ree

    6hese three approaches are appropriate in different situations and have various tradeoffs? Fore>ample, static memory allocation has no allocation overhead, automatic allocation may involvea small amount of overhead, and dynamic memory allocation can potentially have a great deal ofoverhead for &oth allocation and deallocation? /n the other hand, stack space is typically muchmore limited and transient than either static memory or heap space, and dynamic memoryallocation allo's allocation of o&ects 'hose sie is kno'n only at run;time? *ost programsmake e>tensive use of all three?

    Where possi&le, automatic or static allocation is usually preferred &ecause the storage ismanaged &y the compiler, freeing the programmer of the potentially error;prone chore of

    manually allocating and releasing storage? ed sie at compile;time, there are many situations in 'hich dynamic allocation must &e used?-rior to the 99 standard, variasied arrays 'ere a common e>ample of this (see E mallocE foran e>ample of dynamically allocated arrays)?

    .utomatically and dynamically allocated o&ects are only initialied if an initialied is e>plicitlyspecifiedH other'ise they initially have indeterminate values (typically, 'hatever&it patternhappens to &e present in thestorage,'hich might not even represent a valid value for that type)?

    http://wiki/International_Obfuscated_C_Code_Contesthttp://wiki/International_Obfuscated_C_Code_Contesthttp://w/index.php?title=C_(programming_language)&action=edit&section=16http://wiki/Computer_memoryhttp://wiki/Computer_memoryhttp://wiki/Static_memory_allocationhttp://wiki/Automatic_memory_allocationhttp://wiki/Call_stackhttp://wiki/Call_stackhttp://wiki/Call_stackhttp://wiki/Dynamic_memory_allocationhttp://wiki/Mallochttp://wiki/Dynamic_memory_allocationhttp://wiki/Dynamic_memory_allocationhttp://wiki/Dynamic_memory_allocationhttp://wiki/Mallochttp://wiki/Mallochttp://wiki/Bithttp://wiki/Bithttp://wiki/Computer_storagehttp://wiki/Computer_storagehttp://wiki/Computer_storagehttp://wiki/International_Obfuscated_C_Code_Contesthttp://w/index.php?title=C_(programming_language)&action=edit&section=16http://wiki/Computer_memoryhttp://wiki/Static_memory_allocationhttp://wiki/Automatic_memory_allocationhttp://wiki/Call_stackhttp://wiki/Dynamic_memory_allocationhttp://wiki/Mallochttp://wiki/Dynamic_memory_allocationhttp://wiki/Mallochttp://wiki/Mallochttp://wiki/Bithttp://wiki/Computer_storage
  • 8/13/2019 40232723 C Programming Language

    13/22

    5f the program attempts to access an uninitialied value, the results are undefined? *any moderncompilers try to detect and 'arn a&out this pro&lem, &ut &othfalse positives and false negativesoccur?

    .nother issue is that heap memory allocation has to &e manually synchronied 'ith its actualusage in any program in order for it to &e reused as much as possi&le? For e>ample, if the only

    pointer to a heap memory allocation goes out of scope or has its value over'ritten &efore)ree!has &een called, then that memory cannot &e recovered for later reuse and is essentially lost tothe program, a phenomenon kno'n as amemory lea'(onversely, it is possi&le to releasememory too soon and continue to access itH ho'ever, since the allocation system can re;allocateor itself use the freed memory, unpredicta&le &ehavior is likely to occur 'hen the multiple userscorrupt each otherIs data? 6ypically, the symptoms 'ill appear in a portion of the program farremoved from the actual error? +uch issues are ameliorated in languages 'ith automatic gar&agecollectionor ".55?

    [edit 1ibraries6he programming language uses li&rariesas its primary method of e>tension? 5n , a li&rary is

    a set of functions contained 'ithin a single EarchiveE file? Aach li&rary typically has a header file,'hich contains the prototypes of the functions contained 'ithin the li&rary that may &e used &y aprogram, and declarations of special data types and macro sym&ols used 'ith these functions? 5norder for a program to use a li&rary, it must include the li&raryIs header file, and the li&rary must&e linked 'ith the program, 'hich in many cases reGuires compiler flags(e?g?, -lm, shorthand forEmath li&raryE)?

    6he most common li&rary is the standard li&rary,'hich is specified &y the5+/and .+5 standardsand comes 'ith every implementation? (EFreestandingE 2em&edded3 implementations may provide only a su&set of the standard li&rary?) 6his li&rary supports streaminput and output, memory allocation, mathematics, character strings, and time values?

    .nother common set of li&rary functions are those used &y applications specifically targeted

    for =ni>and=ni>;likesystems, especially functions 'hich provide an interface to the kernel?6hese functions are detailed in various standards such as -/+5Kand the+ingle =5K+pecification?

    +ince many programs have &een 'ritten in , there are a 'ide variety of other li&raries availa&le?%i&raries are often 'ritten in &ecause compilers generate efficient o&ect codeH programmersthen create interfaces to the li&rary so that the routines can &e used from higher;level languageslike Java,-erl, and -ython?

    [edit MinimalismIs design is tied to its intended use as a systems implementation language? onseGuently, it doesnot reGuire run;time checks for conditions that 'ould never occur in correct programs, it

    provides simple, direct access to any addressa&le o&ect (for e>ample, memory;mapped devicecontrol registers), and its source;code e>pressions can &e translated in a straightfor'ard mannerto primitive machine operations in the e>ecuta&le code? +ome early compilers 'erecomforta&ly implemented (as a fe' distinct passes communicating via intermediate files) on-!-;11processors having only 10 address &itsH ho'ever, 99 assumes a D1 B$ minimumcompilation platform?

    . popular saying, repeated &y such nota&le language designers as $arne +troustrup,is that Emakes it easy to shoot yourself in the foot?E2735n other 'ords, permits some operations that are

    http://wiki/Type_I_and_type_II_errorshttp://wiki/Type_I_and_type_II_errorshttp://wiki/Mallochttp://wiki/Mallochttp://wiki/Memory_leakhttp://wiki/Memory_leakhttp://wiki/Memory_leakhttp://wiki/Garbage_collection_(computer_science)http://wiki/Garbage_collection_(computer_science)http://wiki/Garbage_collection_(computer_science)http://wiki/Garbage_collection_(computer_science)http://wiki/Resource_acquisition_is_initializationhttp://w/index.php?title=C_(programming_language)&action=edit&section=17http://wiki/Library_(software)http://wiki/Library_(software)http://wiki/Header_fileshttp://wiki/Compiler_flaghttp://wiki/Compiler_flaghttp://wiki/C_standard_libraryhttp://wiki/C_standard_libraryhttp://wiki/ISO_standardhttp://wiki/ISO_standardhttp://wiki/ANSI_C_standardhttp://wiki/ANSI_C_standardhttp://wiki/ANSI_C_standardhttp://wiki/Unixhttp://wiki/Unix-likehttp://wiki/Unix-likehttp://wiki/Kernel_(computer_science)http://wiki/Kernel_(computer_science)http://wiki/POSIXhttp://wiki/Single_UNIX_Specificationhttp://wiki/Single_UNIX_Specificationhttp://wiki/Single_UNIX_Specificationhttp://wiki/Single_UNIX_Specificationhttp://wiki/Object_codehttp://wiki/Java_(programming_language)http://wiki/Java_(programming_language)http://wiki/Perlhttp://wiki/Python_(programming_language)http://w/index.php?title=C_(programming_language)&action=edit&section=18http://wiki/PDP-11http://wiki/Bjarne_Stroustruphttp://wiki/Bjarne_Stroustruphttp://wiki/Type_I_and_type_II_errorshttp://wiki/Mallochttp://wiki/Memory_leakhttp://wiki/Garbage_collection_(computer_science)http://wiki/Garbage_collection_(computer_science)http://wiki/Resource_acquisition_is_initializationhttp://w/index.php?title=C_(programming_language)&action=edit&section=17http://wiki/Library_(software)http://wiki/Header_fileshttp://wiki/Compiler_flaghttp://wiki/C_standard_libraryhttp://wiki/ISO_standardhttp://wiki/ANSI_C_standardhttp://wiki/ANSI_C_standardhttp://wiki/Unixhttp://wiki/Unix-likehttp://wiki/Kernel_(computer_science)http://wiki/POSIXhttp://wiki/Single_UNIX_Specificationhttp://wiki/Single_UNIX_Specificationhttp://wiki/Object_codehttp://wiki/Java_(programming_language)http://wiki/Perlhttp://wiki/Python_(programming_language)http://w/index.php?title=C_(programming_language)&action=edit&section=18http://wiki/PDP-11http://wiki/Bjarne_Stroustrup
  • 8/13/2019 40232723 C Programming Language

    14/22

    sometimes not desira&le, and thus many simple programming errors are not detected &y thecompiler and may not &e readily apparent at runtime? 5f sufficient care and discipline are notused in programming and maintenance, this may lead to programs 'ith unpredicta&le &ehaviorand security holes? (.lthough this is not uniGue to , provides less protection than do manyother programming languages?)

    With time, e>ternal tools 'ere developed to perform e>tra compile; and run;timechecking?othing prevents a compiler from providing checks not reGuired &y the language definition,although for some systems programmingapplications the performance cost of additional run;time checking may &e deemed unaccepta&le?

    5n their response to criticism of not &eing astrongly;typed programming language,Bernighanand "itchie made reference to the &asic design philosophyof : Eevertheless, retains the&asic philosophy that programmers kno' 'hat they are doingH it only reGuires that they statetheir intentions e>plicitly?E23293

    [edit Absent features

    6he relatively lo';level nature of the language affords the programmer close control over 'hat

    the computer does, 'hile allo'ing specially tailoring and aggressive optimiation for a particularplatform? 6his allo's the code to run efficiently on very limited hard'are, such as em&eddedsystems?

    does not have some features that are availa&le in some other programming languages:

    o assignment of arrays or strings (copying can &e done via standard functionsHassignment of o&ects having structor uniontype is supported)

    o automatic gar&age collection

    o reGuirement for&ounds checkingof arrays

    o operations on 'hole arrays

    o synta> for ranges,such as the D..notation used in several languages

    o separate $ooleantype: ero4nonero is used instead213

    o nested functiondefinitions

    o formal closuresor functions as parameters (only function and varia&le pointers)

    o generatorsor coroutinesH intra;thread control flo' consists of nested function calls,e>cept for the use of thelongmporsetconte>tli&rary functions

    o e>ception handlingH standard li&rary functions signify error conditions 'ith the glo&alerrnovaria&le and4or special return values

    /nly rudimentary support for modular programming

    o compile;time polymorphism in the form of functionor operatoroverloading /nly rudimentary support for generic programming

    ery limited support for o&ect;oriented programming'ith regard topolymorphismandinheritance

    %imited support for encapsulation

    o native support for multithreadingand net'orking

    http://wiki/Runtimehttp://wiki/Runtimehttp://wiki/Systems_programminghttp://wiki/Strongly-typed_programming_languagehttp://wiki/Strongly-typed_programming_languagehttp://wiki/Strongly-typed_programming_languagehttp://wiki/Design_philosophyhttp://w/index.php?title=C_(programming_language)&action=edit&section=19http://wiki/Embedded_systemshttp://wiki/Embedded_systemshttp://wiki/Garbage_collection_(computer_science)http://wiki/Bounds_checkinghttp://wiki/Array_programminghttp://wiki/Range_(computer_science)http://wiki/Range_(computer_science)http://wiki/Booleanhttp://wiki/Nested_functionhttp://wiki/Nested_functionhttp://wiki/Closure_(computer_science)http://wiki/Generator_(computer_science)http://wiki/Coroutinehttp://wiki/Longjmphttp://wiki/Longjmphttp://wiki/Setcontexthttp://wiki/Setcontexthttp://wiki/Setcontexthttp://wiki/Exception_handlinghttp://wiki/Errnohttp://wiki/Function_(computer_science)http://wiki/Operatorhttp://wiki/Method_overloadinghttp://wiki/Generic_programminghttp://wiki/Object-oriented_programminghttp://wiki/Polymorphism_in_object-oriented_programminghttp://wiki/Polymorphism_in_object-oriented_programminghttp://wiki/Inheritance_(computer_science)http://wiki/Information_hidinghttp://wiki/Multithreadinghttp://wiki/Computer_networkshttp://wiki/Runtimehttp://wiki/Systems_programminghttp://wiki/Strongly-typed_programming_languagehttp://wiki/Design_philosophyhttp://w/index.php?title=C_(programming_language)&action=edit&section=19http://wiki/Embedded_systemshttp://wiki/Embedded_systemshttp://wiki/Garbage_collection_(computer_science)http://wiki/Bounds_checkinghttp://wiki/Array_programminghttp://wiki/Range_(computer_science)http://wiki/Booleanhttp://wiki/Nested_functionhttp://wiki/Closure_(computer_science)http://wiki/Generator_(computer_science)http://wiki/Coroutinehttp://wiki/Longjmphttp://wiki/Setcontexthttp://wiki/Exception_handlinghttp://wiki/Errnohttp://wiki/Function_(computer_science)http://wiki/Operatorhttp://wiki/Method_overloadinghttp://wiki/Generic_programminghttp://wiki/Object-oriented_programminghttp://wiki/Polymorphism_in_object-oriented_programminghttp://wiki/Inheritance_(computer_science)http://wiki/Information_hidinghttp://wiki/Multithreadinghttp://wiki/Computer_networks
  • 8/13/2019 40232723 C Programming Language

    15/22

    o standard li&raries for computer graphicsand several other application programmingneeds

    . num&er of these features are availa&le as e>tensions in some compilers, or can &e supplied &ythird;party li&raries, or can &e simulated &y adopting certain coding disciplines?

    [edit +ndefined be!avior

    *any operations in that have undefined &ehaviorare not reGuired to &e diagnosed at compiletime? 5n the case of , Eundefined &ehaviorE means that the e>act &ehavior 'hich arises is notspecified &y the standard, and e>actly 'hat 'ill happen does not have to &e documented &y the implementation? . famous, although misleading, e>pression in the ne'sgroupscomp?std?candcomp?lang?cis that the program could cause Edemons to fly out of your noseE?2113+ometimes inpractice 'hat happens for an instance of undefined &ehavior is a&ugthat is hard to track do'nand 'hich may corrupt the contents of memory? +ometimes a particular compiler generates 'ell;&ehaved actions that are not the same as 'ould &e o&tained using a different compiler? 6hereason some &ehavior has &een left undefined is to allo' compilers for a 'ide variety ofinstruction setarchitectures to generate more efficient e>ecuta&le code for 'ell;defined &ehavior,'hich 'as deemed important for Is primary role as a systems implementation languageH thus

    makes it the programmerIs responsi&ility to avoid undefined &ehavior? A>amples of undefined&ehavior are:

    accessing outside the &ounds of an array

    overflo'ing a signed integer

    reaching the end of a function 'ithout finding a return statement, 'hen the return value isused

    reading the value of a varia&le &efore initialiing it

    6hese operations are all programming errors that could occur using many programminglanguagesH dra's criticism &ecause its standard e>plicitly identifies numerous cases of

    undefined &ehavior, including some 'here the &ehavior could have &een made 'ell defined, anddoes not specify any run;time error handling mechanism?

    5nvoking ))lus!on a stream opened for input is an e>ample of a different kind of undefined&ehavior, not necessarily a programming error &ut a case for 'hich some conformingimplementations may provide 'ell;defined, useful semantics (in this e>ample, presuma&lydiscarding input through the ne>t ne';line) as an allo'ed extension? =se of such nonstandarde>tensions generally limits soft'are porta&ility?

    [edit 1anguage tools6ools have &een created to help programmers avoid some of the pro&lems inherent in thelanguage, such as statements 'ith undefined &ehavior or statements that are not a good practice

    &ecause they are more likely to result in unintended &ehavior or run;time errors?.utomated source code checking and auditing are &eneficial in any language, and for manysuch tools e>ist, such as %int? . common practice is to use %int to detect Guestiona&le code 'hena program is first 'ritten? /nce a program passes %int, it is then compiled using the compiler?.lso, many compilers can optionally 'arn a&out syntactically valid constructs that are likely toactually &e errors? *5+". is a proprietary set of guidelines to avoid such Guestiona&le code,developed for em&edded systems?

    http://wiki/Computer_graphicshttp://w/index.php?title=C_(programming_language)&action=edit&section=20http://wiki/Undefined_behaviorhttp://wiki/Compile_timehttp://wiki/Compile_timehttp://wiki/Newsgrouphttp://tmp/svg08.tmp/news:comp.std.chttp://tmp/svg08.tmp/news:comp.std.chttp://tmp/svg08.tmp/news:comp.lang.chttp://wiki/Nasal_demonhttp://wiki/Software_bughttp://wiki/Software_bughttp://wiki/Instruction_sethttp://wiki/Fflushhttp://wiki/Software_portabilityhttp://w/index.php?title=C_(programming_language)&action=edit&section=21http://wiki/Lint_programming_toolhttp://wiki/MISRA_Chttp://wiki/MISRA_Chttp://wiki/Computer_graphicshttp://w/index.php?title=C_(programming_language)&action=edit&section=20http://wiki/Undefined_behaviorhttp://wiki/Compile_timehttp://wiki/Compile_timehttp://wiki/Newsgrouphttp://tmp/svg08.tmp/news:comp.std.chttp://tmp/svg08.tmp/news:comp.lang.chttp://wiki/Nasal_demonhttp://wiki/Software_bughttp://wiki/Instruction_sethttp://wiki/Fflushhttp://wiki/Software_portabilityhttp://w/index.php?title=C_(programming_language)&action=edit&section=21http://wiki/Lint_programming_toolhttp://wiki/MISRA_C
  • 8/13/2019 40232723 C Programming Language

    16/22

    6here are also compilers, li&raries and operating system level mechanisms for performing array&ounds checking,&uffer overflo'detection, serialiationand automatic gar&age collection,thatare not a standard part of ?

    6ools such as -urify,algrind, and linking 'ith li&raries containing special versions of thememory allocation functionscan help uncover runtime memory errors?

    protois a program that 'ill read a source file and output prototypes of all the functions'ithin the source file? 6his program can &e used in conunction 'ith themakecommand tocreate ne' files containing prototypes each time the source file has &een changed? 6heseprototype files can &e included &y the original source file (e?g?, as Efilename?pE), 'hich reducesthe pro&lems of keeping function definitions and source files in agreement?

    [edit &elated languages has directly or indirectly influenced many later languages such as Java,,-erl, -Is cshandrcshells? 6he most pervasive influence has &een syntactical:all of the languages mentioned com&ine the statement and (more or less recognia&ly) e>pressionsynta> of 'ith type systems, data models and4or large;scale program structures that differ from

    those of , sometimes radically?When o&ect;oriented languages &ecame popular,88and/&ective;'ere t'o differente>tensions of that provided o&ect;oriented capa&ilities? $oth languages 'ere originallyimplemented as preprocessors ;; source code 'as translated into , and then compiled 'ith a compiler?

    $arne +troustrupdevised the 88 programming language as one approach to providing o&ect;oriented functionality 'ith ;like synta>? 88 adds greater typing strength, scoping and othertools useful in o&ect;oriented programming and permits generic programmingvia templates?early a superset of , 88 no' supports most of , 'ith a fe' e>ceptions (see ompati&ilityof and 88for an e>haustive list of differences)?

    =nlike 88, 'hich maintains nearly complete &ack'ards compati&ility 'ith , the! languagemakes a clean &reak 'ith 'hile maintaining the same general synta>? 5t a&andons a num&er offeatures of 'hich Walter $right(the designer of !) considered undesira&le, including the preprocessorand trigraphs?+ome, &ut not all, of !Is e>tensions to overlap 'ith those of 88?

    /&ective;'as originally a very EthinE layer on top of, and remains a strict superset of, thatpermits o&ect;oriented programming using a hy&rid dynamic4static typing paradigm? /&ective; derives its synta> from &oth and +malltalk: synta> that involves preprocessing, e>pressions,function declarations and function calls is inherited from , 'hile the synta> for o&ect;orientedfeatures 'as originally taken from +malltalk?

    %im&ois a language developed &y the same team at $ell %a&s that 'as responsi&le for and=ni>, and 'hile retaining some of the synta> and the general style, introduced gar&age

    collection, +-&ased concurrency and other maor innovations?2citation neee3

    [edit ee also omparison of programming languages

    5nternational /&fuscated ode ontest

    %ist of articles 'ith programs

    %ist of compilers

    http://wiki/Buffer_overflowhttp://wiki/Serializationhttp://wiki/Serializationhttp://wiki/Garbage_collection_(computer_science)http://wiki/Garbage_collection_(computer_science)http://wiki/IBM_Rational_Purifyhttp://wiki/IBM_Rational_Purifyhttp://wiki/Valgrindhttp://wiki/Mallochttp://invisible-island.net/cprotohttp://wiki/Make_(software)http://wiki/Make_(software)http://w/index.php?title=C_(programming_language)&action=edit&section=22http://wiki/Java_(programming_language)http://wiki/C_Sharp_(programming_language)http://wiki/C_Sharp_(programming_language)http://wiki/Perlhttp://wiki/Perlhttp://wiki/PHPhttp://wiki/JavaScripthttp://wiki/LPC_(programming_language)http://wiki/C_Shellhttp://wiki/C_Shellhttp://w/index.php?title=RC_Shell&action=edit&redlink=1http://w/index.php?title=RC_Shell&action=edit&redlink=1http://wiki/C++http://wiki/C++http://wiki/Objective-Chttp://wiki/Objective-Chttp://wiki/Bjarne_Stroustruphttp://wiki/Generic_programminghttp://wiki/Compatibility_of_C_and_C++http://wiki/Compatibility_of_C_and_C++http://wiki/D_(programming_language)http://wiki/D_(programming_language)http://wiki/Walter_Brighthttp://wiki/C_preprocessorhttp://wiki/C_preprocessorhttp://wiki/C_preprocessorhttp://wiki/C_trigraphhttp://wiki/C_trigraphhttp://wiki/Objective-Chttp://wiki/Smalltalkhttp://wiki/Limbo_(programming_language)http://wiki/Communicating_sequential_processeshttp://tmp/svg08.tmp//wiki/Wikipedia:Citation_neededhttp://tmp/svg08.tmp//wiki/Wikipedia:Citation_neededhttp://tmp/svg08.tmp//wiki/Wikipedia:Citation_neededhttp://w/index.php?title=C_(programming_language)&action=edit&section=23http://wiki/Comparison_of_programming_languageshttp://wiki/International_Obfuscated_C_Code_Contesthttp://wiki/List_of_articles_with_C_programshttp://wiki/List_of_compilershttp://wiki/Buffer_overflowhttp://wiki/Serializationhttp://wiki/Garbage_collection_(computer_science)http://wiki/IBM_Rational_Purifyhttp://wiki/Valgrindhttp://wiki/Mallochttp://invisible-island.net/cprotohttp://wiki/Make_(software)http://w/index.php?title=C_(programming_language)&action=edit&section=22http://wiki/Java_(programming_language)http://wiki/C_Sharp_(programming_language)http://wiki/Perlhttp://wiki/PHPhttp://wiki/JavaScripthttp://wiki/LPC_(programming_language)http://wiki/C_Shellhttp://w/index.php?title=RC_Shell&action=edit&redlink=1http://wiki/C++http://wiki/Objective-Chttp://wiki/Bjarne_Stroustruphttp://wiki/Generic_programminghttp://wiki/Compatibility_of_C_and_C++http://wiki/Compatibility_of_C_and_C++http://wiki/D_(programming_language)http://wiki/Walter_Brighthttp://wiki/C_preprocessorhttp://wiki/C_preprocessorhttp://wiki/C_trigraphhttp://wiki/Objective-Chttp://wiki/Smalltalkhttp://wiki/Limbo_(programming_language)http://wiki/Communicating_sequential_processeshttp://tmp/svg08.tmp//wiki/Wikipedia:Citation_neededhttp://w/index.php?title=C_(programming_language)&action=edit&section=23http://wiki/Comparison_of_programming_languageshttp://wiki/International_Obfuscated_C_Code_Contesthttp://wiki/List_of_articles_with_C_programshttp://wiki/List_of_compilers
  • 8/13/2019 40232723 C Programming Language

    17/22

    omparison of -ascal and

    [edit 2ootnotes1? 3 !ennis *? "itchie (Jan 199@)? E6he !evelopment of the %anguageE? "etrieved on Jan 1,

    ? E6he scheme of type composition adopted &y o'es considera&le de&t to .lgol 0,

    although it did not, perhaps, emerge in a form that .lgolIs adherents 'ould approve of?E? 3 +te'art, $ill (;1;7)? E

  • 8/13/2019 40232723 C Programming Language

    18/22

    [edit #,ternal lin4s

    Wiki&ookshas a &ook on the topic ofC Programming

    .t Wikiversity, you can learn a&out: Topic:C

    6he current +tandard (99 'ith 6echnical corrigenda 61, 6, and 6@included)-!F (@?01*i$)

    5+/ Working roup (official We& site)

    The +evelopment o& the C Language&y !ennis *? "itchie

    comp?lang?c FreGuently .sked Ouestions

    6he $ook&y *?$anahan;!?$rady;*?!oran (.ddison;Wesley, nd ed?) L &ook for&eginning and intermediate students, no' out of print and free to do'nload?

    The Ne% C Stanar: An economic an cultural commentary-!F (1?*i$)L .n

    unpu&lished &ook a&out Edetailed analysis of the 5nternational +tandard for the language?E

    v5d5e

    C programming language

    1ibraries standard li&rary6gli&c6!ietli&c6uli&c6e'li&

    1anguage 2eatures+tring6+ynta>6-reprocessor6aria&le types and declarations6Functions

    Descendants 886/&ective;6!66yclone6Java

    C and t!er 1anguagesompati&ility of and 886/perators in and 886omparison of -ascal and 6 to Java &yte;code compiler

    "etrieved from Ehttp:44en?'ikipedia?org4'iki4N(programmingNlanguage)Eategories: programming languageQ urly &racket programming languagesQ -roceduralprogramming languages

  • 8/13/2019 40232723 C Programming Language

    19/22

    *ain page

    ontents

    Featured content

    urrent events

    "andom articleearc!

    Top of Form

    Go

    Search

    Bottom of Form

    Interaction

    .&out Wikipedia

    ommunity portal

    "ecent changes

    ontact Wikipedia !onate to Wikipedia

  • 8/13/2019 40232723 C Programming Language

    20/22

    $osanski

    $rehoneg

    ]_`

    atal

    esky orsu

    ymraeg

    !ansk

    !eutsch

    Aesti

    qq

    Aspawol

    Asperanto

    Auskara

    Franxais

    aeilge

    alego

  • 8/13/2019 40232723 C Programming Language

    21/22

    ederlands

    orsk (&okml)

    orsk (nynorsk)

    -olski

    -ortugus

    "om[n

    b

    +hGip

    +imple Anglish

    +lovenina

    +lovenina

    4 +rpski

    +rpskohrvatski 4 `

    +uomi

    +venska

    6aG&aylit

    6ing it

    6rkxe

    ``

    {{{

    emaitka

    6his page 'as last modified on +eptem&er , at 0:D0?

    .ll te>t is availa&le under the terms of the = Free !ocumentation %icense? (+eeCopyrig!tsfor details?)

    http://nl.wikipedia.org/wiki/C_(programmeertaal)http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9Ehttp://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9Ehttp://no.wikipedia.org/wiki/C_(programmeringsspr%C3%A5k)http://nn.wikipedia.org/wiki/Programmeringsspr%C3%A5ket_Chttp://km.wikipedia.org/wiki/%E1%9E%97%E1%9E%B6%E1%9E%9F%E1%9E%B6_Chttp://km.wikipedia.org/wiki/%E1%9E%97%E1%9E%B6%E1%9E%9F%E1%9E%B6_Chttp://km.wikipedia.org/wiki/%E1%9E%97%E1%9E%B6%E1%9E%9F%E1%9E%B6_Chttp://pl.wikipedia.org/wiki/C_(j%C4%99zyk_programowania)http://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)http://ro.wikipedia.org/wiki/C_(limbaj_de_programare)http://ru.wikipedia.org/wiki/%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)http://sq.wikipedia.org/wiki/Gjuha_programuese_Chttp://simple.wikipedia.org/wiki/C_(programming_language)http://sk.wikipedia.org/wiki/C_(programovac%C3%AD_jazyk)http://sl.wikipedia.org/wiki/Programski_jezik_Chttp://sr.wikipedia.org/wiki/C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D1%98%D0%B5%D0%B7%D0%B8%D0%BA)http://sh.wikipedia.org/wiki/C_(programski_jezik)http://fi.wikipedia.org/wiki/C_(ohjelmointikieli)http://sv.wikipedia.org/wiki/C_(programspr%C3%A5k)http://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%BF_%E0%AE%A8%E0%AE%BF%E0%AE%B0%E0%AE%B2%E0%AE%BE%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%B2%E0%AF%8D_%E0%AE%AE%E0%AF%8A%E0%AE%B4%E0%AE%BFhttp://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%BF_%E0%AE%A8%E0%AE%BF%E0%AE%B0%E0%AE%B2%E0%AE%BE%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%B2%E0%AF%8D_%E0%AE%AE%E0%AF%8A%E0%AE%B4%E0%AE%BFhttp://kab.wikipedia.org/wiki/C_(tameslayt)http://te.wikipedia.org/wiki/%E0%B0%B8%E0%B1%80http://te.wikipedia.org/wiki/%E0%B0%B8%E0%B1%80http://th.wikipedia.org/wiki/%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B8%8B%E0%B8%B5http://th.wikipedia.org/wiki/%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B8%8B%E0%B8%B5http://vi.wikipedia.org/wiki/C_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)http://tr.wikipedia.org/wiki/C_(programlama_dili)http://bug.wikipedia.org/wiki/C_(basa_maprogram)http://bug.wikipedia.org/wiki/C_(basa_maprogram)http://bug.wikipedia.org/wiki/C_(basa_maprogram)http://bug.wikipedia.org/wiki/C_(basa_maprogram)http://uk.wikipedia.org/wiki/%D0%A1_(%D0%BC%D0%BE%D0%B2%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)http://wuu.wikipedia.org/wiki/C_(%E7%A8%8B%E5%BC%8F%E7%BC%96%E5%88%B6%E4%B8%AA%E8%A8%80%E8%AF%9D)http://wuu.wikipedia.org/wiki/C_(%E7%A8%8B%E5%BC%8F%E7%BC%96%E5%88%B6%E4%B8%AA%E8%A8%80%E8%AF%9D)http://wuu.wikipedia.org/wiki/C_(%E7%A8%8B%E5%BC%8F%E7%BC%96%E5%88%B6%E4%B8%AA%E8%A8%80%E8%AF%9D)http://wuu.wikipedia.org/wiki/C_(%E7%A8%8B%E5%BC%8F%E7%BC%96%E5%88%B6%E4%B8%AA%E8%A8%80%E8%AF%9D)http://yi.wikipedia.org/wiki/C_(%D7%A4%D7%A8%D7%90%D7%92%D7%A8%D7%90%D7%9D_%D7%A9%D7%A4%D7%A8%D7%90%D7%9A)http://yi.wikipedia.org/wiki/C_(%D7%A4%D7%A8%D7%90%D7%92%D7%A8%D7%90%D7%9D_%D7%A9%D7%A4%D7%A8%D7%90%D7%9A)http://zh-yue.wikipedia.org/wiki/C%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80http://zh-yue.wikipedia.org/wiki/C%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80http://bat-smg.wikipedia.org/wiki/C_(kalba)http://zh.wikipedia.org/wiki/C%E8%AF%AD%E8%A8%80http://zh.wikipedia.org/wiki/C%E8%AF%AD%E8%A8%80http://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_Licensehttp://en.wikipedia.org/wiki/Wikipedia:Copyrightshttp://nl.wikipedia.org/wiki/C_(programmeertaal)http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9Ehttp://no.wikipedia.org/wiki/C_(programmeringsspr%C3%A5k)http://nn.wikipedia.org/wiki/Programmeringsspr%C3%A5ket_Chttp://km.wikipedia.org/wiki/%E1%9E%97%E1%9E%B6%E1%9E%9F%E1%9E%B6_Chttp://pl.wikipedia.org/wiki/C_(j%C4%99zyk_programowania)http://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)http://ro.wikipedia.org/wiki/C_(limbaj_de_programare)http://ru.wikipedia.org/wiki/%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)http://sq.wikipedia.org/wiki/Gjuha_programuese_Chttp://simple.wikipedia.org/wiki/C_(programming_language)http://sk.wikipedia.org/wiki/C_(programovac%C3%AD_jazyk)http://sl.wikipedia.org/wiki/Programski_jezik_Chttp://sr.wikipedia.org/wiki/C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D1%98%D0%B5%D0%B7%D0%B8%D0%BA)http://sh.wikipedia.org/wiki/C_(programski_jezik)http://fi.wikipedia.org/wiki/C_(ohjelmointikieli)http://sv.wikipedia.org/wiki/C_(programspr%C3%A5k)http://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%BF_%E0%AE%A8%E0%AE%BF%E0%AE%B0%E0%AE%B2%E0%AE%BE%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%B2%E0%AF%8D_%E0%AE%AE%E0%AF%8A%E0%AE%B4%E0%AE%BFhttp://kab.wikipedia.org/wiki/C_(tameslayt)http://te.wikipedia.org/wiki/%E0%B0%B8%E0%B1%80http://th.wikipedia.org/wiki/%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B8%8B%E0%B8%B5http://vi.wikipedia.org/wiki/C_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)http://tr.wikipedia.org/wiki/C_(programlama_dili)http://bug.wikipedia.org/wiki/C_(basa_maprogram)http://uk.wikipedia.org/wiki/%D0%A1_(%D0%BC%D0%BE%D0%B2%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)http://wuu.wikipedia.org/wiki/C_(%E7%A8%8B%E5%BC%8F%E7%BC%96%E5%88%B6%E4%B8%AA%E8%A8%80%E8%AF%9D)http://yi.wikipedia.org/wiki/C_(%D7%A4%D7%A8%D7%90%D7%92%D7%A8%D7%90%D7%9D_%D7%A9%D7%A4%D7%A8%D7%90%D7%9A)http://zh-yue.wikipedia.org/wiki/C%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80http://bat-smg.wikipedia.org/wiki/C_(kalba)http://zh.wikipedia.org/wiki/C%E8%AF%AD%E8%A8%80http://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_Licensehttp://en.wikipedia.org/wiki/Wikipedia:Copyrights
  • 8/13/2019 40232723 C Programming Language

    22/22

    Wikipedia is a registered trademark of the Wikimedia Foundation, 5nc?, a =?+?registered D1(c)(@)ta>;deducti&lenonprofitcharity?

    -rivacy policy

    .&out Wikipedia

    !isclaimers

    http://www.wikimediafoundation.org/http://wikimediafoundation.org/wiki/Deductibility_of_donationshttp://wikimediafoundation.org/wiki/Deductibility_of_donationshttp://en.wikipedia.org/wiki/Non-profit_organizationhttp://en.wikipedia.org/wiki/Charitable_organizationhttp://en.wikipedia.org/wiki/Charitable_organizationhttp://wikimediafoundation.org/wiki/Privacy_policyhttp://tmp/svg08.tmp//wiki/Wikipedia:Abouthttp://tmp/svg08.tmp//wiki/Wikipedia:General_disclaimerhttp://www.wikimediafoundation.org/http://wikimediafoundation.org/wiki/Deductibility_of_donationshttp://en.wikipedia.org/wiki/Non-profit_organizationhttp://en.wikipedia.org/wiki/Charitable_organizationhttp://wikimediafoundation.org/wiki/Privacy_policyhttp://tmp/svg08.tmp//wiki/Wikipedia:Abouthttp://tmp/svg08.tmp//wiki/Wikipedia:General_disclaimer