%!PS-Adobe-3.0 %%Creator: groff version 1.16.1 %%CreationDate: Sun Jul 14 13:59:04 2002 %%DocumentNeededResources: font Times-Roman %%+ font Times-Italic %%+ font Times-Bold %%+ font Symbol %%+ font Courier %%DocumentSuppliedResources: procset grops 1.16 1 %%Pages: 31 %%PageOrder: Ascend %%Orientation: Portrait %%EndComments %%BeginProlog %%BeginResource: procset grops 1.16 1 /setpacking where{ pop currentpacking true setpacking }if /grops 120 dict dup begin /SC 32 def /A/show load def /B{0 SC 3 -1 roll widthshow}bind def /C{0 exch ashow}bind def /D{0 exch 0 SC 5 2 roll awidthshow}bind def /E{0 rmoveto show}bind def /F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def /G{0 rmoveto 0 exch ashow}bind def /H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /I{0 exch rmoveto show}bind def /J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def /K{0 exch rmoveto 0 exch ashow}bind def /L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /M{rmoveto show}bind def /N{rmoveto 0 SC 3 -1 roll widthshow}bind def /O{rmoveto 0 exch ashow}bind def /P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def /Q{moveto show}bind def /R{moveto 0 SC 3 -1 roll widthshow}bind def /S{moveto 0 exch ashow}bind def /T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def /SF{ findfont exch [exch dup 0 exch 0 exch neg 0 0]makefont dup setfont [exch/setfont cvx]cvx bind def }bind def /MF{ findfont [5 2 roll 0 3 1 roll neg 0 0]makefont dup setfont [exch/setfont cvx]cvx bind def }bind def /level0 0 def /RES 0 def /PL 0 def /LS 0 def /MANUAL{ statusdict begin/manualfeed true store end }bind def /PLG{ gsave newpath clippath pathbbox grestore exch pop add exch pop }bind def /BP{ /level0 save def 1 setlinecap 1 setlinejoin 72 RES div dup scale LS{ 90 rotate }{ 0 PL translate }ifelse 1 -1 scale }bind def /EP{ level0 restore showpage }bind def /DA{ newpath arcn stroke }bind def /SN{ transform .25 sub exch .25 sub exch round .25 add exch round .25 add exch itransform }bind def /DL{ SN moveto SN lineto stroke }bind def /DC{ newpath 0 360 arc closepath }bind def /TM matrix def /DE{ TM currentmatrix pop translate scale newpath 0 0 .5 0 360 arc closepath TM setmatrix }bind def /RC/rcurveto load def /RL/rlineto load def /ST/stroke load def /MT/moveto load def /CL/closepath load def /FL{ currentgray exch setgray fill setgray }bind def /BL/fill load def /LW/setlinewidth load def /RE{ findfont dup maxlength 1 index/FontName known not{1 add}if dict begin { 1 index/FID ne{def}{pop pop}ifelse }forall /Encoding exch def dup/FontName exch def currentdict end definefont pop }bind def /DEFS 0 def /EBEGIN{ moveto DEFS begin }bind def /EEND/end load def /CNT 0 def /level1 0 def /PBEGIN{ /level1 save def translate div 3 1 roll div exch scale neg exch neg exch translate 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit []0 setdash /setstrokeadjust where{ pop false setstrokeadjust }if /setoverprint where{ pop false setoverprint }if newpath /CNT countdictstack def userdict begin /showpage{}def }bind def /PEND{ clear countdictstack CNT sub{end}repeat level1 restore }bind def end def /setpacking where{ pop setpacking }if %%EndResource %%IncludeResource: font Times-Roman %%IncludeResource: font Times-Italic %%IncludeResource: font Times-Bold %%IncludeResource: font Symbol %%IncludeResource: font Courier grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron /scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent /ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen /period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon /semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O /P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex /underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y /z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft /guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl /endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut /dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash /quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen /brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft /logicalnot/minus/registered/macron/degree/plusminus/twosuperior /threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior /ordmasculine/guilsinglright/onequarter/onehalf/threequarters /questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash /ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def /Courier@0 ENC0/Courier RE/Times-Bold@0 ENC0/Times-Bold RE /Times-Italic@0 ENC0/Times-Italic RE/Times-Roman@0 ENC0/Times-Roman RE %%EndProlog %%Page: 1 1 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 12 Q/F1 18/Times-Roman@0 SF 4.5(CR)231.525 130.8 S(eference Manual)-4.5 E/F2 10/Times-Italic@0 SF(Dennis M. Ritc) 269.83 177.8 Q(hie)-.15 E(Bell T)249.035 191.55 Q(elephone Labor)-.92 E (atories)-.15 E(Murr)243.01 202.55 Q(ay Hill, Ne)-.15 E 2.5(wJ)-.15 G (er)-2.75 E(se)-.1 E 2.5(y0)-.3 G(7974)-2.5 E/F3 10/Times-Bold@0 SF 2.5 (1. Intr)72 263.05 R(oduction)-.18 E F0 3.369(Ci)82 276.25 S 3.369(sac) -3.369 G .869(omputer language based on the earlier language B [1].) -3.369 F .868(The languages and their compilers dif)5.868 F .868 (fer in tw)-.25 F(o)-.1 E 1.109(major w)72 287.25 R 1.109 (ays: C introduces the notion of types, and de\214nes appropriate e)-.1 F 1.11(xtra syntax and semantics; also, C on the)-.15 F/F4 8 /Times-Roman@0 SF(PDP)72 298.25 Q F0(-11 is a true compiler)A 2.5(,p)-.4 G(roducing machine code where B produced interpreti)-2.5 E .3 -.15(ve c) -.25 H(ode.).15 E .004(Most of the softw)82 313.65 R .004(are for the) -.1 F F4(UNIX)2.504 E F0 .004(time-sharing system [2] is written in C, \ as is the operating system itself.)2.504 F 2.504(Ci)5.004 G 2.504(sa) -2.504 G(l-)-2.504 E .301(so a)72 324.65 R -.25(va)-.2 G .301 (ilable on the).25 F F4(HIS)2.801 E F0 .301 (6070 computer at Murray Hill and and on the)2.801 F F4(IBM)2.802 E F0 .302(System/370 at Holmdel [3].)2.802 F .302(This paper is)5.302 F 2.756 (am)72 335.65 S .255 (anual only for the C language itself as implemented on the)-2.756 F F4 (PDP)2.755 E F0 2.755(-11. Ho)B(we)-.25 E -.15(ve)-.25 G 1.055 -.4(r, h) .15 H .255(ints are gi).4 F -.15(ve)-.25 G 2.755(no).15 G .255 (ccasionally in the)-2.755 F(te)72 346.65 Q (xt of implementation-dependent features.)-.15 E(The)82 362.05 Q F4 (UNIX)3.224 E F0(Programmer')3.224 E 3.224(sM)-.55 G .725 (anual [4] describes the library routines a)-3.224 F -.25(va)-.2 G .725 (ilable to C programs under).25 F F4(UNIX)3.225 E F0 3.225(,a)C .725 (nd also)-3.225 F .273 (the procedures for compiling programs under that system.)72 373.05 R -.74(``)5.273 G(The).74 E F4(GCOS)2.773 E F0 2.772(CL)2.773 G(ibrary') -2.772 E 2.772('b)-.74 G 2.772(yL)-2.772 G .272 (esk and Barres [5] describes)-2.772 F .038(routines a)72 384.05 R -.25 (va)-.2 G .039 (ilable under that system as well as compilation procedures.).25 F(Man) 5.039 E 2.539(yo)-.15 G 2.539(ft)-2.539 G .039 (hese routines, particularly the ones)-2.539 F(ha)72 395.05 Q .037 (ving to do with I/O, are also pro)-.2 F .037(vided under)-.15 F F4 (UNIX)2.537 E F0 5.037(.F)C(inally)-5.037 E 2.537(,`)-.65 G .037 (`Programming in C)-3.277 F/F5 10/Symbol SF(-)A F0 2.536(AT)2.537 G (utorial,)-2.986 E 1.516 -.74('' b)-.7 H 2.536(yB).74 G 2.536(.W)-2.536 G 2.536(.K)-3.456 G(ernighan)-2.786 E ([6], is as useful as promised by its title and the author')72 406.05 Q 2.5(sp)-.55 G(re)-2.5 E(vious introductions to alle)-.25 E (gedly impenetrable subjects.)-.15 E F3 2.5(2. Lexical)72 433.55 R(con) 2.5 E -.1(ve)-.4 G(ntions).1 E F0 .302(There are six kinds of tok)82 446.75 R .302(ens: identi\214ers, k)-.1 F -.15(ey)-.1 G -.1(wo).15 G .302(rds, constants, strings, e).1 F .302 (xpression operators, and other separators.)-.15 F .396 (In general blanks, tabs, ne)72 457.75 R .396 (wlines, and comments as described belo)-.25 F 2.896(wa)-.25 G .395 (re ignored e)-2.896 F .395(xcept as the)-.15 F 2.895(ys)-.15 G(erv) -2.895 E 2.895(et)-.15 G 2.895(os)-2.895 G .395(eparate to-)-2.895 F -.1 (ke)72 468.75 S 2.509(ns. At).1 F .009(least one of these characters is\ required to separate otherwise adjacent identi\214ers, constants, and \ certain op-)2.509 F(erator)72 479.75 Q(-pairs.)-.2 E 1.317 (If the input stream has been parsed into tok)82 495.15 R 1.317 (ens up to a gi)-.1 F -.15(ve)-.25 G 3.817(nc).15 G(haracter)-3.817 E 3.817(,t)-.4 G 1.317(he ne)-3.817 F 1.317(xt tok)-.15 F 1.317(en is tak) -.1 F 1.317(en to include the)-.1 F (longest string of characters which could possibly constitute a tok)72 506.15 Q(en.)-.1 E 2.5(2.1 Comments)72 528.15 R(The characters)82 541.35 Q F3(/)5.832 E F0(*)2.2 I (introduce a comment, which terminates with the characters)5.832 -2.2 M (*)5.832 2.2 M F3(/)-2.2 I F0(.)A 2.5(2.2 Identi\214ers)72 563.35 R (\(Names\))2.5 E .162(An identi\214er is a sequence of letters and digi\ ts; the \214rst character must be alphabetic.)82 576.55 R .162 (The underscore `)5.162 F .4 LW 505.308 576.55 500.308 576.55 DL 5(`') 496.978 576.55 S 2.662('c)-5.74 G(ounts)-2.662 E .264(as alphabetic.)72 587.55 R .264(Upper and lo)5.264 F .264 (wer case letters are considered dif)-.25 F 2.764(ferent. No)-.25 F .264 (more than the \214rst eight characters are sig-)2.764 F (ni\214cant, and only the \214rst se)72 598.55 Q -.15(ve)-.25 G 2.5(nf) .15 G(or e)-2.5 E(xternal identi\214ers.)-.15 E 2.5(2.3 K)72 620.55 R -.15(ey)-.25 G -.1(wo).15 G(rds).1 E(The follo)82 633.75 Q (wing identi\214ers are reserv)-.25 E(ed for use as k)-.15 E -.15(ey)-.1 G -.1(wo).15 G(rds, and may not be used otherwise:).1 E EP %%Page: 2 2 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-2)2.5 G/F2 10/Courier@0 SF 120 (int break)108 97.8 R 114(char continue)108 108.8 R 108(float if)108 119.8 R 102(double else)108 130.8 R 102(struct for)108 141.8 R 114 (auto do)108 152.8 R 102(extern while)108 163.8 R 90(register switch)108 174.8 R 102(static case)108 185.8 R 114(goto default)108 196.8 R 102 (return entry)108 207.8 R(sizeof)108 218.8 Q F0(The)72 237.5 Q F2(entry) 2.5 E F0 -.1(ke)6 G(yw)-.05 E(ord is not currently implemented by an)-.1 E 2.5(yc)-.15 G(ompiler b)-2.5 E(ut is reserv)-.2 E(ed for future use.) -.15 E 2.5(2.3 Constants)72 259.5 R(There are se)82 272.7 Q -.15(ve)-.25 G(ral kinds of constants, as follo).15 E(ws:)-.25 E 2.5(2.3.1 Inte)72 294.7 R(ger constants)-.15 E .349(An inte)82 307.9 R .349 (ger constant is a sequence of digits.)-.15 F .349(An inte)5.349 F .349 (ger is tak)-.15 F .349(en to be octal if it be)-.1 F .349(gins with) -.15 F F2(0)2.849 E F0 2.849(,d)C .35(ecimal otherwise.)-2.849 F (The digits)72 318.9 Q F2(8)2.5 E F0(and)2.5 E F2(9)2.5 E F0(ha)2.5 E .3 -.15(ve o)-.2 H(ctal v).15 E(alue 10 and 11 respecti)-.25 E -.15(ve)-.25 G(ly).15 E(.)-.65 E 2.5(2.3.2 Character)72 340.9 R(constants)2.5 E 3.679 (Ac)82 354.1 S 1.179 (haracter constant is 1 or 2 characters enclosed in single quotes `) -3.679 F(`)-.74 E F2<b4>1.666 E F0 -.74('')1.666 G 6.179(.W).74 G 1.178 (ithin a character constant a single)-6.579 F .081 (quote must be preceded by a back-slash `)72 365.1 R(`\\')-.74 E 2.582 ('. Certain)-.74 F .082(non-graphic characters, and `)2.582 F(`\\')-.74 E 2.582('i)-.74 G .082(tself, may be escaped accord-)-2.582 F (ing to the follo)72 376.1 Q(wing table:)-.25 E/F3 8/Times-Roman@0 SF (BS)108 394.8 Q F0(\\b)44.216 E F3(NL)108 405.8 Q F0(\\n)43.336 E F3(CR) 108 416.8 Q F0(\\r)43.328 E F3(HT)108 427.8 Q F0(\\t)43.336 E F1(ddd)108 438.8 Q F0(\\)39 E F1(ddd)A F0 51.22(\\\\)108 449.8 S(\\)-51.22 E .419 (The escape `)72 468.5 R(`\\)-.74 E F1(ddd)A F0 1.898 -.74('' c)D .418 (onsists of the backslash follo).74 F .418 (wed by 1, 2, or 3 octal digits which are tak)-.25 F .418 (en to specify the v)-.1 F(alue)-.25 E .463(of the desired character)72 479.5 R 5.463(.A)-.55 G .463(special case of this construction is `)-2.5 F(`\\0')-.74 E 2.963('\()-.74 G .463(not follo)-2.963 F .463 (wed by a digit\) which indicates a null)-.25 F(character)72 490.5 Q(.) -.55 E .532(Character constants beha)82 505.9 R .832 -.15(ve ex)-.2 H .532(actly lik).15 F 3.032(ei)-.1 G(nte)-3.032 E .531 (gers \(not, in particular)-.15 F 3.031(,l)-.4 G(ik)-3.031 E 3.031(eo) -.1 G .531(bjects of character type\).)-3.031 F .531(In conformity)5.531 F .595(with the addressing structure of the)72 516.9 R F3(PDP)3.095 E F0 .595(-11, a character constant of length 1 has the code for the gi)B -.15(ve)-.25 G 3.095(nc).15 G .595(haracter in)-3.095 F .078(the lo)72 527.9 R .077(w-order byte and 0 in the high-order byte; a character con\ stant of length 2 has the code for the \214rst character in)-.25 F .406 (the lo)72 538.9 R 2.906(wb)-.25 G .407 (yte and that for the second character in the high-order byte.)-2.906 F .407(Character constants with more than one char)5.407 F(-)-.2 E (acter are inherently machine-dependent and should be a)72 549.9 Q -.2 (vo)-.2 G(ided.).2 E 2.5(2.3.3 Floating)72 571.9 R(constants)2.5 E 2.611 <418d>82 585.1 S .111(oating constant consists of an inte)-2.611 F .111 (ger part, a decimal point, a fraction part, an)-.15 F F2(e)2.61 E F0 2.61(,a)C .11(nd an optionally signed inte-)-2.61 F .289(ger e)72 596.1 R 2.789(xponent. The)-.15 F(inte)2.789 E .289 (ger and fraction parts both consist of a sequence of digits.)-.15 F .289(Either the inte)5.289 F .289(ger part or the frac-)-.15 F .58 (tion part \(not both\) may be missing; either the decimal point or the) 72 607.1 R F2(e)3.08 E F0 .58(and the e)3.08 F .58 (xponent \(not both\) may be missing.)-.15 F(Ev)72 618.1 Q (ery \215oating constant is tak)-.15 E(en to be double-precision.)-.1 E 2.5(2.4 Strings)72 640.1 R 2.826(As)82 653.3 S .327 (tring is a sequence of characters surrounded by double quotes `)-2.826 F(`)-.74 E F2(")1.666 E F0 -.74('')1.666 G 5.327(.A).74 G .327 (string has the type array-of-characters)-2.5 F .945(\(see belo)72 664.3 R .944(w\) and refers to an area of storage initialized with the gi)-.25 F -.15(ve)-.25 G 3.444(nc).15 G 3.444(haracters. The)-3.444 F .944 (compiler places a null byte)3.444 F 1.666(\(\\)72 675.3 S -3.153 1.666 (0\) a)-1.666 H 2.679(tt)-1.666 G .18(he end of each string so that pro\ grams which scan the string can \214nd its end.)-2.679 F .18 (In a string, the character `)5.18 F(`)-.74 E F2(")1.666 E F0 -.74('') 1.666 G(must be preceded by a `)72 686.3 Q(`\\')-.74 E -3.332 1.666 ('; i)-.74 H 2.5(na)-1.666 G(ddition, the same escapes as described for\ character constants may be used.)-2.5 E EP %%Page: 3 3 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)439.28 58 S(efer)-5 E 2.5(ence Manual)-.37 F 2.5(-3)2.5 G/F2 10/Times-Bold@0 SF 2.5(3. Syntax)72 97.8 R(notation)2.5 E F0 .524 (In the syntax notation used in this manual, syntactic cate)82 111 R .523(gories are indicated by)-.15 F F1(italic)3.023 E F0 .523 (type, and literal w)3.023 F .523(ords and)-.1 F .039(characters in)72 122 R/F3 10/Courier@0 SF(gothic.)2.539 E F0(Alternati)5.039 E -.15(ve) -.25 G 2.539(sa).15 G .039(re listed on separate lines.)-2.539 F .04 (An optional terminal or non-terminal symbol is in-)5.039 F (dicated by the subscript `)72 133 Q(`opt,)-.74 E 1.48 -.74('' s)-.7 H 2.5(ot).74 G(hat)-2.5 E F1 2.5({e)108 151.7 S(xpr)-2.7 E(ession)-.37 E /F4 6/Times-Italic@0 SF(opt)3 I F1(})2.5 -3 M F0 -.1(wo)72 170.4 S (uld indicate an optional e).1 E(xpression in braces.)-.15 E F2 2.5 (4. What')72 197.9 R 2.5(si)-.37 G 2.5(naN)-2.5 G(ame?)-2.5 E F0 3.068 (Cb)82 211.1 S .568(ases the interpretation of an identi\214er upon tw) -3.068 F 3.067(oa)-.1 G(ttrib)-3.067 E .567 (utes of the identi\214er: its)-.2 F F1(stor)3.067 E .767 -.1(age c)-.15 H(lass).1 E F0 .567(and its)3.067 F F1(type)3.067 E(.)-.15 E F0(The) 5.567 E .066(storage class determines the location and lifetime of the \ storage associated with an identi\214er; the type determines the)72 222.1 R(meaning of the v)72 233.1 Q(alues found in the identi\214er') -.25 E 2.5(ss)-.55 G(torage.)-2.5 E .097 (There are four declarable storage classes: automatic, static, e)82 248.5 R .097(xternal, and re)-.15 F(gister)-.15 E 5.096(.A)-.55 G .096 (utomatic v)-5.096 F .096(ariables are local to)-.25 F .109(each in)72 259.5 R -.2(vo)-.4 G .109 (cation of a function, and are discarded on return; static v).2 F .11 (ariables are local to a function, b)-.25 F .11(ut retain their v)-.2 F (al-)-.25 E .55(ues independently of in)72 270.5 R -.2(vo)-.4 G .55 (cations of the function; e).2 F .55(xternal v)-.15 F .55 (ariables are independent of an)-.25 F 3.05(yf)-.15 G 3.05(unction. Re) -3.05 F .55(gister v)-.15 F(ari-)-.25 E .387(ables are stored in the f) 72 281.5 R .387(ast re)-.1 F .387(gisters of the machine; lik)-.15 F 2.887(ea)-.1 G .387(utomatic v)-2.887 F .387(ariables the)-.25 F 2.887 (ya)-.15 G .387(re local to each function and dis-)-2.887 F (appear on return.)72 292.5 Q 3.949(Cs)82 307.9 S 1.448 (upports four fundamental types of objects: characters, inte)-3.949 F 1.448(gers, single-, and double-precision \215oating-point)-.15 F (numbers.)72 318.9 Q .924 (Characters \(declared, and hereinafter called,)108 337.6 R F3(char) 3.425 E F0 3.425(\)a)C .925(re chosen from the)-3.425 F/F5 8 /Times-Roman@0 SF(ASCII)3.425 E F0 .925(set; the)3.425 F 3.425(yo)-.15 G (ccup)-3.425 E 3.425(yt)-.1 G .925(he right-)-3.425 F .005(most se)108 348.6 R -.15(ve)-.25 G 2.505(nb).15 G .005(its of an 8-bit byte.)-2.505 F .004(It is also possible to interpret)5.004 F F3(char)2.504 E F0 2.504 (sa)C 2.504(ss)-2.504 G .004(igned, 2')-2.504 F 2.504(sc)-.55 G .004 (omplement 8-bit num-)-2.504 F(bers.)108 359.6 Q(Inte)108 375 Q(gers \() -.15 E F3(int)A F0 2.5(\)a)C(re represented in 16-bit 2')-2.5 E 2.5(sc) -.55 G(omplement notation.)-2.5 E .744 (Single precision \215oating point \()108 390.4 R F3(float)A F0 3.245 (\)q)C .745(uantities ha)-3.245 F 1.045 -.15(ve m)-.2 H .745 (agnitude in the range approximately 10).15 F/F6 7/Symbol SF<b1>-5 I/F7 7/Times-Roman@0 SF(38)A F0 .745(or 0;)3.245 5 N (their precision is 24 bits or about se)108 401.4 Q -.15(ve)-.25 G 2.5 (nd).15 G(ecimal digits.)-2.5 E .141 (Double-precision \215oating-point \()108 416.8 R F3(double)A F0 2.641 (\)q)C .141(uantities ha)-2.641 F .441 -.15(ve t)-.2 H .141 (he same range as).15 F F3(float)2.641 E F0 2.641(sa)C .14 (nd a precision of 56)-2.641 F(bits or about 17 decimal digits.)108 427.8 Q .057(Besides the four fundamental types there is a conceptually\ in\214nite class of deri)82 450.9 R -.15(ve)-.25 G 2.558(dt).15 G .058 (ypes constructed from the fun-)-2.558 F(damental types in the follo)72 461.9 Q(wing w)-.25 E(ays:)-.1 E F1(arr)108 480.6 Q(ays)-.15 E F0 (of objects of most types;)2.5 E F1(functions)108 496 Q F0 (which return objects of a gi)2.5 E -.15(ve)-.25 G 2.5(nt).15 G(ype;) -2.5 E F1(pointer)108 511.4 Q(s)-.1 E F0(to objects of a gi)2.5 E -.15 (ve)-.25 G 2.5(nt).15 G(ype;)-2.5 E F1(structur)108 526.8 Q(es)-.37 E F0 (containing objects of v)2.5 E(arious types.)-.25 E(In general these me\ thods of constructing objects can be applied recursi)72 545.5 Q -.15(ve) -.25 G(ly).15 E(.)-.65 E F2 2.5(5. Objects)72 573 R(and lv)2.5 E(alues) -.1 E F0 .544(An object is a manipulatable re)82 586.2 R .543 (gion of storage; an lv)-.15 F .543(alue is an e)-.25 F .543 (xpression referring to an object.)-.15 F .543(An ob)5.543 F .543 (vious e)-.15 F(x-)-.15 E .771(ample of an lv)72 597.2 R .771(alue e) -.25 F .771(xpression is an identi\214er)-.15 F 5.771(.T)-.55 G .772 (here are operators which yield lv)-5.771 F .772(alues: for e)-.25 F .772(xample, if E is an e)-.15 F(x-)-.15 E .432 (pression of pointer type, then)72 608.2 R(*)2.932 2.2 M 2.932(Ei)-2.2 K 2.932(sa)-2.932 G 2.932(nl)-2.932 G -.25(va)-2.932 G .432(lue e).25 F .431(xpression referring to the object to which E points.)-.15 F .431 (The name `)5.431 F(`lv)-.74 E(al-)-.25 E(ue')72 619.2 Q 3.198('c)-.74 G .698(omes from the assignment e)-3.198 F .699(xpression `)-.15 F (`E1 = E2')-.74 E 3.199('i)-.74 G 3.199(nw)-3.199 G .699 (hich the left operand E1 must be an lv)-3.199 F .699(alue e)-.25 F (xpression.)-.15 E(The discussion of each operator belo)72 630.2 Q 2.5 (wi)-.25 G(ndicates whether it e)-2.5 E(xpects lv)-.15 E (alue operands and whether it yields an lv)-.25 E(alue.)-.25 E F2 2.5 (6. Con)72 657.7 R -.1(ve)-.4 G(rsions).1 E F0 3.093(An)82 670.9 S .593 (umber of operators may)-3.093 F 3.093(,d)-.65 G .593 (epending on their operands, cause con)-3.093 F -.15(ve)-.4 G .593 (rsion of the v).15 F .592(alue of an operand from one)-.25 F (type to another)72 681.9 Q 5(.T)-.55 G(his section e)-5 E (xplains the result to be e)-.15 E(xpected from such con)-.15 E -.15(ve) -.4 G(rsions.).15 E EP %%Page: 4 4 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-4)2.5 G F0 2.5(6.1 Characters)72 97.8 R(and inte)2.5 E(gers)-.15 E(A)82 111 Q/F2 10/Courier@0 SF(char) 3.045 E F0 .546(object may be used an)3.045 F .546(ywhere an)-.15 F F2 (int)3.046 E F0 .546(may be.)3.046 F .546(In all cases the)5.546 F F2 (char)3.046 E F0 .546(is con)3.046 F -.15(ve)-.4 G .546(rted to an).15 F F2(int)3.046 E F0 .546(by propa-)3.046 F -.05(ga)72 122 S .394 (ting its sign through the upper 8 bits of the resultant inte).05 F(ger) -.15 E 5.394(.T)-.55 G .394(his is consistent with the tw)-5.394 F(o') -.1 E 2.894(sc)-.55 G .394(omplement repre-)-2.894 F .847 (sentation used for both characters and inte)72 133 R 3.347(gers. \(Ho) -.15 F(we)-.25 E -.15(ve)-.25 G 1.647 -.4(r, t).15 H .847 (he sign-propag).4 F .847(ation feature disappears in other imple-)-.05 F(mentations.\))72 144 Q 2.5(6.2 Float)72 166 R(and double)2.5 E .787(A\ ll \215oating arithmetic in C is carried out in double-precision; whene) 82 179.2 R -.15(ve)-.25 G 3.287(ra).15 G F2(float)A F0 .786 (appears in an e)3.286 F .786(xpression it is)-.15 F .104(lengthened to) 72 190.2 R F2(double)2.604 E F0 .104(by zero-padding its fraction.)2.604 F .104(When a)5.104 F F2(double)2.604 E F0 .104(must be con)2.604 F -.15 (ve)-.4 G .104(rted to).15 F F2(float)2.604 E F0 2.604(,f)C .105(or e) -2.604 F .105(xample by)-.15 F(an assignment, the)72 201.2 Q F2(double) 2.5 E F0(is rounded before truncation to)2.5 E F2(float)2.5 E F0 (length.)2.5 E 2.5(6.3 Float)72 223.2 R(and double; inte)2.5 E (ger and character)-.15 E(All)82 236.4 Q F2(int)4.515 E F0 4.515(sa)C (nd)-4.515 E F2(char)4.515 E F0 4.515(sm)C 2.015(ay be con)-4.515 F -.15 (ve)-.4 G 2.015(rted without loss of signi\214cance to).15 F F2(float) 4.515 E F0(or)4.515 E F2(double)4.515 E F0 7.015(.C)C(on)-7.015 E -.15 (ve)-.4 G 2.015(rsion of).15 F F2(float)72 247.4 Q F0(or)2.637 E F2 (double)2.637 E F0(to)2.638 E F2(int)2.638 E F0(or)2.638 E F2(char)2.638 E F0(tak)2.638 E .138(es place with truncation to)-.1 F -.1(wa)-.25 G .138(rds 0.).1 F .138(Erroneous results can be e)5.138 F .138 (xpected if the)-.15 F(magnitude of the result e)72 258.4 Q (xceeds 32,767 \(for)-.15 E F2(int)2.5 E F0 2.5(\)o)C 2.5(r1)-2.5 G (27 \(for)-2.5 E F2(char)2.5 E F0(\).)A 2.5(6.4 Pointers)72 280.4 R (and inte)2.5 E(gers)-.15 E(Inte)82 293.6 Q .318 (gers and pointers may be added and compared; in such a case the)-.15 F F2(int)2.817 E F0 .317(is con)2.817 F -.15(ve)-.4 G .317 (rted as speci\214ed in the discus-).15 F(sion of the addition operator) 72 304.6 Q(.)-.55 E -1 -.8(Tw o)82 320 T .87(pointers to objects of the\ same type may be subtracted; in this case the result is con)4.17 F -.15 (ve)-.4 G .871(rted to an inte).15 F .871(ger as)-.15 F (speci\214ed in the discussion of the subtraction operator)72 331 Q(.) -.55 E/F3 10/Times-Bold@0 SF 2.5(7. Expr)72 358.5 R(essions)-.18 E F0 .551(The precedence of e)82 371.7 R .55(xpression operators is the same\ as the order of the major subsections of this section \(highest)-.15 F 1.547(precedence \214rst\).)72 382.7 R 1.547(Thus the e)6.547 F 1.547 (xpressions referred to as the operands of)-.15 F F2(+)4.047 E F0 1.547 (\(\2477.4\) are those e)4.047 F 1.547(xpressions de\214ned in)-.15 F 2.813(\247\2477.1_7.3. W)72 393.7 R .312 (ithin each subsection, the operators ha)-.4 F .612 -.15(ve t)-.2 H .312 (he same precedence.).15 F .312(Left- or right-associati)5.312 F .312 (vity is speci\214ed)-.25 F .254 (in each subsection for the operators discussed therein.)72 404.7 R .254 (The precedence and associati)5.254 F .255(vity of all the e)-.25 F .255 (xpression opera-)-.15 F(tors is summarized in an appendix.)72 415.7 Q .79(Otherwise the order of e)82 431.1 R -.25(va)-.25 G .79(luation of e) .25 F .789(xpressions is unde\214ned.)-.15 F .789 (In particular the compiler considers itself free to)5.789 F (compute sube)72 442.1 Q(xpressions in the order it belie)-.15 E -.15 (ve)-.25 G 2.5(sm).15 G(ost ef)-2.5 E(\214cient, e)-.25 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he sube)-2.5 E(xpressions in)-.15 E -.2(vo) -.4 G(lv).2 E 2.5(es)-.15 G(ide ef)-2.5 E(fects.)-.25 E 2.5(7.1 Primary) 72 464.1 R -.15(ex)2.5 G(pressions).15 E(Primary e)82 477.3 Q (xpressions in)-.15 E -.2(vo)-.4 G(lving).2 E F2(.)2.5 E F0(,)1.666 E/F4 10/Symbol SF(-)2.5 E F2(>)A F0 2.5(,s)C (ubscripting, and function calls group left to right.)-2.5 E(7.1.1)72 499.3 Q F1(identi\214er)5 E F0 .283(An identi\214er is a primary e)82 512.5 R .283(xpression, pro)-.15 F .283 (vided it has been suitably declared as discussed belo)-.15 F 4.084 -.65 (w. I)-.25 H .284(ts type is speci-).65 F .194 (\214ed by its declaration.)72 523.5 R(Ho)5.194 E(we)-.25 E -.15(ve)-.25 G .994 -.4(r, i).15 H 2.694(ft).4 G .194 (he type of the identi\214er is `)-2.694 F .194(`array of .)-.74 F 1.666 (..)1.666 G -.74('')-2.366 G 2.694(,t).74 G .194(hen the v)-2.694 F .193 (alue of the identi\214er)-.25 F(-e)-.2 E(xpres-)-.15 E .173 (sion is a pointer to the \214rst object in the array)72 534.5 R 2.673 (,a)-.65 G .173(nd the type of the e)-2.673 F .174(xpression is `)-.15 F .174(`pointer to .)-.74 F 1.666(..)1.666 G -.74('')-2.366 G 5.174(.M).74 G(oreo)-5.174 E -.15(ve)-.15 G .974 -.4(r, a).15 H 2.674(na).4 G(rray) -2.674 E(identi\214er is not an lv)72 545.5 Q(alue e)-.25 E(xpression.) -.15 E(Lik)82 560.9 Q -.25(ew)-.1 G .014 (ise, an identi\214er which is declared `).25 F .014 (`function returning .)-.74 F 1.666(..)1.666 G -.74('')-2.366 G 2.514 (,w).74 G .014(hen used e)-2.514 F .014 (xcept in the function-name position)-.15 F(of a call, is con)72 571.9 Q -.15(ve)-.4 G(rted to `).15 E(`pointer to function returning .)-.74 E 1.666(..)1.666 G -.74('')-2.366 G(.).74 E(7.1.2)72 593.9 Q F1(constant)5 E F0 3.278(Ad)82 607.1 S .778(ecimal, octal, character)-3.278 F 3.278 (,o)-.4 G 3.278<728d>-3.278 G .778(oating constant is a primary e)-3.278 F 3.278(xpression. Its)-.15 F .779(type is)3.279 F F2(int)3.279 E F0 .779(in the \214rst three cases,)3.279 F F2(double)72 618.1 Q F0 (in the last.)2.5 E(7.1.3)72 640.1 Q F1(string)5 E F0 2.835(As)82 653.3 S .335(tring is a primary e)-2.835 F 2.835(xpression. Its)-.15 F .335 (type is originally `)2.835 F .334(`array of)-.74 F F2(char)2.834 E F0 -.74('')C 2.834(;b).74 G .334(ut follo)-3.034 F .334 (wing the same rule as in \2477.1.1)-.25 F (for identi\214ers, this is modi\214ed to `)72 664.3 Q(`pointer to)-.74 E F2(char)2.5 E F0 1.48 -.74('' a)D (nd the result is a pointer to the \214rst character in the string.).74 E(7.1.4)72 686.3 Q F2(\()5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F2 (\))2.5 E F0 2.992(Ap)82 699.5 S .492(arenthesized e)-2.992 F .492 (xpression is a primary e)-.15 F .492(xpression whose type and v)-.15 F .493(alue are identical to those of the unadorned)-.25 F -.15(ex)72 710.5 S 2.5(pression. The).15 F(presence of parentheses does not af)2.5 E(fect whether the e)-.25 E(xpression is an lv)-.15 E(alue.)-.25 E EP %%Page: 5 5 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)439.28 58 S(efer)-5 E 2.5(ence Manual)-.37 F 2.5(-5)2.5 G F0(7.1.5)72 97.8 Q F1 (primary-e)5 E(xpr)-.2 E(ession)-.37 E/F2 10/Courier@0 SF([)6 E F1 -.2 (ex)2.5 G(pr).2 E(ession)-.37 E F2(])2.5 E F0 3.011(Ap)82 111 S .511 (rimary e)-3.011 F .511(xpression follo)-.15 F .511(wed by an e)-.25 F .511(xpression in square brack)-.15 F .51(ets is a primary e)-.1 F 3.01 (xpression. The)-.15 F(intuiti)3.01 E .81 -.15(ve m)-.25 H(ean-).15 E .182(ing is that of a subscript.)72 122 R(Usually)5.182 E 2.682(,t)-.65 G .182(he primary e)-2.682 F .182(xpression has type `)-.15 F .182 (`pointer to .)-.74 F 1.666(..)1.666 G -.74('')-2.366 G 2.682(,t).74 G .182(he subscript e)-2.682 F .182(xpression is)-.15 F F2(int)2.682 E F0 (,)A .858(and the type of the result is `)72 133 R 1.666(`...')-.74 G 3.358('. The)-2.406 F -.15(ex)3.358 G .858(pression `).15 F(`E1[E2]') -.74 E 3.358('i)-.74 G 3.358(si)-3.358 G .857 (dentical \(by de\214nition\) to `)-3.358 F(`)-.74 E(*)2.2 I 3.332(\(\() 1.666 -2.2 O -.834(E1 \) + \( E2 \))-1.666 F 1.666(\)')3.332 G('.)-2.406 E 1.249(All the clues needed to understand this notation are contained \ in this section together with the discussions in \247\247)72 144 R (7.1.1, 7.2.1, and 7.4.1 on identi\214ers,)72 155 Q(*)2.5 2.2 M 2.5(,a) -2.2 K(nd)-2.5 E F2(+)2.5 E F0(respecti)2.5 E -.15(ve)-.25 G (ly; \24714.3 belo).15 E 2.5(ws)-.25 G(ummarizes the implications.)-2.5 E(7.1.6)72 177 Q F1(primary-e)5 E(xpr)-.2 E(ession)-.37 E F2(\()2.5 E F1 -.2(ex)6 G(pr).2 E(ession-list)-.37 E/F3 6/Times-Italic@0 SF(opt)3 I F2 (\))2.5 -3 M F0 3.45(Af)82 190.2 S .95(unction call is a primary e)-3.45 F .949(xpression follo)-.15 F .949 (wed by parentheses containing a possibly empty)-.25 F 3.449(,c)-.65 G (omma-separated)-3.449 E .877(list of e)72 201.2 R .877 (xpressions which constitute the actual ar)-.15 F .878 (guments to the function.)-.18 F .878(The primary e)5.878 F .878 (xpression must be of type)-.15 F -.74(``)72 212.2 S .447 (function returning .).74 F 1.666(..)1.666 G -.74('')-2.366 G 2.947(,a) .74 G .447(nd the result of the function call is of type `)-2.947 F 1.666(`...')-.74 G 2.946('. As)-2.406 F .446(indicated belo)2.946 F 1.746 -.65(w, a h)-.25 H .446(itherto unseen).65 F .286 (identi\214er follo)72 223.2 R .287 (wed immediately by a left parenthesis is conte)-.25 F .287 (xtually declared to represent a function returning an in-)-.15 F(te)72 234.2 Q(ger; thus in the most common case, inte)-.15 E(ger)-.15 E(-v)-.2 E(alued functions need not be declared.)-.25 E(An)82 249.6 Q 3.069(ya) -.15 G .569(ctual ar)-3.069 F .569(guments of type)-.18 F F2(float)3.069 E F0 .569(are con)3.069 F -.15(ve)-.4 G .569(rted to).15 F F2(double) 3.069 E F0 .569(before the call; an)3.069 F 3.069(yo)-.15 G 3.069(ft) -3.069 G(ype)-3.069 E F2(char)3.069 E F0 .568(are con)3.068 F -.15(ve) -.4 G(rted).15 E(to)72 260.6 Q F2(int)2.5 E F0(.)A .279 (In preparing for the call to a function, a cop)82 276 R 2.779(yi)-.1 G 2.78(sm)-2.779 G .28(ade of each actual parameter; thus, all ar)-2.78 F .28(gument-passing in C is)-.18 F .442(strictly by v)72 287 R 2.942 (alue. A)-.25 F .442(function may change the v)2.942 F .442 (alues of its formal parameters, b)-.25 F .441 (ut these changes cannot possibly af-)-.2 F .777(fect the v)72 298 R .777(alues of the actual parameters.)-.25 F .777(On the other hand, it \ is perfectly possible to pass a pointer on the under)5.777 F(-)-.2 E (standing that the function may change the v)72 309 Q (alue of the object to which the pointer points.)-.25 E(Recursi)82 324.4 Q .3 -.15(ve c)-.25 H(alls to an).15 E 2.5(yf)-.15 G (unction are permissible.)-2.5 E(7.1.7)72 346.4 Q F1(primary-lvalue)5 E F2(.)2.5 E F1(member)2.5 E(-of-structur)-.2 E(e)-.37 E F0 .304(An lv)82 359.6 R .304(alue e)-.25 F .304(xpression follo)-.15 F .304 (wed by a dot follo)-.25 F .304 (wed by the name of a member of a structure is a primary e)-.25 F (xpression.)-.15 E .212(The object referred to by the lv)72 370.6 R .212 (alue is assumed to ha)-.25 F .513 -.15(ve t)-.2 H .213 (he same form as the structure containing the structure mem-).15 F(ber) 72 381.6 Q 5.608(.T)-.55 G .608(he result of the e)-5.608 F .608 (xpression is an lv)-.15 F .608(alue appropriately of)-.25 F .607 (fset from the origin of the gi)-.25 F -.15(ve)-.25 G 3.107(nl).15 G -.25(va)-3.107 G .607(lue whose type is).25 F (that of the named structure member)72 392.6 Q 5(.T)-.55 G(he gi)-5 E -.15(ve)-.25 G 2.5(nl).15 G -.25(va)-2.5 G(lue is not required to ha).25 E .3 -.15(ve a)-.2 H .3 -.15(ny p).15 H(articular type.).15 E (Structures are discussed in \2478.5.)82 408 Q(7.1.8)72 430 Q F1 (primary-e)5 E(xpr)-.2 E(ession)-.37 E/F4 10/Symbol SF(-)2.5 E F2(>)A F1 (member)2.5 E(-of-structur)-.2 E(e)-.37 E F0 .439(The primary-e)82 443.2 R .439(xpression is assumed to be a pointer which points to an object o\ f the same form as the structure of)-.15 F .057(which the member)72 454.2 R .056(-of-structure is a part.)-.2 F .056(The result is an lv) 5.056 F .056(alue appropriately of)-.25 F .056 (fset from the origin of the pointed-to)-.25 F .366 (structure whose type is that of the named structure member)72 465.2 R 5.366(.T)-.55 G .366(he type of the primary-e)-5.366 F .366 (xpression need not in f)-.15 F .366(act be)-.1 F(pointer; it is suf)72 476.2 Q(\214cient that it be a pointer)-.25 E 2.5(,c)-.4 G(haracter)-2.5 E 2.5(,o)-.4 G 2.5(ri)-2.5 G(nte)-2.5 E(ger)-.15 E(.)-.55 E 1.004(Excep\ t for the relaxation of the requirement that E1 be of pointer type, the\ e)82 491.6 R 1.004(xpression `)-.15 F(`E1)-.74 E F4(-)A F0(>MOS')A 3.504('i)-.74 G 3.504(se)-3.504 G(xactly)-3.654 E(equi)72 502.6 Q -.25 (va)-.25 G(lent to `).25 E(`\()-.74 E(*)2.2 I(E1\).MOS')-2.2 I('.)-.74 E 2.5(7.2 Unary)72 524.6 R(operators)2.5 E (Expressions with unary operators group right-to-left.)82 537.8 Q(7.2.1) 72 559.8 Q(*)5 2.2 M F1 -.2(ex)2.5 -2.2 O(pr).2 E(ession)-.37 E F0 .574 (The unary)82 573 R(*)3.074 2.2 M .574(operator means)3.074 -2.2 N F1 (indir)3.074 E(ection:)-.37 E F0 .575(the e)3.075 F .575 (xpression must be a pointer)-.15 F 3.075(,a)-.4 G .575 (nd the result is an lv)-3.075 F .575(alue referring to)-.25 F .656 (the object to which the e)72 584 R .656(xpression points.)-.15 F .656 (If the type of the e)5.656 F .656(xpression is `)-.15 F .656 (`pointer to .)-.74 F 1.666(..)1.666 G -.74('')-2.366 G 3.156(,t).74 G .655(he type of the result is)-3.156 F .646 -.74(`` . . . '')72 595 T(.) .74 E(7.2.2)72 617 Q F2(&)5 E F1(lvalue-e)2.5 E(xpr)-.2 E(ession)-.37 E F0 .24(The result of the unary)82 630.2 R F2(&)2.74 E F0 .24 (operator is a pointer to the object referred to by the lv)2.74 F (alue-e)-.25 E 2.74(xpression. If)-.15 F .24(the type of the)2.74 F(lv) 72 641.2 Q(alue-e)-.25 E(xpression is `)-.15 E 1.666(`...')-.74 G (', the type of the result is `)-2.406 E(`pointer to .)-.74 E 1.666(..) 1.666 G -.74('')-2.366 G(.).74 E(7.2.3)72 663.2 Q F4(-)5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 .915(The result is the ne)82 676.4 R -.05(ga) -.15 G(ti).05 E 1.215 -.15(ve o)-.25 H 3.415(ft).15 G .915(he e)-3.415 F .915(xpression, and has the same type.)-.15 F .915(The type of the e) 5.915 F .915(xpression must be)-.15 F F2(char)3.415 E F0(,)A F2(int)72 687.4 Q F0(,)A F2(float)2.5 E F0 2.5(,o)C(r)-2.5 E F2(double)2.5 E F0(.) A EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-6)2.5 G F0(7.2.4)72 97.8 Q/F2 10 /Courier@0 SF(!)5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 .545 (The result of the logical ne)82 111 R -.05(ga)-.15 G .545 (tion operator).05 F F2(!)3.045 E F0 .545(is 1 if the v)5.545 F .545 (alue of the e)-.25 F .545(xpression is 0, 0 if the v)-.15 F .545 (alue of the e)-.25 F(xpres-)-.15 E(sion is non-zero.)72 122 Q (The type of the result is)5 E F2(int)2.5 E F0 5(.T)C (his operator is applicable only to)-5 E F2(int)2.5 E F0 2.5(so)C(r)-2.5 E F2(char)2.5 E F0(s.)A(7.2.5)72 144 Q/F3 14/Courier@0 SF(~)5 5.5 M F1 -.2(ex)2.5 -5.5 O(pr).2 E(ession)-.37 E F0(The)82 157.2 Q/F4 14 /Times-Roman@0 SF(~)2.536 5.5 M F0 .036(operator yields the one')2.536 -5.5 N 2.536(sc)-.55 G .036(omplement of its operand.)-2.536 F .036 (The type of the e)5.036 F .036(xpression must be)-.15 F F2(int)2.536 E F0(or)2.536 E F2(char)2.535 E F0 2.535(,a)C(nd)-2.535 E(the result is)72 168.2 Q F2(int)2.5 E F0(.)A 2.5(7.2.6 ++)72 190.2 R F1(lvalue-e)2.5 E (xpr)-.2 E(ession)-.37 E F0 .698(The object referred to by the lv)82 203.4 R .698(alue e)-.25 F .698(xpression is incremented.)-.15 F .698 (The v)5.698 F .699(alue is the ne)-.25 F 3.199(wv)-.25 G .699 (alue of the lv)-3.449 F .699(alue e)-.25 F(xpres-)-.15 E .195 (sion and the type is the type of the lv)72 214.4 R 2.694(alue. If)-.25 F .194(the e)2.694 F .194(xpression is)-.15 F F2(int)2.694 E F0(or)2.694 E F2(char)2.694 E F0 2.694(,i)C 2.694(ti)-2.694 G 2.694(si)-2.694 G .194 (ncremented by 1; if it is a pointer)-2.694 F .1 (to an object, it is incremented by the length of the object.)72 225.4 R .1(++ is applicable only to these types.)5.1 F .1(\(Not, for e)5.1 F .1 (xample, to)-.15 F F2(float)72 236.4 Q F0(or)2.5 E F2(double)2.5 E F0 (.\))A(7.2.7)72 258.4 Q/F5 10/Symbol SF(--)5 E F1(lvalue-e)2.5 E(xpr)-.2 E(ession)-.37 E F0(The object referred to by the lv)82 271.6 Q(alue e) -.25 E(xpression is decremented analogously to the ++ operator)-.15 E(.) -.55 E(7.2.8)72 293.6 Q F1(lvalue-e)5 E(xpr)-.2 E(ession ++)-.37 E F0 .681(The result is the v)82 306.8 R .681 (alue of the object referred to by the lv)-.25 F .681(alue e)-.25 F 3.181(xpression. After)-.15 F .681(the result is noted, the object re-) 3.181 F .06(ferred to by the lv)72 317.8 R .06(alue is incremented in t\ he same manner as for the pre\214x ++ operator: by 1 for an)-.25 F F2 (int)2.561 E F0(or)2.561 E F2(char)2.561 E F0 2.561(,b)C(y)-2.561 E .487 (the length of the pointed-to object for a pointer)72 328.8 R 5.486(.T) -.55 G .486(he type of the result is the same as the type of the lv) -5.486 F(alue-e)-.25 E(xpres-)-.15 E(sion.)72 339.8 Q(7.2.9)72 361.8 Q F1(lvalue-e)5 E(xpr)-.2 E(ession)-.37 E F5(--)2.5 E F0 .542 (The result of the e)82 375 R .542(xpression is the v)-.15 F .542 (alue of the object referred to by the the lv)-.25 F .543(alue e)-.25 F 3.043(xpression. After)-.15 F .543(the result is)3.043 F (noted, the object referred to by the lv)72 386 Q(alue e)-.25 E (xpression is decremented in a w)-.15 E (ay analogous to the post\214x ++ operator)-.1 E(.)-.55 E(7.2.10)72 408 Q F2(sizeof)5 E F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F0(The)82 421.2 Q F2 (sizeof)3.428 E F0 .928 (operator yields the size, in bytes, of its operand.)3.428 F .927 (When applied to an array)5.927 F 3.427(,t)-.65 G .927 (he result is the total)-3.427 F .174(number of bytes in the array)72 432.2 R 5.174(.T)-.65 G .174 (he size is determined from the declarations of the objects in the e) -5.174 F 2.674(xpression. This)-.15 F -.15(ex)2.674 G(-).15 E .924 (pression is semantically an inte)72 443.2 R .923 (ger constant and may be used an)-.15 F .923 (ywhere a constant is required.)-.15 F .923(Its major use is in)5.923 F (communication with routines lik)72 454.2 Q 2.5(es)-.1 G (torage allocators and I/O systems.)-2.5 E 2.5(7.3 Multiplicati)72 476.2 R .3 -.15(ve o)-.25 H(perators).15 E(The multiplicati)82 489.4 Q .3 -.15 (ve o)-.25 H(perators).15 E(*)2.5 2.2 M(,)-2.2 I F2(/)2.5 E F0 2.5(,a)C (nd)-2.5 E F2(%)2.5 E F0(group left-to-right.)2.5 E(7.3.1)72 511.4 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E F0(*)6 2.2 M F1 -.2(ex)6 -2.2 O(pr).2 E (ession)-.37 E F0 1.037(The binary)82 524.6 R(*)3.537 2.2 M 1.038 (operator indicates multiplication.)3.538 -2.2 N 1.038 (If both operands are)6.038 F F2(int)3.538 E F0(or)3.538 E F2(char)3.538 E F0 3.538(,t)C 1.038(he result is)-3.538 F F2(int)3.538 E F0 3.538(;i)C 3.538(fo)-3.538 G 1.038(ne is)-3.538 F F2(int)72 535.6 Q F0(or)3.124 E F2(char)3.124 E F0 .624(and one)3.124 F F2(float)3.124 E F0(or)3.124 E F2(double)3.124 E F0 3.124(,t)C .624(he former is con)-3.124 F -.15(ve) -.4 G .624(rted to).15 F F2(double)3.124 E F0 3.124(,a)C .624 (nd the result is)-3.124 F F2(double)3.124 E F0 3.124(;i)C 3.124(fb) -3.124 G(oth)-3.124 E(are)72 546.6 Q F2(float)2.5 E F0(or)2.5 E F2 (double)2.5 E F0 2.5(,t)C(he result is)-2.5 E F2(double)2.5 E F0 5(.N)C 2.5(oo)-5 G(ther combinations are allo)-2.5 E(wed.)-.25 E(7.3.2)72 568.6 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E F2(/)2.5 E F1 -.2(ex)2.5 G(pr).2 E (ession)-.37 E F0(The binary)82 581.8 Q F2(/)2.5 E F0 (operator indicates di)2.5 E 2.5(vision. The)-.25 F (same type considerations as for multiplication apply)2.5 E(.)-.65 E (7.3.3)72 603.8 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E F2(%)2.5 E F1 -.2 (ex)2.5 G(pr).2 E(ession)-.37 E F0 .167(The binary)82 617 R F2(%)2.667 E F0 .168(operator yields the remainder from the di)2.667 F .168 (vision of the \214rst e)-.25 F .168(xpression by the second.)-.15 F .168(Both operands)5.168 F .239(must be)72 628 R F2(int)2.739 E F0(or) 2.738 E F2(char)2.738 E F0 2.738(,a)C .238(nd the result is)-2.738 F F2 (int)2.738 E F0 5.238(.I)C 2.738(nt)-5.238 G .238 (he current implementation, the remainder has the same sign as the) -2.738 F(di)72 639 Q(vidend.)-.25 E 2.5(7.4 Additi)72 661 R .3 -.15 (ve o)-.25 H(perators).15 E(The additi)82 674.2 Q .3 -.15(ve o)-.25 H (perators).15 E F2(+)2.5 E F0(and)2.5 E F5(-)2.5 E F0 (group left-to-right.)2.5 E EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)439.28 58 S(efer)-5 E 2.5(ence Manual)-.37 F 2.5(-7)2.5 G F0(7.4.1)72 97.8 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E/F2 10/Courier@0 SF(+)2.5 E F1 -.2(ex) 2.5 G(pr).2 E(ession)-.37 E F0 .057(The result is the sum of the e)82 111 R 2.558(xpressions. If)-.15 F .058(both operands are)2.558 F F2(int) 2.558 E F0(or)2.558 E F2(char)2.558 E F0 2.558(,t)C .058(he result is) -2.558 F F2(int)2.558 E F0 5.058(.I)C 2.558(fb)-5.058 G .058(oth are) -2.558 F F2(float)2.558 E F0(or)72 122 Q F2(double)2.538 E F0 2.538(,t)C .038(he result is)-2.538 F F2(double)2.538 E F0 5.038(.I)C 2.537(fo) -5.038 G .037(ne is)-2.537 F F2(char)2.537 E F0(or)2.537 E F2(int)2.537 E F0 .037(and one is)2.537 F F2(float)2.537 E F0(or)2.537 E F2(double) 2.537 E F0 2.537(,t)C .037(he former is con)-2.537 F -.15(ve)-.4 G .037 (rted to).15 F F2(double)72 133 Q F0 .079(and the result is)2.579 F F2 (double)2.579 E F0 5.079(.I)C 2.579(fa)-5.079 G(n)-2.579 E F2(int)2.579 E F0(or)2.579 E F2(char)2.579 E F0 .079(is added to a pointer)2.579 F 2.579(,t)-.4 G .079(he former is con)-2.579 F -.15(ve)-.4 G .079 (rted by multiplying).15 F .613(it by the length of the object to which\ the pointer points and the result is a pointer of the same type as the\ original)72 144 R(pointer)72 155 Q 5.49(.T)-.55 G .49 (hus if P is a pointer to an object, the e)-5.49 F .49(xpression `)-.15 F(`P+1')-.74 E 2.99('i)-.74 G 2.99(sap)-2.99 G .49 (ointer to another object of the same type as)-2.99 F (the \214rst and immediately follo)72 166 Q(wing it in storage.)-.25 E (No other type combinations are allo)82 181.4 Q(wed.)-.25 E(7.4.2)72 203.4 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E/F3 10/Symbol SF(-)2.5 E F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F0 .15(The result is the dif)82 216.6 R .15(ference of the operands.)-.25 F .149(If both operands are)5.15 F F2 (int)2.649 E F0(,)A F2(char)2.649 E F0(,)A F2(float)2.649 E F0 2.649(,o) C(r)-2.649 E F2(double)2.649 E F0 2.649(,t)C .149(he same type)-2.649 F .53(considerations as for)72 227.6 R F2(+)3.03 E F0(apply)3.03 E 5.53 (.I)-.65 G 3.03(fa)-5.53 G(n)-3.03 E F2(int)3.03 E F0(or)3.03 E F2(char) 3.03 E F0 .53(is subtracted from a pointer)3.03 F 3.03(,t)-.4 G .53 (he former is con)-3.03 F -.15(ve)-.4 G .53(rted in the same).15 F -.1 (wa)72 238.6 S 2.5(ya).1 G 2.5(se)-2.5 G(xplained under)-2.65 E F2(+)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(.).15 E .401(If tw)82 254 R 2.901(op)-.1 G .401 (ointers to objects of the same type are subtracted, the result is con) -2.901 F -.15(ve)-.4 G .4(rted \(by di).15 F .4 (vision by the length of the)-.25 F .215(object\) to an)72 265 R F2(int) 2.716 E F0 .216 (representing the number of objects separating the pointed-to objects.) 2.716 F .216(This con)5.216 F -.15(ve)-.4 G .216(rsion will in gen-).15 F .524(eral gi)72 276 R .824 -.15(ve u)-.25 H(ne).15 E .524 (xpected results unless the pointers point to objects in the same array) -.15 F 3.023(,s)-.65 G .523(ince pointers, e)-3.023 F -.15(ve)-.25 G 3.023(nt).15 G 3.023(oo)-3.023 G .523(bjects of)-3.023 F (the same type, do not necessarily dif)72 287 Q (fer by a multiple of the object-length.)-.25 E 2.5(7.5 Shift)72 309 R (operators)2.5 E(The shift operators)82 322.2 Q F2(<<)2.5 E F0(and)2.5 E F2(>>)2.5 E F0(group left-to-right.)2.5 E(7.5.1)72 344.2 Q F1 -.2(ex)5 G (pr).2 E(ession)-.37 E F2(<<)2.5 E F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F0(7.5.2)72 355.2 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E F2(>>)2.5 E F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F0 .743(Both operands must be)82 368.4 R F2(int)3.243 E F0(or)3.243 E F2(char)3.243 E F0 3.243(,a)C .743 (nd the result is)-3.243 F F2(int)3.243 E F0 5.743(.T)C .744 (he second operand should be non-ne)-5.743 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 5.744(.T).15 G(he)-5.744 E -.25(va)72 379.4 S .161 (lue of `).25 F(`E1<<E2')-.74 E 2.661('i)-.74 G 2.661(sE)-2.661 G 2.661 (1\()-2.661 G .161 (interpreted as a bit pattern 16 bits long\) left-shifted E2 bits; v) -2.661 F .161(acated bits are 0-\214lled.)-.25 F(The)5.161 E -.25(va)72 390.4 S .138(lue of `).25 F(`E1>>E2')-.74 E 2.638('i)-.74 G 2.638(sE) -2.638 G 2.639(1\()-2.638 G .139(interpreted as a tw)-2.639 F(o')-.1 E 2.639(sc)-.55 G .139 (omplement, 16-bit quantity\) arithmetically right-shifted E2 bit po-) -2.639 F 3.023(sitions. V)72 401.4 R .523 (acated bits are \214lled by a cop)-1.11 F 3.022(yo)-.1 G 3.022(ft) -3.022 G .522(he sign bit of E1.)-3.022 F .522 ([Note: the use of arithmetic rather than logical shift)5.522 F (does not survi)72 412.4 Q .3 -.15(ve t)-.25 H (ransportation between machines.]).15 E 2.5(7.6 Relational)72 434.4 R (operators)2.5 E .253(The relational operators group left-to-right, b)82 447.6 R .253(ut this f)-.2 F .253(act is not v)-.1 F .253(ery useful; `) -.15 F(`a<b<c')-.74 E 2.754('d)-.74 G .254(oes not mean what it seems) -2.754 F(to.)72 458.6 Q(7.6.1)72 480.6 Q F1 -.2(ex)5 G(pr).2 E(ession) -.37 E F2(<)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0(7.6.2)72 491.6 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E F2(>)2.5 E F1 -.2(ex)2.5 G (pr).2 E(ession)-.37 E F0(7.6.3)72 502.6 Q F1 -.2(ex)5 G(pr).2 E(ession) -.37 E F2(<=)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0(7.6.4)72 513.6 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E F2(>=)2.5 E F1 -.2(ex)2.5 G (pr).2 E(ession)-.37 E F0 .125(The operators < \(less than\), > \(great\ er than\), <= \(less than or equal to\) and >= \(greater than or equal \ to\) all yield 0)82 526.8 R .53(if the speci\214ed relation is f)72 537.8 R .531(alse and 1 if it is true.)-.1 F .531(Operand con)5.531 F -.15(ve)-.4 G .531(rsion is e).15 F .531(xactly the same as for the)-.15 F F2(+)3.031 E F0 .531(operator e)3.031 F(x-)-.15 E .133 (cept that pointers of an)72 548.8 R 2.633(yk)-.15 G .133 (ind may be compared; the result in this case depends on the relati) -2.633 F .433 -.15(ve l)-.25 H .132(ocations in storage of).15 F (the pointed-to objects.)72 559.8 Q(It does not seem to be v)5 E (ery meaningful to compare pointers with inte)-.15 E(gers other than 0.) -.15 E 2.5(7.7 Equality)72 581.8 R(operators)2.5 E(7.7.1)72 595 Q F1 -.2 (ex)5 G(pr).2 E(ession)-.37 E F2(==)2.5 E F1 -.2(ex)2.5 G(pr).2 E (ession)-.37 E F0(7.7.2)72 606 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E F2 (!=)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0(The)82 619.2 Q F2(==) 2.922 E F0 .422(\(equal to\) and the)2.922 F F2(!=)2.922 E F0 .422 (\(not equal to\) operators are e)2.922 F .422 (xactly analogous to the relational operators e)-.15 F .423(xcept for) -.15 F(their lo)72 630.2 Q(wer precedence.)-.25 E(\(Thus `)5 E (`a<b == c<d')-.74 E 2.5('i)-.74 G 2.5(s1w)-2.5 G(hene)-2.5 E -.15(ve) -.25 G 2.5(ra).15 G(<b and c<d ha)-2.5 E .3 -.15(ve t)-.2 H (he same truth-v).15 E(alue\).)-.25 E(7.8)72 652.2 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E F2(&)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0(The) 82 665.4 Q F2(&)3.047 E F0 .547(operator groups left-to-right.)3.047 F .547(Both operands must be)5.547 F F2(int)3.047 E F0(or)3.047 E F2(char) 3.046 E F0 3.046(;t)C .546(he result is an)-3.046 F F2(int)3.046 E F0 .546(which is the bit-)3.046 F(wise logical)72 676.4 Q F2(and)2.5 E F0 (function of the operands.)2.5 E EP %%Page: 8 8 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-8)2.5 G F0(7.9)72 97.8 Q F1 -.2 (ex)5 G(pr).2 E(ession)-.37 E/F2 10/Courier@0 SF(^)2.5 E F1 -.2(ex)2.5 G (pr).2 E(ession)-.37 E F0(The)82 111 Q F2(^)3.241 E F0 .741 (operator groups left-to-right.)3.241 F .741(The operands must be)5.741 F F2(int)3.241 E F0(or)3.241 E F2(char)3.242 E F0 3.242(;t)C .742 (he result is an)-3.242 F F2(int)3.242 E F0 .742(which is the bit-)3.242 F(wise e)72 122 Q(xclusi)-.15 E -.15(ve)-.25 G F2(or)2.65 E F0 (function of its operands.)2.5 E(7.10)72 144 Q F1 -.2(ex)5 G(pr).2 E .4 LW 141.866 137.25 141.866 144 DL 6.166(ession e)111.7 144 R(xpr)-.2 E (ession)-.37 E 101.075 150.45 101.075 157.2 DL F0 4.55(The operator)82 157.2 R .025(groups left-to-right.)2.525 F .025(The operands must be) 5.025 F F2(int)2.525 E F0(or)2.525 E F2(char)2.525 E F0 2.525(;t)C .025 (he result is an)-2.525 F F2(int)2.525 E F0 .025(which is the bit-wise) 2.525 F(inclusi)72 168.2 Q -.15(ve)-.25 G F2(or)2.65 E F0 (of its operands.)2.5 E(7.11)72 190.2 Q F1 -.2(ex)5 G(pr).2 E(ession) -.37 E F2(&&)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0(The)82 203.4 Q F2(&&)3.455 E F0 .956 (operator returns 1 if both its operands are non-zero, 0 otherwise.) 3.455 F(Unlik)5.956 E(e)-.1 E F2(&)3.456 E F0(,)A F2(&&)3.456 E F0 .956 (guarantees left-to-right)3.456 F -.25(eva)72 214.4 S(luation; moreo).25 E -.15(ve)-.15 G 2.5(rt).15 G(he second operand is not e)-2.5 E -.25(va) -.25 G(luated if the \214rst operand is 0.).25 E (The operands need not ha)82 229.8 Q .3 -.15(ve t)-.2 H(he same type, b) .15 E(ut each must ha)-.2 E .3 -.15(ve o)-.2 H (ne of the fundamental types or be a pointer).15 E(.)-.55 E(7.12)72 251.8 Q F1 -.2(ex)5 G(pr).2 E 141.866 245.05 141.866 251.8 DL 143.866 245.05 143.866 251.8 DL 8.166(ession e)111.7 251.8 R(xpr)-.2 E(ession) -.37 E 102.841 258.25 102.841 265 DL 104.841 258.25 104.841 265 DL F0 8.416(The operator)82 265 R .125 (returns 1 if either of its operands is non-zero, and 0 otherwise.)2.625 F(Unlik)5.124 E 431.876 258.25 431.876 265 DL 442.332 258.25 442.332 265 DL 444.332 258.25 444.332 265 DL -7.498 7.956(e, g)422.146 265 T .124 (uarantees left-to-right)-7.956 F -.25(eva)72 276 S(luation; moreo).25 E -.15(ve)-.15 G .8 -.4(r, t).15 H(he second operand is not e).4 E -.25 (va)-.25 G(luated if the v).25 E (alue of the \214rst operand is non-zero.)-.25 E (The operands need not ha)82 291.4 Q .3 -.15(ve t)-.2 H(he same type, b) .15 E(ut each must ha)-.2 E .3 -.15(ve o)-.2 H (ne of the fundamental types or be a pointer).15 E(.)-.55 E(7.13)72 313.4 Q F1 -.2(ex)5 G(pr).2 E(ession)-.37 E F2(?)2.5 E F1 -.2(ex)6 G(pr) .2 E(ession)-.37 E F2(:)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 .258(Conditional e)82 326.6 R .258(xpressions group left-to-right.)-.15 F .259(The \214rst e)5.259 F .259(xpression is e)-.15 F -.25(va)-.25 G .259(luated and if it is non-zero, the result is the).25 F -.25(va)72 337.6 S .573(lue of the second e).25 F .572 (xpression, otherwise that of third e)-.15 F 3.072(xpression. If)-.15 F .572(the types of the second and third operand are)3.072 F .05 (the same, the result has their common type; otherwise the same con)72 348.6 R -.15(ve)-.4 G .051(rsion rules as for).15 F F2(+)2.551 E F0 (apply)2.551 E 5.051(.O)-.65 G .051(nly one of the sec-)-5.051 F (ond and third e)72 359.6 Q(xpressions is e)-.15 E -.25(va)-.25 G (luated.).25 E 2.5(7.14 Assignment)72 381.6 R(operators)2.5 E .942(Ther\ e are a number of assignment operators, all of which group right-to-lef\ t.)82 394.8 R .942(All require an lv)5.942 F .942(alue as their left) -.25 F .181(operand, and the type of an assignment e)72 405.8 R .182 (xpression is that of its left operand.)-.15 F .182(The v)5.182 F .182 (alue is the v)-.25 F .182(alue stored in the left)-.25 F (operand after the assignment has tak)72 416.8 Q(en place.)-.1 E(7.14.1) 72 438.8 Q F1(lvalue)5 E F2(=)2.5 E F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F0 .512(The v)82 452 R .512(alue of the e)-.25 F .512 (xpression replaces that of the object referred to by the lv)-.15 F 3.011(alue. The)-.25 F .511(operands need not ha)3.011 F .811 -.15(ve t) -.2 H(he).15 E .691(same type, b)72 463 R .691(ut both must be)-.2 F F2 (int)3.191 E F0(,)A F2(char)3.191 E F0(,)A F2(float)3.191 E F0(,)A F2 (double)3.192 E F0 3.192(,o)C 3.192(rp)-3.192 G(ointer)-3.192 E 5.692 (.I)-.55 G 3.192(fn)-5.692 G .692(either operand is a pointer)-3.192 F 3.192(,t)-.4 G .692(he assign-)-3.192 F(ment tak)72 474 Q(es place as e) -.1 E(xpected, possibly preceded by con)-.15 E -.15(ve)-.4 G (rsion of the e).15 E(xpression on the right.)-.15 E .411 (When both operands are)82 489.4 R F2(int)2.911 E F0 .411 (or pointers of an)2.911 F 2.911(yk)-.15 G .411(ind, no con)-2.911 F -.15(ve)-.4 G .411(rsion e).15 F -.15(ve)-.25 G 2.911(rt).15 G(ak)-2.911 E .411(es place; the v)-.1 F .411(alue of the e)-.25 F(xpression)-.15 E .012(is simply stored into the object referred to by the lv)72 500.4 R 2.512(alue. Thus)-.25 F .012 (it is possible to generate pointers which will cause ad-)2.512 F (dressing e)72 511.4 Q(xceptions when used.)-.15 E(7.14.2)72 533.4 Q F1 (lvalue)7.5 E F2(=+)2.5 E F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F0(7.14.3) 72 544.4 Q F1(lvalue)7.5 E F2(=)2.5 E/F3 10/Symbol SF(-)A F1 -.2(ex)6 G (pr).2 E(ession)-.37 E F0(7.14.4)72 555.4 Q F1(lvalue)7.5 E F2(=)2.5 E F0(*)2.2 I F1 -.2(ex)6 -2.2 O(pr).2 E(ession)-.37 E F0(7.14.5)72 566.4 Q F1(lvalue)7.5 E F2(=/)2.5 E F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F0 (7.14.6)72 577.4 Q F1(lvalue)7.5 E F2(=%)2.5 E F1 -.2(ex)6 G(pr).2 E (ession)-.37 E F0(7.14.7)72 588.4 Q F1(lvalue)7.5 E F2(=>>)2.5 E F1 -.2 (ex)6 G(pr).2 E(ession)-.37 E F0(7.14.8)72 599.4 Q F1(lvalue)7.5 E F2 (=<<)2.5 E F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F0(7.14.9)72 610.4 Q F1 (lvalue)7.5 E F2(=&)2.5 E F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F0 (7.14.10)72 621.4 Q F1(lvalue)2.5 E F2(=^)2.5 E F1 -.2(ex)6 G(pr).2 E (ession)-.37 E F0(7.14.11)72 632.4 Q F1(lvalue)2.5 E 140.106 625.65 140.106 632.4 DL F2(=)131.44 632.4 Q F1 -.2(ex)9.666 G(pr).2 E(ession) -.37 E F0 3.173(The beha)82 645.6 R 3.173(vior of an e)-.2 F 3.173 (xpression of the form `)-.15 F(`E1 =op E2')-.74 E 5.673('m)-.74 G 3.173 (ay be inferred by taking it as equi)-5.673 F -.25(va)-.25 G 3.172 (lent to).25 F -.74(``)72 656.6 S(E1 = E1 op E2').74 E .904('; ho)-.74 F (we)-.25 E -.15(ve)-.25 G 1.704 -.4(r, E).15 H 3.404(1i).4 G 3.404(se) -3.404 G -.25(va)-3.654 G .904(luated only once.).25 F(Moreo)5.905 E -.15(ve)-.15 G 1.705 -.4(r, e).15 H .905(xpressions lik).25 F 3.405(e`) -.1 G(`i =+ p')-4.145 E 3.405('i)-.74 G 3.405(nw)-3.405 G .905 (hich a pointer is)-3.405 F(added to an inte)72 667.6 Q(ger)-.15 E 2.5 (,a)-.4 G(re forbidden.)-2.5 E EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)439.28 58 S(efer)-5 E 2.5(ence Manual)-.37 F 2.5(-9)2.5 G F0(7.15)72 97.8 Q F1 -.2 (ex)5 G(pr).2 E(ession)-.37 E/F2 10/Courier@0 SF(,)2.5 E F1 -.2(ex)2.5 G (pr).2 E(ession)-.37 E F0 3.23(Ap)82 111 S .73(air of e)-3.23 F .73 (xpressions separated by a comma is e)-.15 F -.25(va)-.25 G .729 (luated left-to-right and the v).25 F .729(alue of the left e)-.25 F .729(xpression is dis-)-.15 F 3.236(carded. The)72 122 R .736 (type and v)3.236 F .736(alue of the result are the type and v)-.25 F .736(alue of the right operand.)-.25 F .736 (This operator groups left-to-)5.736 F 3.027(right. It)72 133 R .526 (should be a)3.027 F -.2(vo)-.2 G .526 (ided in situations where comma is gi).2 F -.15(ve)-.25 G 3.026(nas).15 G .526(pecial meaning, for e)-3.026 F .526(xample in actual ar)-.15 F (guments)-.18 E(to function calls \(\2477.1.6\) and lists of initialize\ rs \(\24710.2\).)72 144 Q/F3 10/Times-Bold@0 SF 2.5(8. Declarations)72 171.5 R F0 1.249(Declarations are used within function de\214nitions to\ specify the interpretation which C gi)82 184.7 R -.15(ve)-.25 G 3.749 (st).15 G 3.749(oe)-3.749 G 1.249(ach identi\214er;)-3.749 F(the)72 195.7 Q 2.5(yd)-.15 G 2.5(on)-2.5 G(ot necessarily reserv)-2.5 E 2.5(es) -.15 G(torage associated with the identi\214er)-2.5 E 5(.D)-.55 G (eclarations ha)-5 E .3 -.15(ve t)-.2 H(he form).15 E F1(declar)108 214.4 Q(ation:)-.15 E(decl-speci\214er)144 225.4 Q 2.5(sd)-.1 G(eclar) -2.5 E(ator)-.15 E(-list)-.2 E/F4 6/Times-Italic@0 SF(opt)3 I F2(;)5 -3 M F0 1.127(The declarators in the declarator)72 244.1 R 1.127 (-list contain the identi\214ers being declared.)-.2 F 1.126 (The decl-speci\214ers consist of at most)6.127 F (one type-speci\214er and at most one storage class speci\214er)72 255.1 Q(.)-.55 E F1(decl-speci\214er)108 273.8 Q(s:)-.1 E(type-speci\214er)144 284.8 Q(sc-speci\214er)144 295.8 Q(type-speci\214er sc-speci\214er)144 306.8 Q(sc-speci\214er type-speci\214er)144 317.8 Q F0 2.5(8.1 Storage) 72 336.5 R(class speci\214ers)2.5 E(The sc-speci\214ers are:)82 349.7 Q F1(sc-speci\214er:)108 368.4 Q F2(auto)144 379.4 Q(static)144 390.4 Q (extern)144 401.4 Q(register)144 412.4 Q F0(The)72 431.1 Q F2 1.135 (auto, static,)3.635 F F0(and)7.135 E F2(register)3.635 E F0 1.135 (declarations also serv)7.135 F 3.635(ea)-.15 G 3.635(sd)-3.635 G 1.136 (e\214nitions in that the)-3.635 F 3.636(yc)-.15 G 1.136 (ause an appropriate)-3.636 F .153(amount of storage to be reserv)72 442.1 R 2.653(ed. In)-.15 F(the)2.653 E F2(extern)2.653 E F0 .152 (case there must be an e)2.653 F .152(xternal de\214nition \(see belo) -.15 F .152(w\) for the gi)-.25 F -.15(ve)-.25 G(n).15 E (identi\214ers some)72 453.1 Q(where outside the function in which the) -.25 E 2.5(ya)-.15 G(re declared.)-2.5 E 1.065(There are some se)82 468.5 R -.15(ve)-.25 G 1.065(re restrictions on).15 F F2(register)3.565 E F0 1.065(identi\214ers: there can be at most 3 re)7.065 F 1.066 (gister identi\214ers in an)-.15 F(y)-.15 E .108 (function, and the type of a re)72 479.5 R .107 (gister identi\214er can only be)-.15 F F2 .107(int, char,)2.607 F F0 .107(or pointer \(not)6.107 F F2 .107(float, double,)2.607 F F0(struc-) 6.107 E .478(ture, function, or array\).)72 490.5 R .478 (Also the address-of operator)5.478 F F2(&)2.978 E F0 .478 (cannot be applied to such identi\214ers.)6.478 F .479 (Except for these re-)5.479 F .689 (strictions \(in return for which one is re)72 501.5 R -.1(wa)-.25 G .688(rded with f).1 F(aster)-.1 E 3.188(,s)-.4 G .688(maller code\), re) -3.188 F .688(gister identi\214ers beha)-.15 F .988 -.15(ve a)-.2 H 3.188(si).15 G 3.188(ft)-3.188 G(he)-3.188 E 3.188(yw)-.15 G(ere)-3.188 E 2.5(automatic. In)72 512.5 R -.1(fa)2.5 G (ct implementations of C are free to treat).1 E F2(register)2.5 E F0 (as synon)6 E(ymous with)-.15 E F2(auto.)2.5 E F0(If the sc-speci\214er\ is missing from a declaration, it is generally tak)82 527.9 Q(en to be) -.1 E F2(auto)2.5 E F0(.)A 2.5(8.2 T)72 549.9 R(ype speci\214ers)-.8 E (The type-speci\214ers are)82 563.1 Q F1(type-speci\214er:)108 581.8 Q F2(int)144 592.8 Q(char)144 603.8 Q(float)144 614.8 Q(double)144 625.8 Q (struct)144 636.8 Q F1 2.5({t)6 G(ype-decl-list })-2.5 E F2(struct)144 647.8 Q F1(identi\214er { type-decl-list })6 E F2(struct)144 658.8 Q F1 (identi\214er)6 E F0(The)72 677.5 Q F2(struct)3.021 E F0 .521 (speci\214er is discussed in \2478.5.)3.021 F .521(If the type-speci\ \214er is missing from a declaration, it is generally tak)5.521 F(en)-.1 E(to be)72 688.5 Q F2(int)2.5 E F0(.)A EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-1)2.5 G(0)-2.5 E F0 2.5 (8.3 Declarators)72 97.8 R(The declarator)82 111 Q(-list appearing in a\ declaration is a comma-separated sequence of declarators.)-.2 E F1 (declar)108 129.7 Q(ator)-.15 E(-list:)-.2 E(declar)144 140.7 Q(ator) -.15 E(declar)144 151.7 Q(ator)-.15 E/F2 10/Courier@0 SF(,)2.5 E F1 (declar)2.5 E(ator)-.15 E(-list)-.2 E F0 1.299(The speci\214ers in the \ declaration indicate the type and storage class of the objects to which\ the declarators refer)72 170.4 R(.)-.55 E(Declarators ha)72 181.4 Q .3 -.15(ve t)-.2 H(he syntax:).15 E F1(declar)108 200.1 Q(ator:)-.15 E (identi\214er)144 211.1 Q F0(*)144 224.3 Q F1(declar)2.5 -2.2 M(ator) -.15 E(declar)144 233.1 Q(ator)-.15 E F2 6(\(\))2.5 G F1(declar)144 244.1 Q(ator)-.15 E F2([)2.5 E F1(constant-e)6 E(xpr)-.2 E(ession)-.37 E /F3 6/Times-Italic@0 SF(opt)3 I F2(])2.5 -3 M(\()144 255.1 Q F1(declar)6 E(ator)-.15 E F2(\))2.5 E F0 (The grouping in this de\214nition is the same as in e)72 273.8 Q (xpressions.)-.15 E 2.5(8.4 Meaning)72 295.8 R(of declarators)2.5 E .383 (Each declarator is tak)82 309 R .383(en to be an assertion that when a\ construction of the same form as the declarator appears in)-.1 F .019 (an e)72 320 R .019(xpression, it yields an object of the indicated typ\ e and storage class.)-.15 F .019(Each declarator contains e)5.019 F .018 (xactly one identi-)-.15 F (\214er; it is this identi\214er that is declared.)72 331 Q .214 (If an unadorned identi\214er appears as a declarator)82 346.4 R 2.714 (,t)-.4 G .214 (hen it has the type indicated by the speci\214er heading the decla-) -2.714 F(ration.)72 357.4 Q(If a declarator has the form)82 372.8 Q(*) 108 393.7 Q(D)2.5 -2.2 M 1.081(for D a declarator)72 410.2 R 3.581(,t) -.4 G 1.081(hen the contained identi\214er has the type `)-3.581 F 1.081 (`pointer to .)-.74 F 1.666(..)1.666 G -.74('')-2.366 G 3.581(,w).74 G 1.08(here `)-3.581 F 1.666(`...')-.74 G 3.58('i)-2.406 G 3.58(st)-3.58 G 1.08(he type which the)-3.58 F(identi\214er w)72 421.2 Q(ould ha)-.1 E .3 -.15(ve h)-.2 H(ad if the declarator had been simply D.).15 E (If a declarator has the form)82 436.6 Q -2.5 1.666(D\( \))108 455.3 T .025(then the contained identi\214er has the type `)72 474 R .025 (`function returning ...)-.74 F -.74('')-.7 G 2.525(,w).74 G .025 (here `)-2.525 F 1.666(`...')-.74 G 2.525('i)-2.406 G 2.526(st)-2.525 G .026(he type which the identi\214er w)-2.526 F(ould)-.1 E(ha)72 485 Q .3 -.15(ve h)-.2 H(ad if the declarator had been simply D.).15 E 2.5(Ad)82 500.4 S(eclarator may ha)-2.5 E .3 -.15(ve t)-.2 H(he form).15 E (D[constant-e)108 519.1 Q(xpression])-.15 E(or)72 533.4 Q .832(D[ ])108 547.7 R .958(In the \214rst case the constant e)72 566.4 R .957 (xpression is an e)-.15 F .957(xpression whose v)-.15 F .957 (alue is determinable at compile time, and whose)-.25 F .803(type is)72 577.4 R F2(int.)3.303 E F0 .803(in the second the constant 1 is used.) 12.803 F .803(\(Constant e)5.803 F .803 (xpressions are de\214ned precisely in \24715.\))-.15 F .804(Such a) 6.635 F .49(declarator mak)72 588.4 R .49 (es the contained identi\214er ha)-.1 F .79 -.15(ve t)-.2 H .49(ype `) .15 F(`array)-.74 E -.7(.')-.65 G 5.49('I)-.04 G 2.99(ft)-5.49 G .49 (he unadorned declarator D w)-2.99 F .49(ould specify a non-ar)-.1 F(-) -.2 E .684(ray of type `)72 599.4 R -.834(`. . .)-.74 F -.74('')-.7 G 3.184(,t).74 G .684(hen the declarator `)-3.184 F -.834(`D[ i ]')-.74 F 3.185('y)-.74 G .685(ields a 1-dimensional array with rank)-3.185 F F1 (i)3.185 E F0 .685(of objects of type `)3.185 F -.834(`. . .)-.74 F -.74 ('')-.7 G 5.685(.I).74 G(f)-5.685 E 1.902(the unadorned declarator D w) 72 610.4 R 1.901(ould specify an)-.1 F F1(n)4.401 E F0 1.901 (-dimensional array with rank)1.666 F F1(i)4.401 E F3(1)3 I/F4 10/Symbol SF<b4>1.666 -3 M F1(i)1.666 E F3(2)3 I F4<b4>1.666 -3 M F1 1.666(...) 1.666 G F4<b4>A F1(i)1.666 E F3(n)3 I F1(,)-3 I F0 1.901 (then the declarator)4.401 F -.74(``)72 621.4 S -.834(D[ i).74 F/F5 6 /Times-Roman@0 SF(n+1)3 I F0(]')1.666 -3 M 2.5('y)-.74 G(ields an \() -2.5 E F1(n)A F0 -.834(+1 \) -dimensional)1.666 F(array with rank)2.5 E F1(i)2.5 E F3(1)3 I F4<b4>1.666 -3 M F1(i)1.666 E F3(2)3 I F4<b4>1.666 -3 M F1 1.666(...)1.666 G F4<b4>A F1(i)1.666 E F3(n)3 I F4<b4>1.666 -3 M F1(i)1.666 E F3(n+1)3 I F0(.)-3 I .495(An array may be constructed from\ one of the basic types, from a pointer)82 636.8 R 2.996(,f)-.4 G .496 (rom a structure, or from another array)-2.996 F (\(to generate a multi-dimensional array\).)72 647.8 Q(Finally)82 663.2 Q 3.054(,p)-.65 G .554(arentheses in declarators do not alter the type \ of the contained identi\214er e)-3.054 F .554(xcept insof)-.15 F .554 (ar as the)-.1 F 3.053(ya)-.15 G .553(lter the)-3.053 F (binding of the components of the declarator)72 674.2 Q(.)-.55 E .341 (Not all the possibilities allo)82 689.6 R .342(wed by the syntax abo) -.25 F .642 -.15(ve a)-.15 H .342(re actually permitted.).15 F .342 (The restrictions are as follo)5.342 F .342(ws: func-)-.25 F .078 (tions may not return arrays, structures or functions, although the)72 700.6 R 2.578(ym)-.15 G .078 (ay return pointers to such things; there are no ar)-2.578 F(-)-.2 E 1.224(rays of functions, although there may be arrays of pointers to fu\ nctions.)72 711.6 R(Lik)6.225 E -.25(ew)-.1 G 1.225 (ise a structure may not contain a).25 F(function, b)72 722.6 Q (ut it may contain a pointer to a function.)-.2 E EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)434.28 58 S(efer)-5 E 2.5(ence Manual)-.37 F 2.5(-1)2.5 G(1)-2.5 E F0(As an e)82 97.8 Q(xample, the declaration)-.15 E/F2 10/Courier@0 SF(int i,)108 116.5 Q F0(*)6 2.2 M F2(ip, f)-2.2 I 3.332(\(\))1.666 G(,)-3.332 E F0(*) 6 2.2 M F2 -2.668(fip\( \),)-2.2 J(\()6 E F0(*)2.2 I F2 -4.334(pfi\) \() -2.2 J(\);)3.332 E F0 .412(declares an inte)72 135.2 R(ger)-.15 E F1(i) 2.912 E F0 2.912(,ap)C(ointer)-2.912 E F1(ip)2.912 E F0 .412(to an inte) 2.912 F(ger)-.15 E 2.912(,af)-.4 G(unction)-2.912 E F1(f)2.912 E F0 .412 (returning an inte)2.912 F(ger)-.15 E 2.912(,af)-.4 G(unction)-2.912 E F1<8c70>2.912 E F0 .411(returning a pointer to)2.911 F(an inte)72 146.2 Q(ger)-.15 E 2.5(,a)-.4 G(nd a pointer)-2.5 E F1<708c>2.5 E F0 (to a function which returns an inte)2.5 E(ger)-.15 E 5(.A)-.55 G(lso)-5 E F2(float fa[17],)108 164.9 Q F0(*)6 2.2 M F2(afp[17];)-2.2 I F0 (declares an array of)72 183.6 Q F2(float)2.5 E F0 (numbers and an array of pointers to)2.5 E F2(float)2.5 E F0 2.5 (numbers. Finally)2.5 F(,)-.65 E F2(static int x3d[3][5][7];)108 202.3 Q F0 .775(declares a static three-dimensional array of inte)72 221 R .775 (gers, with rank 3)-.15 F/F3 10/Symbol SF<b4>A F0(5)A F3<b4>A F0 3.275 (7. In)B .775(complete detail,)3.275 F F1(x3d)3.275 E F0 .775 (is an array of three)3.275 F .361 (items: each item is an array of \214v)72 232 R 2.861(ea)-.15 G .361 (rrays; each of the latter arrays is an array of se)-2.861 F -.15(ve) -.25 G 2.861(ni).15 G(nte)-2.861 E 2.861(gers. An)-.15 F 2.86(yo)-.15 G 2.86(ft)-2.86 G .36(he e)-2.86 F(xpres-)-.15 E 1.392(sions `)72 243 R (`x3d')-.74 E 1.392(', `)-.74 F -.834(`x3d[ i ]')-.74 F 1.392(', `)-.74 F -.834(`x3d[ i ][ j ]')-.74 F 1.392(', `)-.74 F -.834 (`x3d[ i ][ j ][ k ]')-.74 F 3.892('m)-.74 G 1.392 (ay reasonably appear in an e)-3.892 F 3.892(xpression. The)-.15 F 1.393 (\214rst three)3.893 F(ha)72 254 Q .3 -.15(ve t)-.2 H(ype `).15 E (`array')-.74 E(', the last has type)-.74 E F2(int)2.5 E F0(.)A 2.5 (8.5 Structure)72 276 R(declarations)2.5 E (Recall that one of the forms for a structure speci\214er is)82 289.2 Q F2(struct)144 307.9 Q F1 2.5({t)6 G(ype-decl-list })-2.5 E F0(The)72 326.6 Q F1(type-decl-list)2.5 E F0 (is a sequence of type declarations for the members of the structure:) 2.5 E F1(type-decl-list:)108 345.3 Q(type-declar)144 356.3 Q(ation)-.15 E(type-declar)144 367.3 Q(ation type-decl-list)-.15 E F0 2.863(At)72 386 S .363(ype declaration is just a declaration which does not mention a s\ torage class \(the storage class `)-2.863 F .362(`member of struc-)-.74 F(ture')72 397 Q 2.5('h)-.74 G(ere being understood by conte)-2.5 E (xt\).)-.15 E F1(type-declar)108 415.7 Q(ation:)-.15 E (type-speci\214er declar)144 426.7 Q(ator)-.15 E(-list)-.2 E F2(;)5 E F0 -.4(Wi)72 445.4 S .758(thin the structure, the objects declared ha).4 F 1.059 -.15(ve a)-.2 H .759 (ddresses which increase as their declarations are read left-to-right.) .15 F .202(Each component of a structure be)72 456.4 R .202 (gins on an addressing boundary appropriate to its type.)-.15 F .202 (On the)5.202 F/F4 8/Times-Roman@0 SF(PDP)2.702 E F0 .202 (-11 the only re-)B 1.39(quirement is that non-characters be)72 467.4 R 1.39(gin on a w)-.15 F 1.39 (ord boundary; therefore, there may be 1-byte, unnamed holes in a)-.1 F (structure, and all structures ha)72 478.4 Q .3 -.15(ve a)-.2 H 2.5(ne) .15 G -.15(ve)-2.75 G 2.5(nl).15 G(ength in bytes.)-2.5 E (Another form of structure speci\214er is)82 493.8 Q F2(struct)144 512.5 Q F1(identi\214er { type-decl-list })6 E F0 .625 (This form is the same as the one just discussed, e)72 531.2 R .625 (xcept that the identi\214er is remembered as the)-.15 F F1(structur) 3.124 E 3.124(et)-.37 G -.1(ag)-3.124 G F0 .624(of the)3.224 F .82 (structure speci\214ed by the list.)72 542.2 R 3.32(As)5.82 G .82 (ubsequent declaration may then be gi)-3.32 F -.15(ve)-.25 G 3.32(nu).15 G .82(sing the structure tag b)-3.32 F .82(ut without the)-.2 F (list, as in the third form of structure speci\214er:)72 553.2 Q F2 (struct)144 571.9 Q F1(identi\214er)6 E F0 .973(Structure tags allo)72 590.6 R 3.473(wd)-.25 G .973 (e\214nition of self-referential structures; the)-3.473 F 3.472(ya)-.15 G .972(lso permit the long part of the declaration to be)-3.472 F(gi)72 601.6 Q -.15(ve)-.25 G 2.575(no).15 G .075(nce and used se)-2.575 F -.15 (ve)-.25 G .075(ral times.).15 F .075(It is ho)5.075 F(we)-.25 E -.15 (ve)-.25 G 2.575(ra).15 G .075 (bsurd to declare a structure which contains an instance of itself, as) -2.575 F(distinct from a pointer to an instance of itself.)72 612.6 Q 2.5(As)82 628 S(imple e)-2.5 E(xample of a structure declaration, tak) -.15 E(en from \24716.2 where its use is illustrated more fully)-.1 E 2.5(,i)-.65 G(s)-2.5 E F2(struct tnode {)108 646.7 Q(char tword[20];)144 657.7 Q(int count;)144 668.7 Q(struct tnode)144 679.7 Q F0(*)6 2.2 M F2 (left;)-2.2 I(struct tnode)144 690.7 Q F0(*)6 2.2 M F2(right;)-2.2 I(};) 108 701.7 Q F0 .024(which contains an array of 20 characters, an inte)72 720.4 R(ger)-.15 E 2.523(,a)-.4 G .023(nd tw)-2.523 F 2.523(op)-.1 G .023(ointers to similar structures.)-2.523 F .023 (Once this declaration has)5.023 F EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-1)2.5 G(2)-2.5 E F0(been gi)72 97.8 Q -.15(ve)-.25 G(n, the follo).15 E(wing declaration mak)-.25 E (es sense:)-.1 E/F2 10/Courier@0 SF(struct tnode s,)108 116.5 Q F0(*)6 2.2 M F2(sp;)-2.2 I F0(which declares)72 135.2 Q F1(s)2.5 E F0 (to be a structure of the gi)2.5 E -.15(ve)-.25 G 2.5(ns).15 G(ort and) -2.5 E F1(sp)2.5 E F0(to be a pointer to a structure of the gi)2.5 E -.15(ve)-.25 G 2.5(ns).15 G(ort.)-2.5 E .294(The names of structure mem\ bers and structure tags may be the same as ordinary v)82 150.6 R .294 (ariables, since a distinction can)-.25 F .197(be made by conte)72 161.6 R 2.697(xt. Ho)-.15 F(we)-.25 E -.15(ve)-.25 G .997 -.4(r, n).15 H .197 (ames of tags and members must be distinct.).4 F .197 (The same member name can appear in)5.197 F(dif)72 172.6 Q .362 (ferent structures only if the tw)-.25 F 2.862(om)-.1 G .362(embers are\ of the same type and if their origin with respect to their structure i\ s)-2.862 F (the same; thus separate structures can share a common initial se)72 183.6 Q(gment.)-.15 E/F3 10/Times-Bold@0 SF 2.5(9. Statements)72 211.1 R F0(Except as indicated, statements are e)82 224.3 Q -.15(xe)-.15 G (cuted in sequence.).15 E 2.5(9.1 Expression)72 246.3 R(statement)2.5 E (Most statements are e)82 259.5 Q(xpression statements, which ha)-.15 E .3 -.15(ve t)-.2 H(he form).15 E F1 -.2(ex)108 278.2 S(pr).2 E(ession) -.37 E F2(;)2.5 E F0(Usually e)72 296.9 Q (xpression statements are assignments or function calls.)-.15 E 2.5 (9.2 Compound)72 318.9 R(statement)2.5 E(So that se)82 332.1 Q -.15(ve) -.25 G(ral statements can be used where one is e).15 E (xpected, the compound statement is pro)-.15 E(vided:)-.15 E F1 (compound-statement:)108 350.8 Q 2.5({s)144 361.8 S(tatement-list })-2.5 E(statement-list:)108 383.8 Q(statement)144 394.8 Q (statement statement-list)144 405.8 Q F0 2.5(9.3 Conditional)72 424.5 R (statement)2.5 E(The tw)82 437.7 Q 2.5(of)-.1 G (orms of the conditional statement are)-2.5 E F2(if \()108 456.4 Q F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F2(\))2.5 E F1(statement)6 E F2(if \() 108 467.4 Q F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F2(\))2.5 E F1 (statement)6 E F2(else)2.5 E F1(statement)6 E F0 .41 (In both cases the e)72 486.1 R .41(xpression is e)-.15 F -.25(va)-.25 G .41(luated and if it is non-zero, the \214rst substatement is e).25 F -.15(xe)-.15 G 2.91(cuted. In).15 F .41(the second case)2.91 F .255 (the second substatement is e)72 497.1 R -.15(xe)-.15 G .255 (cuted if the e).15 F .255(xpression is 0.)-.15 F .255(As usual the `) 5.255 F(`else')-.74 E 2.755('a)-.74 G .255(mbiguity is resolv)-2.755 F .255(ed by connecting)-.15 F(an)72 508.1 Q F2(else)2.5 E F0 (with the last encountered elseless)2.5 E F2(if)2.5 E F0(.)A 2.5 (9.4 While)72 530.1 R(statement)2.5 E(The)82 543.3 Q F2(while)2.5 E F0 (statement has the form)2.5 E F2(while \()108 562 Q F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F2(\))2.5 E F1(statement)6 E F0 1.193 (The substatement is e)72 580.7 R -.15(xe)-.15 G 1.193 (cuted repeatedly so long as the v).15 F 1.193(alue of the e)-.25 F 1.193(xpression remains non-zero.)-.15 F 1.193(The test tak)6.193 F(es) -.1 E(place before each e)72 591.7 Q -.15(xe)-.15 G (cution of the statement.).15 E 2.5(9.5 Do)72 613.7 R(statement)2.5 E (The)82 626.9 Q F2(do)2.5 E F0(statement has the form)2.5 E F2(do)108 645.6 Q F1(statement)6 E F2(while \()2.5 E F1 -.2(ex)6 G(pr).2 E(ession) -.37 E F2 6(\);)2.5 G F0 .736(The substatement is e)72 664.3 R -.15(xe) -.15 G .736(cuted repeatedly until the v).15 F .736(alue of the e)-.25 F .737(xpression becomes zero.)-.15 F .737(The test tak)5.737 F .737 (es place after)-.1 F(each e)72 675.3 Q -.15(xe)-.15 G (cution of the statement.).15 E EP %%Page: 13 13 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)434.28 58 S(efer)-5 E 2.5(ence Manual)-.37 F 2.5(-1)2.5 G(3)-2.5 E F0 2.5(9.6 F)72 97.8 R(or statement)-.15 E(The)82 111 Q/F2 10/Courier@0 SF(for)2.5 E F0 (statement has the form)2.5 E F2(for \()108 129.7 Q F1 -.2(ex)6 G(pr).2 E(ession-1)-.37 E/F3 6/Times-Italic@0 SF(opt)3 I F2(;)2.5 -3 M F1 -.2 (ex)6 G(pr).2 E(ession-2)-.37 E F3(opt)3 I F2(;)8.5 -3 M F1 -.2(ex)6 G (pr).2 E(ession-3)-.37 E F3(opt)3 I F2(\))2.5 -3 M F1(statement)6 E F0 (This statement is equi)72 148.4 Q -.25(va)-.25 G(lent to).25 E F1 -.2 (ex)108 167.1 S(pr).2 E(ession-1;)-.37 E F2(while \()108 178.1 Q F1 -.2 (ex)1.666 G(pr).2 E(ession-2)-.37 E F2 6(\){)1.666 G F1(statement)144 189.1 Q -.2(ex)144 200.1 S(pr).2 E(ession-3)-.37 E F2(;)1.666 E(})108 211.1 Q F0 .533(Thus the \214rst e)72 229.8 R .532(xpression speci\214e\ s initialization for the loop; the second speci\214es a test, made befo\ re each iteration,)-.15 F .68(such that the loop is e)72 240.8 R .68 (xited when the e)-.15 F .681(xpression becomes 0; the third e)-.15 F .681(xpression typically speci\214es an incrementa-)-.15 F (tion which is performed after each iteration.)72 251.8 Q(An)82 267.2 Q 3.16(yo)-.15 G 3.16(ra)-3.16 G .66(ll of the e)-3.16 F .66 (xpressions may be dropped.)-.15 F 3.16(Am)5.66 G(issing)-3.16 E F1 -.2 (ex)3.16 G(pr).2 E(ession-2)-.37 E F0(mak)3.16 E .66(es the implied)-.1 F F2(while)3.16 E F0 .66(clause equi)3.16 F(v-)-.25 E(alent to `)72 278.2 Q -.834(`while\( 1 \)')-.74 F('; other missing e)-.74 E (xpressions are simply dropped from the e)-.15 E(xpansion abo)-.15 E -.15(ve)-.15 G(.).15 E 2.5(9.7 Switch)72 300.2 R(statement)2.5 E(The)82 313.4 Q F2(switch)2.745 E F0 .245 (statement causes control to be transferred to one of se)2.745 F -.15 (ve)-.25 G .245(ral statements depending on the v).15 F .245(alue of an) -.25 F -.15(ex)72 324.4 S 2.5(pression. It).15 F(has the form)2.5 E F2 (switch \()108 343.1 Q F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F2(\))2.5 E F1(statement)6 E F0 .526(The e)72 361.8 R .526(xpression must be)-.15 F F2(int)3.026 E F0(or)3.026 E F2(char)3.026 E F0 5.526(.T)C .526 (he statement is typically compound.)-5.526 F .525 (Each statement within the statement)5.525 F (may be labelled with case pre\214x)72 372.8 Q(es as follo)-.15 E(ws:) -.25 E F2(case)108 391.5 Q F1(constant-e)6 E(xpr)-.2 E(ession)-.37 E F2 (:)2.5 E F0 .463(where the constant e)72 410.2 R .463(xpression must be) -.15 F F2(int)2.963 E F0(or)2.963 E F2(char)2.963 E F0 5.463(.N)C 2.963 (ot)-5.463 G .663 -.1(wo o)-2.963 H 2.963(ft).1 G .464 (he case constants in a switch may ha)-2.963 F .764 -.15(ve t)-.2 H .464 (he same).15 F -.25(va)72 421.2 S 2.5(lue. Constant).25 F -.15(ex)2.5 G (pressions are precisely de\214ned in \24715.).15 E (There may also be at most one statement pre\214x of the form)82 436.6 Q F2(default :)108 455.3 Q F0 .03(When the)72 474 R F2(switch)2.53 E F0 .03(statement is e)2.53 F -.15(xe)-.15 G .03(cuted, its e).15 F .03 (xpression is e)-.15 F -.25(va)-.25 G .03 (luated and compared with each case constant in an un-).25 F .43 (de\214ned order)72 485 R 5.43(.I)-.55 G 2.93(fo)-5.43 G .43 (ne of the case constants is equal to the v)-2.93 F .43(alue of the e) -.25 F .43(xpression, control is passed to the statement)-.15 F(follo)72 496 Q .885(wing the matched case pre\214x.)-.25 F .885 (If no case constant matches the e)5.885 F .885 (xpression, and if there is a)-.15 F F2(default)3.385 E F0(pre\214x,) 3.385 E .144(control passes to the pre\214x)72 507 R .144(ed statement.) -.15 F .144(In the absence of a)5.144 F F2(default)2.644 E F0 .144 (pre\214x none of the statements in the switch is)2.644 F -.15(exe)72 518 S(cuted.).15 E(Case or def)82 533.4 Q(ault pre\214x)-.1 E (es in themselv)-.15 E(es do not alter the \215o)-.15 E 2.5(wo)-.25 G 2.5(fc)-2.5 G(ontrol.)-2.5 E 2.5(9.8 Break)72 555.4 R(statement)2.5 E (The statement)82 568.6 Q F2(break ;)108 587.3 Q F0 .978 (causes termination of the smallest enclosing)72 606 R F2(while)3.478 E F0(,)A F2(do)3.478 E F0(,)A F2(for)3.478 E F0 3.478(,o)C(r)-3.478 E F2 (switch)3.478 E F0 .978(statement; control passes to the state-)3.478 F (ment follo)72 617 Q(wing the terminated statement.)-.25 E 2.5 (9.9 Continue)72 639 R(statement)2.5 E(The statement)82 652.2 Q F2 (continue ;)108 670.9 Q F0 .292(causes control to pass to the loop-cont\ inuation portion of the smallest enclosing)72 689.6 R F2(while)2.793 E F0(,)A F2(do)2.793 E F0 2.793(,o)C(r)-2.793 E F2(for)2.793 E F0 .293 (statement; that)2.793 F(is to the end of the loop.)72 700.6 Q (More precisely)5 E 2.5(,i)-.65 G 2.5(ne)-2.5 G(ach of the statements) -2.5 E EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-1)2.5 G(4)-2.5 E/F2 10/Courier@0 SF(while \()108 97.8 Q -6 1.666(... \))3.332 H 56.004({d)4.334 G 102 6 (o{ f)-56.004 H(or \()-6 E -6 1.666(... \))3.332 H({)4.334 E 113.336 1.666(... ... ...)121.666 108.8 T -4.334(contin: ;)108 119.8 R -4.334 (contin: ;)94.334 F -4.334(contin: ;)94.334 F 138(}})108 130.8 S (while \()-132 E -6 1.666(... \);)3.332 H(})46.672 E F0(a)72 149.5 Q F2 (continue)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to `).25 E (`goto contin')-.74 E('.)-.74 E 2.5(9.10 Return)72 171.5 R(statement)2.5 E 2.5(Af)82 184.7 S(unction returns to its caller by means of the)-2.5 E F2(return)2.5 E F0(statement, which has one of the forms)2.5 E F2 (return ;)108 203.4 Q(return \()108 214.4 Q F1 -.2(ex)6 G(pr).2 E (ession)-.37 E F2 6(\);)2.5 G F0 .574(In the \214rst case no v)72 233.1 R .574(alue is returned.)-.25 F .574(In the second case, the v)5.574 F .574(alue of the e)-.25 F .574 (xpression is returned to the caller of the)-.15 F 2.522(function. If)72 244.1 R .022(required, the e)2.522 F .022(xpression is con)-.15 F -.15 (ve)-.4 G .022(rted, as if by assignment, to the type of the function i\ n which it appears.).15 F(Flo)72 255.1 Q(wing of)-.25 E 2.5(ft)-.25 G (he end of a function is equi)-2.5 E -.25(va)-.25 G (lent to a return with no returned v).25 E(alue.)-.25 E 2.5(9.11 Goto)72 277.1 R(statement)2.5 E (Control may be transferred unconditionally by means of the statement)82 290.3 Q F2(goto)108 309 Q F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F2(;)2.5 E F0 .494(The e)72 327.7 R .494 (xpression should be a label \(\247\2479.12, 14.4\) or an e)-.15 F .493 (xpression of type `)-.15 F .493(`pointer to)-.74 F F2(int)2.993 E F0 1.973 -.74('' w)D .493(hich e).74 F -.25(va)-.25 G .493(luates to a la-) .25 F 3.345(bel. It)72 338.7 R .845(is ille)3.345 F -.05(ga)-.15 G 3.345 (lt).05 G 3.346(ot)-3.345 G .846 (ransfer to a label not located in the current function unless some e) -3.346 F .846(xtra-language pro)-.15 F .846(vision has)-.15 F (been made to adjust the stack correctly)72 349.7 Q(.)-.65 E 2.5 (9.12 Labelled)72 371.7 R(statement)2.5 E(An)82 384.9 Q 2.5(ys)-.15 G (tatement may be preceded by label pre\214x)-2.5 E(es of the form)-.15 E F1(identi\214er)108 403.6 Q F2(:)2.5 E F0(which serv)72 422.3 Q 2.5(et) -.15 G 2.5(od)-2.5 G(eclare the identi\214er as a label.)-2.5 E (More details on the semantics of labels are gi)5 E -.15(ve)-.25 G 2.5 (ni).15 G 2.5<6ea7>-2.5 G(14.4 belo)-2.5 E -.65(w.)-.25 G 2.5(9.13 Null) 72 444.3 R(statement)2.5 E(The null statement has the form)82 457.5 Q F2 (;)108 476.2 Q F0 2.768(An)72 494.9 S .267 (ull statement is useful to carry a label just before the `)-2.768 F (`}')-.74 E 2.767('o)-.74 G 2.767(fac)-2.767 G .267 (ompound statement or to supply a null body to a)-2.767 F (looping statement such as)72 505.9 Q F2(while)2.5 E F0(.)A/F3 10 /Times-Bold@0 SF(10. Exter)72 533.4 Q(nal de\214nitions)-.15 E F0 3.17 (ACp)82 546.6 S .67(rogram consists of a sequence of e)-3.17 F .67 (xternal de\214nitions.)-.15 F .67(External de\214nitions may be gi)5.67 F -.15(ve)-.25 G 3.17(nf).15 G .67(or functions, for)-3.17 F .377 (simple v)72 557.6 R .377(ariables, and for arrays.)-.25 F(The)5.377 E 2.877(ya)-.15 G .377(re used both to declare and to reserv)-2.877 F 2.877(es)-.15 G .377(torage for objects.)-2.877 F .376(An e)5.376 F .376 (xternal de\214-)-.15 F .927(nition declares an identi\214er to ha)72 568.6 R 1.227 -.15(ve s)-.2 H .928(torage class).15 F F2(extern)3.428 E F0 .928(and a speci\214ed type.)3.428 F .928 (The type-speci\214er \(\2478.2\) may be)5.928 F(empty)72 579.6 Q 2.5 (,i)-.65 G 2.5(nw)-2.5 G(hich case the type is tak)-2.5 E(en to be)-.1 E F2(int)2.5 E F0(.)A 2.5(10.1 External)72 601.6 R(function de\214nitions) 2.5 E(Function de\214nitions ha)82 614.8 Q .3 -.15(ve t)-.2 H(he form) .15 E F1(function-de\214nition:)108 633.5 Q(type-speci\214er)144 644.5 Q /F4 6/Times-Italic@0 SF(opt)3 I F1(function-declar)2.5 -3 M (ator function-body)-.15 E F0 2.669(Af)72 663.2 S .169 (unction declarator is similar to a declarator for a `)-2.669 F .169 (`function returning ...)-.74 F 1.649 -.74('' e)-.7 H .169 (xcept that it lists the formal parameters).59 F (of the function being de\214ned.)72 674.2 Q F1(function-declar)108 692.9 Q(ator:)-.15 E(declar)144 703.9 Q(ator)-.15 E F2(\()2.5 E F1(par)6 E(ameter)-.15 E(-list)-.2 E F4(opt)3 I F2(\))2.5 -3 M F1(par)108 725.9 Q (ameter)-.15 E(-list:)-.2 E EP %%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Italic@0 SF(-)0 11 Q 5(CR)434.28 58 S(efer)-5 E 2.5 (ence Manual)-.37 F 2.5(-1)2.5 G(5)-2.5 E(identi\214er)144 97.8 Q (identi\214er)144 108.8 Q/F1 10/Courier@0 SF(,)2.5 E F0(par)2.5 E (ameter)-.15 E(-list)-.2 E/F2 10/Times-Roman@0 SF (The function-body has the form)72 127.5 Q F0(function-body:)108 146.2 Q (type-decl-list function-statement)144 157.2 Q F2 .928 (The purpose of the type-decl-list is to gi)72 175.9 R 1.228 -.15(ve t) -.25 H .928(he types of the formal parameters.).15 F .929 (No other identi\214ers should be de-)5.929 F(clared in this list, and \ formal parameters should be declared only here.)72 186.9 Q (The function-statement is just a compound statement which may ha)82 202.3 Q .3 -.15(ve d)-.2 H(eclarations at the start.).15 E F0 (function-statement:)108 221 Q 2.5({d)144 232 S(eclar)-2.5 E(ation-list) -.15 E/F3 6/Times-Italic@0 SF(opt)3 I F0(statement-list })2.5 -3 M F2 2.5(As)72 250.7 S(imple e)-2.5 E (xample of a complete function de\214nition is)-.15 E F1(int max)108 269.4 Q 1.666(\(a)1.666 G 6(,b)-1.666 G 6(,c)-6 G(\))-6 E(int a, b, c;) 108 280.4 Q({)108 291.4 Q(int m;)144 302.4 Q -10.334 6(m= \()144 313.4 T 1.666(a>b\))-4.334 G 6(?a)-1.666 G 1.666(:b;)-4.334 G -4.334 (return \( m > c?)144 324.4 R 1.666(m:c\);)6 G(})108 335.4 Q F2 .719 (Here `)72 354.1 R(`int')-.74 E 3.219('i)-.74 G 3.219(st)-3.219 G .719 (he type-speci\214er; `)-3.219 F(`max\(a, b, c\)')-.74 E 3.219('i)-.74 G 3.219(st)-3.219 G .719(he function-declarator; `)-3.219 F (`int a, b, c;')-.74 E 3.218('i)-.74 G 3.218(st)-3.218 G .718 (he type-decl-list for the)-3.218 F(formal parameters; `)72 365.1 Q (`{ .)-.74 E -3.332 1.666(.. })1.666 H 1.48 -.74('' i)-1.666 H 2.5(st) .74 G(he function-statement.)-2.5 E 2.626(Cc)82 380.5 S(on)-2.626 E -.15 (ve)-.4 G .126(rts all).15 F F1(float)2.626 E F2 .126 (actual parameters to)2.626 F F1(double)2.626 E F2 2.626(,s)C 2.626(of) -2.626 G .126(ormal parameters declared)-2.626 F F1(float)2.626 E F2(ha) 2.626 E .426 -.15(ve t)-.2 H .126(heir declaration).15 F .247 (adjusted to read)72 391.5 R F1(double)2.747 E F2 5.247(.A)C .247 (lso, since a reference to an array in an)-5.247 F 2.746(yc)-.15 G(onte) -2.746 E .246(xt \(in particular as an actual parameter\) is)-.15 F(tak) 72 402.5 Q .04(en to mean a pointer to the \214rst element of the array) -.1 F 2.54(,d)-.65 G .04(eclarations of formal parameters declared `) -2.54 F .04(`array of ...)-.74 F 4.02 -.74('' a)-.7 H(re).74 E .691 (adjusted to read `)72 413.5 R .691(`pointer to ...)-.74 F -.74('')-.7 G 5.691(.F).74 G(inally)-5.691 E 3.191(,b)-.65 G .691(ecause neither stru\ ctures nor functions can be passed to a function, it is)-3.191 F .617(u\ seless to declare a formal parameter to be a structure or function \(po\ inters to structures or functions are of course)72 424.5 R(permitted\).) 72 435.5 Q 2.666(Af)82 450.9 S(ree)-2.666 E F1(return)2.666 E F2 .166(s\ tatement is supplied at the end of each function de\214nition, so runni\ ng of)2.666 F 2.665(ft)-.25 G .165(he end causes control,)-2.665 F -.2 (bu)72 461.9 S 2.5(tn).2 G 2.5(ov)-2.5 G (alue, to be returned to the caller)-2.75 E(.)-.55 E 2.5(10.2 External) 72 483.9 R(data de\214nitions)2.5 E(An e)82 497.1 Q (xternal data de\214nition has the form)-.15 E F0(data-de\214nition:)108 515.8 Q F1(extern)144 526.8 Q F3(opt)3 I F0(type-speci\214er)6 -3 M F3 (opt)3 I F0(init-declar)2.5 -3 M(ator)-.15 E(-list)-.2 E F3(opt)3 I F1 (;)2.5 -3 M F2 .358(The optional)72 545.5 R F1(extern)2.858 E F2 .359 (speci\214er is discussed in \247 11.2.)6.358 F .359(If gi)5.359 F -.15 (ve)-.25 G .359(n, the init-declarator).15 F .359 (-list is a comma-separated list of)-.2 F (declarators each of which may be follo)72 556.5 Q (wed by an initializer for the declarator)-.25 E(.)-.55 E F0 (init-declar)108 575.2 Q(ator)-.15 E(-list:)-.2 E(init-declar)144 586.2 Q(ator)-.15 E(init-declar)144 597.2 Q(ator)-.15 E F1(,)2.5 E F0 (init-declar)6 E(ator)-.15 E(-list)-.2 E(init-declar)108 623.6 Q(ator:) -.15 E(declar)144 634.6 Q(ator initializer)-.15 E F3(opt)3 I F2 (Each initializer represents the initial v)72 653.3 Q (alue for the corresponding object being de\214ned \(and declared\).) -.25 E F0(initializer:)108 672 Q(constant)144 683 Q 2.5({c)144 694 S (onstant-e)-2.5 E(xpr)-.2 E(ession-list })-.37 E EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-1)2.5 G(6)-2.5 E(constant-e)108 97.8 Q(xpr)-.2 E(ession-list:)-.37 E(constant-e)144 108.8 Q(xpr)-.2 E (ession)-.37 E(constant-e)144 119.8 Q(xpr)-.2 E(ession)-.37 E/F2 10 /Courier@0 SF(,)2.5 E F1(constant-e)2.5 E(xpr)-.2 E(ession-list)-.37 E F0 .875(Thus an initializer consists of a constant-v)72 138.5 R .874 (alued e)-.25 F .874(xpression, or comma-separated list of e)-.15 F .874 (xpressions, inside braces.)-.15 F .698 (The braces may be dropped when the e)72 149.5 R .698 (xpression is just a plain constant.)-.15 F .699(The e)5.699 F .699 (xact meaning of a constant e)-.15 F(xpres-)-.15 E (sion is discussed in \24715.)72 160.5 Q(The e)5 E (xpression list is used to initialize arrays; see belo)-.15 E -.65(w.) -.25 G .484(The type of the identi\214er being de\214ned should be comp\ atible with the type of the initializer: a)82 175.9 R F2(double)2.983 E F0(constant)2.983 E 1.586(may initialize a)72 186.9 R F2(float)4.086 E F0(or)4.086 E F2(double)4.086 E F0 1.586 (identi\214er; a non-\215oating-point e)4.086 F 1.586 (xpression may initialize an)-.15 F F2(int)4.086 E F0(,)A F2(char)4.086 E F0 4.086(,o)C(r)-4.086 E(pointer)72 197.9 Q(.)-.55 E .252(An initiali\ zer for an array may contain a comma-separated list of compile-time e)82 213.3 R 2.752(xpressions. The)-.15 F .251(length of the ar)2.751 F(-)-.2 E .344(ray is tak)72 224.3 R .345 (en to be the maximum of the number of e)-.1 F .345 (xpressions in the list and the square-brack)-.15 F .345 (eted constant in the ar)-.1 F(-)-.2 E(ray')72 235.3 Q 2.713(sd)-.55 G (eclarator)-2.713 E 5.213(.T)-.55 G .212 (his constant may be missing, in which case 1 is used.)-5.213 F .212 (The e)5.212 F .212(xpressions initialize successi)-.15 F .512 -.15 (ve m)-.25 H(em-).15 E .14 (bers of the array starting at the origin \(subscript 0\) of the array) 72 246.3 R 5.14(.T)-.65 G .14(he acceptable e)-5.14 F .14 (xpressions for an array of type `)-.15 F(`ar)-.74 E(-)-.2 E .086 (ray of ...)72 257.3 R 1.566 -.74('' a)-.7 H .086 (re the same as those for type `).74 F(`...)-.74 E -.74('')-.7 G 5.086 (.A).74 G 2.586(sas)-5.086 G .085 (pecial case, a single string may be gi)-2.586 F -.15(ve)-.25 G 2.585 (na).15 G 2.585(st)-2.585 G .085(he initializer for an)-2.585 F (array of)72 268.3 Q F2(char)2.5 E F0 (s; in this case, the characters in the string are tak)A (en as the initializing v)-.1 E(alues.)-.25 E .895 (Structures can be initialized, b)82 283.7 R .896 (ut this operation is incompletely implemented and machine-dependent.) -.2 F(Basically)5.896 E .226(the structure is re)72 294.7 R -.05(ga)-.15 G .226(rded as a sequence of w).05 F .225 (ords and the initializers are placed into those w)-.1 F 2.725 (ords. Structure)-.1 F(initializa-)2.725 E .282(tion, using a comma-sep\ arated list in braces, is safe if all the members of the structure are \ inte)72 305.7 R .283(gers or pointers b)-.15 F .283(ut is)-.2 F (otherwise ill-advised.)72 316.7 Q(The initial v)82 332.1 Q(alue of an) -.25 E 2.5(ye)-.15 G(xternally-de\214ned object not e)-2.65 E (xplicitly initialized is guaranteed to be 0.)-.15 E/F3 10/Times-Bold@0 SF 2.5(11. Scope)72 359.6 R(rules)2.5 E F0 2.98(Ac)82 372.8 S .479(ompl\ ete C program need not all be compiled at the same time: the source te) -2.98 F .479(xt of the program may be k)-.15 F .479(ept in)-.1 F(se)72 383.8 Q -.15(ve)-.25 G .199 (ral \214les, and precompiled routines may be loaded from libraries.).15 F .2(Communication among the functions of a pro-)5.199 F (gram may be carried out both through e)72 394.8 Q (xplicit calls and through manipulation of e)-.15 E(xternal data.)-.15 E .99(Therefore, there are tw)82 410.2 R 3.49(ok)-.1 G .99 (inds of scope to consider: \214rst, what may be called the)-3.49 F F1 (le)3.489 E .989(xical scope)-.2 F F0 .989(of an identi\214er)3.489 F(,) -.4 E .145(which is essentially the re)72 421.2 R .146 (gion of a program during which it may be used without dra)-.15 F .146 (wing `)-.15 F .146(`unde\214ned identi\214er')-.74 F 2.646('d)-.74 G (i-)-2.646 E .98(agnostics; and second, the scope associated with e)72 432.2 R .98 (xternal identi\214ers, which is characterized by the rule that refer) -.15 F(-)-.2 E(ences to the same e)72 443.2 Q (xternal identi\214er are references to the same object.)-.15 E 2.5 (11.1 Le)72 465.2 R(xical scope)-.15 E 2.81(Ci)82 478.4 S 2.81(sn)-2.81 G .31(ot a block-structured language; this may f)-2.81 F .31 (airly be considered a defect.)-.1 F .31(The le)5.31 F .31 (xical scope of names declared)-.15 F 1.16(in e)72 489.4 R 1.16 (xternal de\214nitions e)-.15 F 1.159(xtends from their de\214nition th\ rough the end of the \214le in which the)-.15 F 3.659(ya)-.15 G(ppear) -3.659 E 6.159(.T)-.55 G 1.159(he le)-6.159 F(xical)-.15 E 1.284(scope \ of names declared at the head of functions \(either as formal parameter\ s or in the declarations heading the)72 500.4 R(statements constituting\ the function itself\) is the body of the function.)72 511.4 Q .795(It \ is an error to redeclare identi\214ers already declared in the current \ conte)82 526.8 R .795(xt, unless the ne)-.15 F 3.295(wd)-.25 G .795 (eclaration speci\214es)-3.295 F(the same type and storage class as alr\ eady possessed by the identi\214ers.)72 537.8 Q 2.5(11.2 Scope)72 559.8 R(of e)2.5 E(xternals)-.15 E 1.051 (If a function declares an identi\214er to be)82 573 R F2(extern)3.551 E F0 3.551(,t)C 1.051(hen some)-3.551 F 1.051 (where among the \214les or libraries constituting the)-.25 F .325 (complete program there must be an e)72 584 R .325 (xternal de\214nition for the identi\214er)-.15 F 5.324(.A)-.55 G .324 (ll functions in a gi)-5.324 F -.15(ve)-.25 G 2.824(np).15 G .324 (rogram which re-)-2.824 F .196(fer to the same e)72 595 R .197 (xternal identi\214er refer to the same object, so care must be tak)-.15 F .197(en that the type and e)-.1 F .197(xtent speci\214ed in)-.15 F(th\ e de\214nition are compatible with those speci\214ed by each function w\ hich references the data.)72 606 Q(In)82 621.4 Q/F4 8/Times-Roman@0 SF (PDP)3.121 E F0 .621(-11 C, it is e)B .621 (xplicitly permitted for \(compatible\) e)-.15 F .62 (xternal de\214nitions of the same identi\214er to be present in)-.15 F (se)72 632.4 Q -.15(ve)-.25 G .67 (ral of the separately-compiled pieces of a complete program, or e).15 F -.15(ve)-.25 G 3.171(nt).15 G .671 (wice within the same program \214le, with)-3.171 F .056(the important \ limitation that the identi\214er may be initialized in at most one of t\ he de\214nitions.)72 643.4 R .056(In other operating sys-)5.056 F .314 (tems, ho)72 654.4 R(we)-.25 E -.15(ve)-.25 G 1.114 -.4(r, t).15 H .314 (he compiler must kno).4 F 2.814(wi)-.25 G 2.814(nj)-2.814 G .315(ust w\ hich \214le the storage for the identi\214er is allocated, and in which\ \214le)-2.814 F .472(the identi\214er is merely being referred to.)72 665.4 R .472 (In the implementations of C for such systems, the appearance of the) 5.472 F F2(ex-)2.972 E(tern)72 676.4 Q F0 -.1(ke)6.38 G(yw)-.05 E .38 (ord before an e)-.1 F .381(xternal de\214nition indicates that storage\ for the identi\214ers being declared will be allocat-)-.15 F .406 (ed in another \214le.)72 687.4 R .406 (Thus in a multi-\214le program, an e)5.406 F .405 (xternal data de\214nition without the)-.15 F F2(extern)2.905 E F0 .405 (speci\214er must ap-)6.405 F .595(pear in e)72 698.4 R .595 (xactly one of the \214les.)-.15 F(An)5.596 E 3.096(yo)-.15 G .596 (ther \214les which wish to gi)-3.096 F .896 -.15(ve a)-.25 H 3.096(ne) .15 G .596(xternal de\214nition for the identi\214er must in-)-3.246 F (clude the)72 709.4 Q F2(extern)2.5 E F0(in the de\214nition.)6 E(The i\ denti\214er can be initialized only in the \214le where storage is allo\ cated.)5 E(In)82 724.8 Q F4(PDP)2.5 E F0 (-11 C none of this nonsense is necessary and the)A F2(extern)2.5 E F0 (speci\214er is ignored in e)6 E(xternal de\214nitions.)-.15 E EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)434.28 58 S(efer)-5 E 2.5(ence Manual)-.37 F 2.5(-1)2.5 G(7)-2.5 E/F2 10 /Times-Bold@0 SF 2.5(12. Compiler)72 97.8 R(contr)2.5 E(ol lines)-.18 E F0 .48(When a line of a C program be)82 111 R .48 (gins with the character)-.15 F/F3 10/Courier@0 SF(#)2.98 E F0 2.98(,i)C 2.98(ti)-2.98 G 2.98(si)-2.98 G .48 (nterpreted not by the compiler itself, b)-2.98 F .48(ut by a pre-)-.2 F 1.072(processor which is capable of replacing instances of gi)72 122 R -.15(ve)-.25 G 3.572(ni).15 G 1.072(denti\214ers with arbitrary tok) -3.572 F 1.072(en-strings and of inserting)-.1 F .489 (named \214les into the source program.)72 133 R .489 (In order to cause this preprocessor to be in)5.489 F -.2(vo)-.4 G -.1 (ke).2 G .488(d, it is necessary that the v).1 F(ery)-.15 E .044 (\214rst line of the program be)72 144 R .045(gin with)-.15 F F3(#)2.545 E F0 5.045(.S)C .045(ince null lines are ignored by the preprocessor) -5.045 F 2.545(,t)-.4 G .045(his line need contain no oth-)-2.545 F (er information.)72 155 Q 2.5(12.1 T)72 177 R(ok)-.8 E(en replacement) -.1 E 2.5(Ac)82 190.2 S(ompiler)-2.5 E(-control line of the form)-.2 E F3 6(#d)108 208.9 S(efine)-6 E F1(identi\214er tok)6 E(en-string)-.1 E F0 .356(\(note: no trailing semicolon\) causes the preprocessor to repl\ ace subsequent instances of the identi\214er with the gi)72 227.6 R -.15 (ve)-.25 G(n).15 E .622(string of tok)72 238.6 R .623(ens \(e)-.1 F .623 (xcept within compiler control lines\).)-.15 F .623(The replacement tok) 5.623 F .623(en-string has comments remo)-.1 F -.15(ve)-.15 G 3.123(df) .15 G(rom)-3.123 E .032(it, and it is surrounded with blanks.)72 249.6 R .032(No rescanning of the replacement string is attempted.)5.032 F .032 (This f)5.032 F .032(acility is most v)-.1 F(alu-)-.25 E (able for de\214nition of `)72 260.6 Q(`manifest constants')-.74 E (', as in)-.74 E F3 6(#d)108 279.3 S(efine tabsize 100)-6 E 1.666(...) 108 290.3 S(int table[tabsize];)108 301.3 Q F0 2.5(12.2 File)72 331 R (inclusion)2.5 E(Lar)82 344.2 Q .215(ge C programs often contain man) -.18 F 2.715(ye)-.15 G .216(xternal data de\214nitions.)-2.865 F .216 (Since the le)5.216 F .216(xical scope of e)-.15 F .216 (xternal de\214nitions e)-.15 F(x-)-.15 E .678(tends to the end of the \ program \214le, it is good practice to put all the e)72 355.2 R .677 (xternal de\214nitions for data at the start of the)-.15 F 1.075(progra\ m \214le, so that the functions de\214ned within the \214le need not re\ peat tedious and error)72 366.2 R 1.076(-prone declarations for)-.2 F .977(each e)72 377.2 R .977(xternal identi\214er the)-.15 F 3.477(yu) -.15 G 3.476(se. It)-3.477 F .976(is also useful to put a hea)3.476 F .976(vily used structure de\214nition at the start and use its)-.2 F .801(structure tag to declare the)72 388.2 R F3(auto)3.301 E F0 .801 (pointers to the structure used within functions.)3.301 F 2.401 -.8 (To f)5.801 H .802(urther e).8 F .802(xploit this technique)-.15 F (when a lar)72 399.2 Q(ge C program consists of se)-.18 E -.15(ve)-.25 G (ral \214les, a compiler control line of the form).15 E F3 6(#i)108 417.9 S(nclude ")-6 E F1(\214lename)A F3(")1.666 E F0(results in the re\ placement of that line by the entire contents of the \214le)72 436.6 Q F1(\214lename)2.5 E F0(.)A F2 2.5(13. Implicit)82 468.5 R(declarations) 2.5 E F0 .275(It is not al)82 481.7 R -.1(wa)-.1 G .274(ys necessary to\ specify both the storage class and the type of identi\214ers in a decl\ aration.).1 F(Sometimes)5.274 E 1.276 (the storage class is supplied by the conte)72 492.7 R 1.276(xt: in e) -.15 F 1.277 (xternal de\214nitions, and in declarations of formal parameters and) -.15 F .045(structure members.)72 503.7 R .045 (In a declaration inside a function, if a storage class b)5.045 F .044 (ut no type is gi)-.2 F -.15(ve)-.25 G .044 (n, the identi\214er is assumed).15 F .036(to be)72 514.7 R F3(int)2.536 E F0 2.536(;i)C 2.536(fat)-2.536 G .036(ype b)-2.536 F .037 (ut no storage class is indicated, the identi\214er is assumed to be)-.2 F F3(auto)2.537 E F0 5.037(.A)C 2.537(ne)-5.037 G .037 (xception to the latter)-2.687 F 1.22(rule is made for functions, since) 72 525.7 R F3(auto)3.72 E F0 1.219(functions are meaningless \(C being \ incapable of compiling code into the)3.72 F 2.5(stack\). If)72 536.7 R (the type of an identi\214er is `)2.5 E(`function returning ...)-.74 E -.74('')-.7 G 2.5(,i).74 G 2.5(ti)-2.5 G 2.5(si)-2.5 G (mplicitly declared to be)-2.5 E F3(extern)2.5 E F0(.)A .721(In an e)82 552.1 R .721(xpression, an identi\214er follo)-.15 F .722(wed by)-.25 F F3(\()3.222 E F0 .722(and not currently declared is conte)3.222 F .722 (xtually declared to be `)-.15 F(`function)-.74 E(returning)72 563.1 Q F3(int)2.5 E F0 -.74('')C(.).74 E 1.533 (Unde\214ned identi\214ers not follo)82 578.5 R 1.533(wed by)-.25 F F3 (\()4.032 E F0 1.532(are assumed to be labels which will be de\214ned l\ ater in the function.)4.032 F .853(\(Since a label is not an lv)72 589.5 R .853(alue, this accounts for the `)-.25 F(`Lv)-.74 E .853 (alue required')-.25 F 3.354('e)-.74 G .854 (rror message sometimes noticed when an)-3.354 F (undeclared identi\214er is used.\))72 600.5 Q(Naturally)5 E 2.5(,a)-.65 G(ppearance of an identi\214er as a label declares it as such.)-2.5 E -.15(Fo)82 615.9 S 2.8(rs).15 G .3(ome purposes it is best to consider \ formal parameters as belonging to their o)-2.8 F .299(wn storage class.) -.25 F .299(In practice, C)5.299 F .58(treats parameters as if the)72 626.9 R 3.08(yw)-.15 G .58(ere automatic \(e)-3.08 F .58 (xcept that, as mentioned abo)-.15 F -.15(ve)-.15 G 3.08(,f).15 G .58 (ormal parameter arrays and)-3.08 F F3(float)3.08 E F0(s)A (are treated specially\).)72 637.9 Q F2 2.5(14. T)72 665.4 R(ypes r)-.74 E -.15(ev)-.18 G(isited).15 E F0(This section summarizes the operations\ which can be performed on objects of certain types.)82 678.6 Q EP %%Page: 18 18 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-1)2.5 G(8)-2.5 E F0 2.5 (14.1 Structures)72 97.8 R .006(There are only tw)82 111 R 2.506(ot)-.1 G .005(hings that can be done with a structure: pick out one of its mem\ bers \(by means of the)-2.506 F/F2 10/Courier@0 SF(.)4.171 E F0(or)4.171 E/F3 10/Symbol SF(-)2.505 E F2(>)A F0 .591(operators\); or tak)72 122 R 3.091(ei)-.1 G .591(ts address \(by unary)-3.091 F F2(&)3.091 E F0 3.091 (\). Other)B .592 (operations, such as assigning from or to it or passing it as a pa-) 3.091 F(rameter)72 133 Q 2.726(,d)-.4 G(ra)-2.726 E 2.726(wa)-.15 G 2.726(ne)-2.726 G .226(rror message.)-2.726 F .225 (In the future, it is e)5.226 F .225(xpected that these operations, b) -.15 F .225(ut not necessarily others, will be)-.2 F(allo)72 144 Q(wed.) -.25 E 2.5(14.2 Functions)72 166 R .577(There are only tw)82 179.2 R 3.077(ot)-.1 G .577 (hings that can be done with a function: call it, or tak)-3.077 F 3.078 (ei)-.1 G .578(ts address.)-3.078 F .578(If the name of a function)5.578 F .383(appears in an e)72 190.2 R .383(xpression not in the function-na\ me position of a call, a pointer to the function is generated.)-.15 F .383(Thus, to)5.383 F(pass one function to another)72 201.2 Q 2.5(,o)-.4 G(ne might say)-2.5 E F2(int f\()108 219.9 Q(\);)3.332 E(...)108 230.9 Q -4.334(g\( f \);)108 241.9 R F0(Then the de\214nition of)72 260.6 Q F1 (g)2.5 E F0(might read)2.5 E F2 1.666(g\(f)108 279.3 S -4.334(uncp \)) -1.666 F(int \()108 290.3 Q F0(*)2.2 I F2 -4.334(funcp\) \()-2.2 J(\);) 3.332 E({)108 301.3 Q 1.666(...)144 312.3 S(\()144 323.3 Q F0(*)2.2 I F2 -4.334(funcp\) \()-2.2 J(\);)3.332 E 1.666(...)144 334.3 S(})108 345.3 Q F0(Notice that)72 364 Q F1(f)2.5 E F0 -.1(wa)2.5 G 2.5(sd).1 G (eclared e)-2.5 E (xplicitly in the calling routine since its \214rst appearance w)-.15 E (as not follo)-.1 E(wed by)-.25 E F2(\()2.5 E F0(.)1.666 E 2.5 (14.3 Arrays,)72 386 R(pointers, and subscripting)2.5 E(Ev)82 399.2 Q .16(ery time an identi\214er of array type appears in an e)-.15 F .161 (xpression, it is con)-.15 F -.15(ve)-.4 G .161 (rted into a pointer to the \214rst member of).15 F .362(the array)72 410.2 R 5.362(.B)-.65 G .362(ecause of this con)-5.362 F -.15(ve)-.4 G .362(rsion, arrays are not lv).15 F 2.861(alues. By)-.25 F .361 (de\214nition, the subscript operator)2.861 F F2 1.666([])2.861 G F0 .361(is interpreted)1.195 F .179(in such a w)72 421.2 R .179(ay that `) -.1 F(`E1[E2]')-.74 E 2.679('i)-.74 G 2.68(si)-2.679 G .18 (dentical to `)-2.68 F(`)-.74 E(*)2.2 I 1.666(\(\(E)-2.2 K -.834 (1\) + \(E2 \) \)')-1.666 F 2.68('. Because)-.74 F .18(of the con)2.68 F -.15(ve)-.4 G .18(rsion rules which apply to).15 F F2(+)2.68 E F0 2.68 (,i)C(f)-2.68 E .544(E1 is an array and E2 an inte)72 432.2 R(ger)-.15 E 3.044(,t)-.4 G .544(hen E1[E2] refers to the E2-th member of E1.)-3.044 F .544(Therefore, despite its asymmetric)5.544 F (appearance, subscripting is a commutati)72 443.2 Q .3 -.15(ve o)-.25 H (peration.).15 E 3.919(Ac)82 458.6 S 1.419(onsistent rule is follo) -3.919 F 1.419(wed in the case of multi-dimensional arrays.)-.25 F 1.419 (If E is an)6.419 F F1(n)3.919 E F0 1.42(-dimensional array of rank) 1.666 F F1(i)72 469.6 Q F3<b4>1.666 E F1(j)1.666 E F3<b4>1.666 E F1 1.666(...)1.666 G F3<b4>A F1(k,)A F0 1.235(then E appearing in an e) 3.735 F 1.235(xpression is con)-.15 F -.15(ve)-.4 G 1.234 (rted to a pointer to an \().15 F F1(n)A F3(-)A F0 1.234 (1\)-dimensional array with rank)B F1(j)72 480.6 Q F3<b4>1.666 E F1 1.666(...)1.666 G F3<b4>A F1(k.)A F0 .262(If the)5.262 F(*)2.762 2.2 M (operator)2.762 -2.2 M 2.762(,e)-.4 G .262(ither e)-2.762 F .262(xplici\ tly or implicitly as a result of subscripting, is applied to this point\ er)-.15 F 2.762(,t)-.4 G .262(he re-)-2.762 F(sult is the pointed-to \() 72 491.6 Q F1(n)A F3(-)A F0(1\)-dimensional array)A 2.5(,w)-.65 G (hich itself is immediately con)-2.5 E -.15(ve)-.4 G (rted into a pointer).15 E(.)-.55 E -.15(Fo)82 507 S 2.5(re).15 G (xample, consider)-2.65 E F2(int x[3][5];)108 525.7 Q F0(Here)72 544.4 Q F1(x)2.865 E F0 .365(is a 3)2.865 F F3<b4>A F0 2.865(5a)C .365 (rray of inte)-2.865 F 2.865(gers. When)-.15 F F1(x)2.865 E F0 .365 (appears in an e)2.865 F .364(xpression, it is con)-.15 F -.15(ve)-.4 G .364(rted to a pointer to \(the \214rst of three\)).15 F .592 (5-membered arrays of inte)72 555.4 R 3.092(gers. In)-.15 F .592(the e) 3.092 F .593(xpression `)-.15 F -.834(`x[ i ]')-.74 F .593 (', which is equi)-.74 F -.25(va)-.25 G .593(lent to `).25 F(`)-.74 E(*) 2.2 I(\(x+i\)')-2.2 I(',)-.74 E F1(x)3.093 E F0 .593(is \214rst con) 3.093 F -.15(ve)-.4 G .593(rted to a).15 F 1(pointer as described; then) 72 566.4 R F1(i)3.5 E F0 1(is con)3.5 F -.15(ve)-.4 G 1 (rted to the type of).15 F F1(x)3.5 E F0 3.5(,w)C 1(hich in)-3.5 F -.2 (vo)-.4 G(lv).2 E 1(es multiplying)-.15 F F1(i)3.5 E F0 1 (by the length the object to)3.5 F .719 (which the pointer points, namely 5 inte)72 577.4 R .719(ger objects.) -.15 F .72 (The results are added and indirection applied to yield an array)5.719 F 1.037(\(of 5 inte)72 588.4 R 1.037(gers\) which in turn is con)-.15 F -.15(ve)-.4 G 1.037(rted to a pointer to the \214rst of the inte).15 F 3.537(gers. If)-.15 F 1.036(there is another subscript the)3.537 F (same ar)72 599.4 Q(gument applies ag)-.18 E (ain; this time the result is an inte)-.05 E(ger)-.15 E(.)-.55 E .084 (It follo)82 614.8 R .084 (ws from all this that arrays in C are stored ro)-.25 F .085 (w-wise \(last subscript v)-.25 F .085(aries f)-.25 F .085 (astest\) and that the \214rst subscript)-.1 F .596(in the declaration \ helps determine the amount of storage consumed by an array b)72 625.8 R .596(ut plays no other part in subscript)-.2 F(calculations.)72 636.8 Q 2.5(14.4 Labels)72 658.8 R .093(Labels do not ha)82 672 R .393 -.15 (ve a t)-.2 H .093(ype of their o).15 F .093(wn; the)-.25 F 2.593(ya) -.15 G .093(re treated as ha)-2.593 F .093(ving type `)-.2 F .094 (`array of)-.74 F F2(int)2.594 E F0 -.74('')C 5.094(.L).74 G .094 (abel v)-5.094 F .094(ariables should be)-.25 F .522(declared `)72 683 R .522(`pointer to)-.74 F F2(int)3.022 E F0 -.74('')C 3.022(;b).74 G .522 (efore e)-3.022 F -.15(xe)-.15 G .522(cution of a).15 F F2(goto)3.022 E F0 .522(referring to the v)3.022 F .521(ariable, a label \(or an e)-.25 F .521(xpression deri)-.15 F(ving)-.25 E (from a label\) should be assigned to the v)72 694 Q(ariable.)-.25 E (Label v)82 709.4 Q(ariables are a bad idea in general; the)-.25 E F2 (switch)2.5 E F0(statement mak)2.5 E(es them almost al)-.1 E -.1(wa)-.1 G(ys unnecessary).1 E(.)-.65 E EP %%Page: 19 19 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)434.28 58 S(efer)-5 E 2.5(ence Manual)-.37 F 2.5(-1)2.5 G(9)-2.5 E/F2 10 /Times-Bold@0 SF 2.5(15. Constant)72 97.8 R(expr)2.5 E(essions)-.18 E F0 .699(In se)82 111 R -.15(ve)-.25 G .699(ral places C requires e).15 F .699(xpressions which e)-.15 F -.25(va)-.25 G .699 (luate to a constant: after).25 F/F3 10/Courier@0 SF(case,)3.2 E F0 .7 (as array bounds, and in ini-)6.7 F 2.928(tializers. In)72 122 R .428 (the \214rst tw)2.928 F 2.928(oc)-.1 G .428(ases, the e)-2.928 F .428 (xpression can in)-.15 F -.2(vo)-.4 G(lv).2 E 2.927(eo)-.15 G .427 (nly inte)-2.927 F .427(ger constants, character constants, and)-.15 F F3(sizeof)2.927 E F0 -.15(ex)72 133 S (pressions, possibly connected by the binary operators).15 E F1(+)108 151.7 Q/F4 10/Symbol SF(-)7.5 E F0(*)7.5 2.2 M .4 LW 190.13 144.95 190.13 151.7 DL F1 8.666 7.5(/%& <)147.74 151.7 T 7.5(<>)-7.5 G(>)-7.5 E F0(or by the unary operators)72 170.4 Q F4(-)108 189.1 Q/F5 14 /Times-Italic@0 SF(~)7.5 5.5 M F0 -.15(Pa)72 207.8 S (rentheses can be used for grouping, b).15 E(ut not for function calls.) -.2 E 2.87(Ab)82 223.2 S .37 (it more latitude is permitted for initializers; besides constant e) -2.87 F .37(xpressions as discussed abo)-.15 F -.15(ve)-.15 G 2.87(,o) .15 G .37(ne can also ap-)-2.87 F .034(ply the unary)72 234.2 R F3(&) 2.534 E F0 .034(operator to e)2.534 F .034(xternal scalars, and to e) -.15 F .034(xternal arrays subscripted with a constant e)-.15 F 2.533 (xpression. The)-.15 F(unary)2.533 E F3(&)72 245.2 Q F0 1.129 (can also be applied implicitly by appearance of unsubscripted e)3.628 F 1.129(xternal arrays.)-.15 F 1.129(The rule here is that initializers) 6.129 F(must e)72 256.2 Q -.25(va)-.25 G (luate either to a constant or to the address of an e).25 E (xternal identi\214er plus or minus a constant.)-.15 E F2 2.5 (16. Examples.)72 283.7 R F0 .426(These e)82 296.9 R .426(xamples are i\ ntended to illustrate some typical C constructions as well as a service\ able style of writing C)-.15 F(programs.)72 307.9 Q 2.5(16.1 Inner)72 329.9 R(product)2.5 E (This function returns the inner product of its array ar)82 343.1 Q (guments.)-.18 E F3(double inner)108 361.8 Q 1.666(\(v)1.666 G(1, v2, n) -1.666 E(\))1.666 E(double v1)108 372.8 Q 3.332([])1.666 G 6(,v)-1.666 G -6 1.666(2[ ];)-6 H({)108 383.8 Q(double sum)144 394.8 Q(;)1.666 E (int i)144 405.8 Q(;)1.666 E(sum = 0.0)144 416.8 Q(;)1.666 E 1.666 (for \()144 427.8 R -4.334(i=0 ;)1.666 F -4.334(i<n ;)6 F(i)6 E F0(++)A F3(\))1.666 E(sum)180 438.8 Q F0(=+)6 E F3 -4.334(v1 [ i ])6 F F0(*)6 2.2 M F3 -4.334(v2 [ i ] ;)6 -2.2 N -4.334(return \( sum \) ;)144 449.8 R(})108 460.8 Q F0 .47(The follo)72 479.5 R .47(wing v)-.25 F .47 (ersion is some)-.15 F .47(what more ef)-.25 F .47(\214cient, b)-.25 F .47(ut perhaps a little less clear)-.2 F 5.47(.I)-.55 G 2.97(tu)-5.47 G .47(ses the f)-2.97 F .47(acts that parameter ar)-.1 F(-)-.2 E (rays are really pointers, and that all parameters are passed by v)72 490.5 Q(alue.)-.25 E F3(double inner)108 509.2 Q 1.666(\(v)1.666 G (1, v2, n)-1.666 E(\))1.666 E(double)108 520.2 Q F0(*)6 2.2 M F3(v1,) -2.2 I F0(*)6 2.2 M F3 -4.334(v2 ;)-2.2 J({)108 531.2 Q(double sum)144 542.2 Q(;)1.666 E(sum = 0.0)144 553.2 Q(;)1.666 E -4.334(while \( n)144 564.2 R F4(--)A F3(\))1.666 E(sum)180 575.2 Q F0(=+)6 E(*)6 2.2 M F3(v1) -2.2 I F0(++)A 12(**)12 2.2 O F3(v2)-12 -2.2 M F0(++)A F3(;)1.666 E -4.334(return \( sum \) ;)144 586.2 R(})108 597.2 Q F0 .145 (The declarations for the parameters are really e)72 615.9 R .144 (xactly the same as in the last e)-.15 F 2.644(xample. In)-.15 F .144 (the \214rst case array declara-)2.644 F .356(tions `)72 626.9 R -.834 1.666(`[ ]')-.74 H 2.856('w)-2.406 G .356(ere gi)-2.856 F -.15(ve)-.25 G 2.857(nt).15 G 2.857(oe)-2.857 G .357(mphasize that the parameters w) -2.857 F .357 (ould be referred to as arrays; in the second, pointer dec-)-.1 F (larations were gi)72 637.9 Q -.15(ve)-.25 G 2.5(nb).15 G (ecause the indirection operator and ++ were used.)-2.5 E 2.5(16.2 T)72 659.9 R(ree and character processing)-.35 E .065 (Here is a complete C program)82 673.1 R 1.666(\(c)4.23 G .064 (ourtesy of R. Haight)-1.666 F 4.23(\)w)1.666 G .064 (hich reads a document and produces an alphabetized list)-4.23 F .721 (of w)72 684.1 R .721 (ords found therein together with the number of occurrences of each w) -.1 F 3.221(ord. The)-.1 F .721(method k)3.221 F .721 (eeps a binary tree of)-.1 F -.1(wo)72 695.1 S 1.115 (rds such that the left descendant tree for each w).1 F 1.114 (ord has all the w)-.1 F 1.114(ords le)-.1 F 1.114 (xicographically smaller than the gi)-.15 F -.15(ve)-.25 G(n).15 E -.1 (wo)72 706.1 S(rd, and the right descendant has all the lar).1 E(ger w) -.18 E 2.5(ords. Both)-.1 F (the insertion and the printing routine are recursi)2.5 E -.15(ve)-.25 G (.).15 E 1.352(The program calls the library routines)82 721.5 R F1 -.1 (ge)3.852 G(tc).1 E(har)-.15 E F0 1.352(to pick up characters and)3.852 F F1 -.2(ex)3.853 G(it).2 E F0 1.353(to terminate e)3.853 F -.15(xe)-.15 G(cution.).15 E F1(Printf)6.353 E F0(is)3.853 E EP %%Page: 20 20 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-2)2.5 G(0)-2.5 E F0 (called to print the results according to a format string.)72 97.8 Q 2.5 (Av)5 G(ersion of)-2.65 E F1(printf)2.5 E F0(is gi)2.5 E -.15(ve)-.25 G 2.5(nb).15 G(elo)-2.5 E 4.166(w\()-.25 G -.834(\24716.3 \) .)-2.5 F .163 (Because all the e)82 113.2 R .162 (xternal de\214nitions for data are gi)-.15 F -.15(ve)-.25 G 2.662(na) .15 G 2.662(tt)-2.662 G .162(he top, no)-2.662 F/F2 10/Courier@0 SF (extern)2.662 E F0 .162(declarations are necessary within the)2.662 F 3.44(functions. T)72 124.2 R 3.44(os)-.8 G .94 (tay within the rules, a type declaration is gi)-3.44 F -.15(ve)-.25 G 3.44(nf).15 G .94(or each non-inte)-3.44 F .94 (ger function when the function is)-.15 F .09 (used before it is de\214ned.)72 135.2 R(Ho)5.09 E(we)-.25 E -.15(ve) -.25 G .89 -.4(r, s).15 H .09(ince all such functions return pointers w\ hich are simply assigned to other point-).4 F .147 (ers, no actual harm w)72 146.2 R .148(ould result from lea)-.1 F .148 (ving out the declarations; the supposedly)-.2 F F2(int)2.648 E F0 .148 (function v)2.648 F .148(alues w)-.25 F .148(ould be as-)-.1 F (signed without error or complaint.)72 157.2 Q F2 6(#d)108 175.9 S (efine nwords 100)-6 E(/)102 E F0(*)2.2 I F2(number of different words)6 -2.2 M F0(*)6 2.2 M F2(/)-2.2 I 6(#d)108 186.9 S(efine wsize 20)-6 E(/) 114 E F0(*)2.2 I F2(max chars per word)6 -2.2 M F0(*)6 2.2 M F2(/)-2.2 I (struct tnode {)108 197.9 Q(/)132 E F0(*)2.2 I F2(the basic structure)6 -2.2 M F0(*)6 2.2 M F2(/)-2.2 I(char tword)144 208.9 Q 1.666([w)1.666 G -4.334(size ] ;)-1.666 F(int count)144 219.9 Q(;)1.666 E(struct tnode) 144 230.9 Q F0(*)6 2.2 M F2 -4.334(left ;)-2.2 J(struct tnode)144 241.9 Q F0(*)6 2.2 M F2 -4.334(right ;)-2.2 J 1.666(};)108 252.9 S (struct tnode space)108 271.6 Q 1.666([n)1.666 G -4.334(words ] ;)-1.666 F(/)47.336 E F0(*)2.2 I F2(the words themselves)6 -2.2 M F0(*)6 2.2 M F2 (/)-2.2 I(int nnodes nwords)108 282.6 Q 106.334(;/)1.666 G F0(*)-106.334 2.2 M F2(number of remaining slots)6 -2.2 M F0(*)6 2.2 M F2(/)-2.2 I (struct tnode)108 293.6 Q F0(*)6 2.2 M F2(spacep space)-2.2 I 53.334(;/) 1.666 G F0(*)-53.334 2.2 M F2(next available slot)6 -2.2 M F0(*)6 2.2 M F2(/)-2.2 I(struct tnode)108 304.6 Q F0(*)6 2.2 M F2 -4.334(freep ;)-2.2 J(/)95.334 E F0(*)2.2 I F2(free list)6 -2.2 M F0(*)6 2.2 M F2(/)-2.2 I (/)108 315.6 Q F0(*)2.2 I(*)110.5 328.8 Q F2 (The main routine reads words until end-of-file)6 -2.2 M 1.666<28b4> 7.666 G(\\0\264 returned from "getchar")-1.666 E(\))1.666 E F0(*)110.5 339.8 Q F2("tree" is called to sort each word into the tree.)6 -2.2 M F0 (*)110.5 350.8 Q F2(/)-2.2 I -4.334(main \()108 359.6 R(\))3.332 E({)108 370.6 Q(struct tnode)144 381.6 Q F0(*)6 2.2 M F2(top,)-2.2 I F0(*)6 2.2 M F2 -4.334(tree \()-2.2 J 1.666(\);)3.332 G(char c, word)144 392.6 Q 1.666([w)1.666 G -4.334(size ] ;)-1.666 F(int i)144 403.6 Q(;)1.666 E 6 (i=t)144 420.1 S(op = 0)-6 E(;)1.666 E 1.666(while \()144 431.1 R -4.334 (c=getchar \()1.666 F 3.332(\)\))3.332 G 1.666(if \()180 442.1 R .4 LW 310.332 435.35 310.332 442.1 DL 312.332 435.35 312.332 442.1 DL (\264a\264<=c && c<=\264z\264)207.332 442.1 Q (\264A\264<=c && c <=\264Z\264)16 E 7.666(\){)1.666 G 1.666(if \()216 453.1 R(i<wsize)1.666 E/F3 10/Symbol SF(-)A F2 1.666(1\))C -4.334 (word [ i)252 464.1 R F0(++)A F2 7.666(]=)1.666 G 1.666(c;)-1.666 G 6 (}e)180 475.1 S(lse)-6 E 1.666(if \()216 486.1 R -1.666 1.666(i\) {) 1.666 H -4.334(word [ i)252 497.1 R F0(++)A F2 7.666(]=)1.666 G -4.334 <b45c30b4203b>-1.666 F(top = tree)252 508.1 Q 1.666(\(t)1.666 G (op, word)-1.666 E 1.666(\);)1.666 G 6(i=0)252 519.1 S(;)-4.334 E(})216 530.1 Q -4.334(tprint \( top \) ;)144 541.1 R(})108 552.1 Q(/)108 563.1 Q F0(*)2.2 I(*)110.5 576.3 Q F2(The central routine.)6 -2.2 M (If the subtree pointer is null, allocate a new node for it.)12 E F0(*) 110.5 587.3 Q F2(If the new word and the node\264s word are the same, i\ ncrease the node\264s count.)6 -2.2 M F0(*)110.5 598.3 Q F2(Otherwise, \ recursively sort the word into the left or right subtree according)6 -2.2 M F0(*)110.5 609.3 Q F2 (as the argument word is less or greater than the node\264s word.)6 -2.2 M F0(*)110.5 620.3 Q F2(/)-2.2 I(struct tnode)108 629.1 Q F0(*)6 2.2 M F2 -4.334(tree \( p,)-2.2 J -4.334(word \))6 F(struct tnode)108 640.1 Q F0(*)6 2.2 M F2 1.666(p;)-2.2 K(char word)108 651.1 Q 3.332([])1.666 G (;)-1.666 E({)108 662.1 Q(struct tnode)144 673.1 Q F0(*)6 2.2 M F2 -4.334(alloc \()-2.2 J 1.666(\);)3.332 G(int cond)144 684.1 Q(;)1.666 E (/)144 700.6 Q F0(*)2.2 I F2(Is pointer null?)6 -2.2 M F0(*)6 2.2 M F2 (/)-2.2 I 1.666(if \()144 711.6 R(p)1.666 E F0(==)A F2 -1.666 1.666 (0\) {)D 6(p=a)180 722.6 S -4.334(lloc \()-6 F 1.666(\);)3.332 G EP %%Page: 21 21 %%BeginPageSetup BP %%EndPageSetup /F0 10/Courier@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)434.28 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-2)2.5 G(1)-2.5 E F0 -4.334 (copy \( word,)180 97.8 R(p)6 E/F2 10/Symbol SF(-)A F0 -4.334 (>tword \) ;)B(p)180 108.8 Q F2(-)A F0(>count = 1)A(;)1.666 E(p)180 119.8 Q F2(-)A F0(>right = p)A F2(-)A F0(>left = 0)A(;)1.666 E -4.334 (return \( p \) ;)180 130.8 R(})144 141.8 Q(/)144 152.8 Q/F3 10 /Times-Roman@0 SF(*)2.2 I F0(Is word repeated?)6 -2.2 M F3(*)6 2.2 M F0 (/)-2.2 I 1.666(if \()144 163.8 R 1.666(\(c)3.332 G -4.334 (ond=compar \( p)-1.666 F F2(-)A F0(>tword, word)A 3.332(\)\))1.666 G F3 (==)4.334 E F0 -1.666 1.666(0\) {)6 H(p)180 174.8 Q F2(-)A F0(>count)A F3(++)A F0(;)1.666 E -4.334(return \( p \) ;)180 185.8 R(})144 196.8 Q (/)144 207.8 Q F3(*)2.2 I F0(Sort into left or right)6 -2.2 M F3(*)6 2.2 M F0(/)-2.2 I 1.666(if \()144 218.8 R -4.334(cond<0 \))1.666 F(p)180 229.8 Q F2(-)A F0(>left = tree)A 1.666(\(p)1.666 G F2(-)-1.666 E F0 (>left, word)A 1.666(\);)1.666 G(else)144 240.8 Q(p)180 251.8 Q F2(-)A F0(>right = tree)A 1.666(\(p)1.666 G F2(-)-1.666 E F0(>right, word)A 1.666(\);)1.666 G -4.334(return \( p \) ;)144 262.8 R(})108 273.8 Q(/) 108 284.8 Q F3(*)2.2 I(*)110.5 298 Q F0(Print the tree by printing the \ left subtree, the given node, and the right subtree.)6 -2.2 M F3(*)110.5 309 Q F0(/)-2.2 I -4.334(tprint \( p \))108 317.8 R(struct tnode)108 328.8 Q F3(*)6 2.2 M F0 1.666(p;)-2.2 K({)108 339.8 Q 1.666(while \()144 350.8 R -1.666 1.666(p\) {)1.666 H -4.334(tprint \( p)180 361.8 R F2(-)A F0 -4.334(>left \) ;)B -4.334(printf \( "%d:)180 372.8 R(%s\\n", p)12 E F2(-)A F0(>count, p)A F2(-)A F0 -4.334(>tword \) ;)B 6(p=p)180 383.8 S F2(-)-6 E F0 -4.334(>right ;)B(})144 394.8 Q(})108 405.8 Q(/)108 416.8 Q F3(*)2.2 I(*)110.5 430 Q F0(String comparison: return number)6 -2.2 M 1.666(\(>)7.666 G 6(,=)-1.666 G 6(,<)-6 G 7.666(\)0)-4.334 G F3(*)110.5 441 Q F0(according as s1)6 -2.2 M 1.666(\(>)7.666 G 6(,=)-1.666 G 6(,<) -6 G 7.666(\)s)-4.334 G(2.)-7.666 E F3(*)110.5 452 Q F0(/)-2.2 I -4.334 (compar \( s1,)108 460.8 R -4.334(s2 \))6 F(char)108 471.8 Q F3(*)6 2.2 M F0(s1,)-2.2 I F3(*)6 2.2 M F0 -4.334(s2 ;)-2.2 J({)108 482.8 Q (int c1, c2)144 493.8 Q(;)1.666 E -4.334(while \()144 510.3 R 1.666(\(c) 3.332 G 6(1=)-1.666 G F3(*)2.2 I F0(s1)-2.2 I F3(++)A F0(\))1.666 E F3 (==)7.666 E F0 1.666(\(c)7.666 G 6(2=)-1.666 G F3(*)2.2 I F0(s2)-2.2 I F3(++)A F0 3.332(\)\))1.666 G 1.666(if \()180 521.3 R(c1)1.666 E F3(==)A F0 -4.334<b45c30b42029>B -4.334(return \( 0 \) ;)216 532.3 R -4.334 (return \( c2)144 543.3 R F2(-)A F0 -4.334(c1 \) ;)B(})108 554.3 Q(/)108 565.3 Q F3(*)2.2 I(*)110.5 578.5 Q F0 (String copy: copy s1 into s2 until the null)6 -2.2 M F3(*)110.5 589.5 Q F0(character appears.)6 -2.2 M F3(*)110.5 600.5 Q F0(/)-2.2 I -4.334 (copy \( s1,)108 609.3 R -4.334(s2 \))6 F(char)108 620.3 Q F3(*)6 2.2 M F0(s1,)-2.2 I F3(*)6 2.2 M F0 -4.334(s2 ;)-2.2 J({)108 631.3 Q -4.334 (while \()144 642.3 R F3(*)1.666 2.2 M F0(s2)-2.2 I F3(++)A F0(=)6 E F3 (*)6 2.2 M F0(s1)-2.2 I F3(++)A F0 1.666(\);)1.666 G(})108 653.3 Q(/)108 664.3 Q F3(*)2.2 I(*)110.5 677.5 Q F0 (Node allocation: return pointer to a free node.)6 -2.2 M F3(*)110.5 688.5 Q F0(Bomb out when all are gone.)6 -2.2 M(Just for fun, there)12 E F3(*)110.5 699.5 Q F0(is a mechanism for using nodes that have been)6 -2.2 M F3(*)110.5 710.5 Q F0 (freed, even though no one here calls "free.")6 -2.2 M F3(*)110.5 721.5 Q F0(/)-2.2 I(struct tnode)108 730.3 Q F3(*)6 2.2 M F0 -4.334(alloc \() -2.2 J(\))3.332 E EP %%Page: 22 22 %%BeginPageSetup BP %%EndPageSetup /F0 10/Courier@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S(efer) -5 E 2.5(ence Manual)-.37 F 2.5(-2)2.5 G(2)-2.5 E F0({)108 97.8 Q (struct tnode)144 108.8 Q/F2 10/Times-Roman@0 SF(*)6 2.2 M F0 1.666(t;) -2.2 K 1.666(if \()144 125.3 R -4.334(freep \))1.666 F({)7.666 E 6(t=f) 180 136.3 S -4.334(reep ;)-6 F(freep = freep)180 147.3 Q/F3 10/Symbol SF (-)A F0 -4.334(>left ;)B -4.334(return \( t \) ;)180 158.3 R(})144 169.3 Q 1.666(if \()144 180.3 R F3(--)1.666 E F0(nnodes < 0)A 7.666(\){)1.666 G -4.334(printf \( "Out)180 191.3 R(of space\\n")6 E 1.666(\);)1.666 G -4.334(exit \()180 202.3 R 1.666(\);)3.332 G(})144 213.3 Q -4.334 (return \( spacep)144 224.3 R F2(++)A F0 1.666(\);)1.666 G(})108 235.3 Q (/)108 246.3 Q F2(*)2.2 I(*)110.5 259.5 Q F0 (The uncalled routine which puts a node on the free list.)6 -2.2 M F2(*) 110.5 270.5 Q F0(/)-2.2 I -4.334(free \( p \))108 279.3 R(struct tnode) 108 290.3 Q F2(*)6 2.2 M F0 1.666(p;)-2.2 K({)108 301.3 Q(p)144 312.3 Q F3(-)A F0(>left = freep)A(;)1.666 E(freep = p)144 323.3 Q(;)1.666 E(}) 108 334.3 Q F2 2.342 -.8(To i)72 353 T .742(llustrate a slightly dif).8 F .741(ferent technique of handling the same problem, we will repeat fr\ agments of this e)-.25 F(xample)-.15 E .453 (with the tree nodes treated e)72 364 R .453 (xplicitly as members of an array)-.15 F 5.453(.T)-.65 G .453 (he fundamental change is to deal with the subscript)-5.453 F (of the array member under discussion, instead of a pointer to it.)72 375 Q(The)5 E F0(struct)2.5 E F2(declaration becomes)2.5 E F0 (struct tnode {)108 393.7 Q(char tword)144 404.7 Q 1.666([w)1.666 G -4.334(size ] ;)-1.666 F(int count;)144 415.7 Q(int left;)144 426.7 Q (int right;)144 437.7 Q(};)108 448.7 Q F2(and)72 467.4 Q F1(alloc)2.5 E F2(becomes)2.5 E F0 -4.334(alloc \()108 486.1 R(\))3.332 E({)108 497.1 Q (int t;)144 508.1 Q 6(t=)144 524.6 S F3(--)A F0(nnodes;)A 1.666(if \() 144 535.6 R -4.334(t<=0 \))1.666 F({)7.666 E -4.334(printf \( "Out)180 546.6 R(of space\\n")6 E 1.666(\);)1.666 G -4.334(exit \()180 557.6 R 1.666(\);)3.332 G(})144 568.6 Q -4.334(return \( t \) ;)144 579.6 R(}) 108 590.6 Q F2(The)72 609.3 Q F1(fr)2.982 E(ee)-.37 E F2(stuf)2.982 E 2.982(fh)-.25 G .482(as disappeared because if we deal with e)-2.982 F (xclusi)-.15 E -.15(ve)-.25 G .481 (ly with subscripts some sort of map has to be k).15 F(ept,)-.1 E (which is too much trouble.)72 620.3 Q(No)82 635.7 Q 2.5(wt)-.25 G(he) -2.5 E F1(tr)2.5 E(ee)-.37 E F2 (routine returns a subscript also, and it becomes:)2.5 E F0 -4.334 (tree \( p,)108 654.4 R -4.334(word \))6 F(char word)108 665.4 Q 3.332 ([])1.666 G(;)-1.666 E({)108 676.4 Q(int cond;)144 687.4 Q 1.666(if \() 144 703.9 R(p)1.666 E F2(==)A F0 -1.666 1.666(0\) {)D 6(p=a)180 714.9 S -4.334(lloc \()-6 F 1.666(\);)3.332 G -4.334(copy \( word,)180 725.9 R -4.334(space [ p ] .tword \) ;)6 F EP %%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup /F0 10/Courier@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)434.28 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-2)2.5 G(3)-2.5 E F0 -4.334 (space [ p ] .count)180 97.8 R 6(=1)6 G(;)-6 E -4.334 (space [ p ] .right)180 108.8 R 6(=s)6 G -4.334(pace [ p ] .left)-6 F 6 (=0)6 G(;)-6 E -4.334(return \( p \) ;)180 119.8 R(})144 130.8 Q 1.666 (if \()144 141.8 R 1.666(\(c)3.332 G -4.334 (ond=compar \( space [ p ] .tword,)-1.666 F -4.334(word \))6 F(\))3.332 E/F2 10/Times-Roman@0 SF(==)7.666 E F0 -1.666 1.666(0\) {)6 H -4.334 (space [ p ] .count)180 152.8 R F2(++)A F0(;)A -4.334(return \( p \) ;) 180 163.8 R(})144 174.8 Q 1.666(if \()144 185.8 R -4.334(cond<0 \))1.666 F -4.334(space [ p ] .left)180 196.8 R 6(=t)6 G -4.334 (ree \( space [ p ] .left,)-6 F -4.334(word \) ;)6 F(else)144 207.8 Q -4.334(space [ p ] .right)180 218.8 R 6(=t)6 G -4.334 (ree \( space [ p ] .right,)-6 F -4.334(word \) ;)6 F -4.334 (return \( p \) ;)144 229.8 R(})108 240.8 Q F2 .259 (The other routines are changed similarly)72 259.5 R 5.259(.I)-.65 G 2.759(tm)-5.259 G .259(ust be pointed out that this v)-2.759 F .26 (ersion is noticeably less ef)-.15 F .26(\214cient than the)-.25 F 1.295 (\214rst because of the multiplications which must be done to compute a\ n of)72 270.5 R 1.294(fset in)-.25 F F1(space)3.794 E F2 1.294 (corresponding to the sub-)3.794 F(scripts.)72 281.5 Q .173(The observ) 82 296.9 R .173(ation that subscripts)-.25 F 1.666(\(l)4.339 G(ik)-1.666 E 2.673(e`)-.1 G -.834(`a [ i ] ')-3.413 F -1.493 1.666('\) a)-.74 H .173(re less ef)-1.666 F .173(\214cient than pointer indirection)-.25 F 1.666(\(l)4.339 G(ik)-1.666 E 2.674(e`)-.1 G(`)-3.414 E(*)2.2 I(ap')-2.2 I -1.492 1.666('\) h)-.74 H .174(olds true)-1.666 F .772 (independently of whether or not structures are in)72 307.9 R -.2(vo)-.4 G(lv).2 E 3.271(ed. There)-.15 F .771(are of course man)3.271 F 3.271 (ys)-.15 G .771(ituations where subscripts are)-3.271 F (indispensable, and others where the loss in ef)72 318.9 Q(\214cienc) -.25 E 2.5(yi)-.15 G 2.5(sw)-2.5 G(orth a g)-2.6 E(ain in clarity)-.05 E (.)-.65 E 2.5(16.3 F)72 340.9 R(ormatted output)-.15 E .202 (Here is a simpli\214ed v)82 354.1 R .202(ersion of the)-.15 F F1 (printf)2.702 E F2 .202(routine, which is a)2.702 F -.25(va)-.2 G .203 (ilable in the C library).25 F 5.203(.I)-.65 G 2.703(ta)-5.203 G .203 (ccepts a string)-2.703 F 1.666(\(c)4.369 G(haracter)-1.666 E -.834 (array \))72 365.1 R .099(as \214rst ar)4.265 F .099 (gument, and prints subsequent ar)-.18 F .098 (guments according to speci\214cations contained in this format string.) -.18 F .475 (Most characters in the string are simply copied to the output; tw)72 376.1 R .475(o-character sequences be)-.1 F .475(ginning with `)-.15 F (`%')-.74 E 2.975('s)-.74 G(pecify)-2.975 E(that the ne)72 387.1 Q (xt ar)-.15 E(gument should be printed in a style as follo)-.18 E(ws:) -.25 E 20.17(%d decimal)108 405.8 R(number)2.5 E 20.17(%o octal)108 416.8 R(number)2.5 E(%c)108 427.8 Q/F3 8/Times-Roman@0 SF(ASCII)23.23 E F2(character)2.5 E 2.5(,o)-.4 G 2.5(r2c)-2.5 G (haracters if upper character is not null)-2.5 E 21.28(%s string)108 438.8 R 1.666(\(n)4.166 G(ull-terminated array of characters)-1.666 E (\))1.666 E 21.84(%f \215oating-point)108 449.8 R(number)2.5 E .976(The\ actual parameters for each function call are laid out contiguously in \ increasing storage locations; therefore, a)72 468.5 R .697 (function with a v)72 479.5 R .697(ariable number of ar)-.25 F .698 (guments may tak)-.18 F 3.198(et)-.1 G .698(he address of)-3.198 F 1.666 (\(s)4.864 G -.834(ay \))-1.666 F .698(its \214rst ar)4.864 F .698 (gument, and access the re-)-.18 F .679(maining ar)72 490.5 R .679 (guments by use of subscripting)-.18 F 1.666(\(r)4.845 G -2.25 -.15 (eg a)-1.666 H .679(rding the ar).15 F .678(guments as an array)-.18 F 4.844(\)o)1.666 G 3.178(rb)-4.844 G 3.178(yi)-3.178 G .678 (ndirection combined with)-3.178 F(pointer incrementation.)72 501.5 Q .168(If in such a situation the ar)82 516.9 R .168(guments ha)-.18 F .468 -.15(ve m)-.2 H(ix).15 E .168 (ed types, or if in general one wishes to insist that an lv)-.15 F .169 (alue should be)-.25 F .055(treated as ha)72 527.9 R .055(ving a gi)-.2 F -.15(ve)-.25 G 2.555(nt).15 G .055(ype, then)-2.555 F F0(struct)2.555 E F2 .055(declarations lik)2.555 F 2.555(et)-.1 G .055 (hose illustrated belo)-2.555 F 2.555(ww)-.25 G .055(ill be useful.) -2.555 F .054(It should be e)5.054 F(v-)-.25 E (ident, though, that such techniques are implementation dependent.)72 538.9 Q F1(Printf)82 554.3 Q F2 .615(depends as well on the f)3.115 F .615(act that)-.1 F F0(char)3.115 E F2(and)3.116 E F0(float)3.116 E F2 (ar)3.116 E .616(guments are widened respecti)-.18 F -.15(ve)-.25 G .616 (ly to).15 F F0(int)3.116 E F2(and)3.116 E F0(dou-)3.116 E(ble)72 565.3 Q F2 3.35(,s)C 3.35(ot)-3.35 G .85(here are ef)-3.35 F(fecti)-.25 E -.15 (ve)-.25 G .85(ly only tw).15 F 3.35(os)-.1 G .85(izes of ar)-3.35 F .849(guments to deal with.)-.18 F F1(Printf)5.849 E F2 .849 (calls the library routines)3.349 F F1(putc)3.349 E(har)-.15 E F2(to) 3.349 E(write out single characters and)72 576.3 Q F1(ftoa)2.5 E F2 (to dispose of \215oating-point numbers.)2.5 E F0 -4.334(printf \( fmt,) 108 595 R -4.334(args \))6 F(char fmt)108 606 Q 3.332([])1.666 G(;) -1.666 E({)108 617 Q(char)144 628 Q F2(*)6 2.2 M F0 1.666(s;)-2.2 K (struct { char)144 639 Q F2(**)6 2.2 M F0 -4.334(charpp ;)-2.2 J(};)6 E (struct { double)144 650 Q F2(*)6 2.2 M F0 -4.334(doublep ;)-2.2 J(};)6 E(int)144 661 Q F2(*)6 2.2 M F0(ap, x, c)-2.2 I(;)1.666 E(ap = &args)144 677.5 Q 82.334(;/)1.666 G F2(*)-82.334 2.2 M F0(argument pointer)6 -2.2 M F2(*)6 2.2 M F0(/)-2.2 I(for \( ; ; \) {)144 688.5 Q -4.334(while \() 180 699.5 R -3.332 1.666(\(c =)3.332 H F2(*)4.334 2.2 M F0(fmt)-2.2 I F2 (++)A F0 7.666(\)!)1.666 G 6<3db4>-7.666 G -4.334(%\264 \))-6 F({)7.666 E -4.334(if \( c)216 710.5 R F2(==)6 E F0 -4.334<b45c30b42029>6 F -4.334 (return ;)252 721.5 R EP %%Page: 24 24 %%BeginPageSetup BP %%EndPageSetup /F0 10/Courier@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S(efer) -5 E 2.5(ence Manual)-.37 F 2.5(-2)2.5 G(4)-2.5 E F0 -4.334 (putchar \( c \) ;)216 97.8 R(})180 108.8 Q 1.666(switch \()180 119.8 R 6(c=)1.666 G/F2 10/Times-Roman@0 SF(*)2.2 I F0(fmt)-2.2 I F2(++)A F0 7.666(\){)1.666 G(/)180 130.8 Q F2(*)2.2 I F0(decimal)6 -2.2 M F2(*)6 2.2 M F0(/)-2.2 I(case \264d)180 141.8 Q<b43a>1.666 E 6(x=)216 152.8 S F2(*)2.2 I F0(ap)-2.2 I F2(++)A F0(;)1.666 E -4.334(if \( x)216 163.8 R 6(<0)6 G 7.666(\){)-4.334 G 6(x=)252 174.8 S/F3 10/Symbol SF(-)A F0 1.666(x;)C -4.334(if \( x<0 \))252 185.8 R 12({/)7.666 G F2(*)-12 2.2 M F0(is)6 -2.2 M F3(-)6 E F0(infinity)6 E F2(*)6 2.2 M F0(/)-2.2 I -4.334 (printf \( ")288 196.8 R F3(-)A F0 -4.334(32768" \) ;)B -4.334 (continue ;)288 207.8 R(})252 218.8 Q -4.334(putchar \( \264)252 229.8 R F3(-)A F0 1.666<b4293b>C(})216 240.8 Q -4.334(printd \( x \) ;)216 251.8 R -4.334(continue ;)216 262.8 R(/)180 273.8 Q F2(*)2.2 I F0(octal)6 -2.2 M F2(*)6 2.2 M F0(/)-2.2 I(case \264o\264:)180 284.8 Q -4.334(printo \() 216 295.8 R F2(*)1.666 2.2 M F0(ap)-2.2 I F2(++)A F0 1.666(\);)1.666 G -4.334(continue ;)216 306.8 R(/)180 317.8 Q F2(*)2.2 I F0(float, double) 6 -2.2 M F2(*)6 2.2 M F0(/)-2.2 I 3.332(case \264f)180 328.8 R<b43a> 1.666 E(/)216 339.8 Q F2(*)2.2 I F0(let ftoa do the real work)6 -2.2 M F2(*)6 2.2 M F0(/)-2.2 I -4.334(ftoa \()216 350.8 R F2(*)1.666 2.2 M F0 (ap.doublep)-2.2 I F2(++)A F0 1.666(\);)1.666 G -4.334(continue ;)216 361.8 R(/)180 372.8 Q F2(*)2.2 I F0(character)6 -2.2 M F2(*)6 2.2 M F0 (/)-2.2 I(case \264c\264:)180 383.8 Q -4.334(putchar \()216 394.8 R F2 (*)1.666 2.2 M F0(ap)-2.2 I F2(++)A F0 1.666(\);)1.666 G -4.334 (continue ;)216 405.8 R(/)180 416.8 Q F2(*)2.2 I F0(string)6 -2.2 M F2 (*)6 2.2 M F0(/)-2.2 I(case \264s\264:)180 427.8 Q 6(s=)216 438.8 S F2 (*)2.2 I F0(ap.charpp)-2.2 I F2(++)A F0(;)1.666 E -4.334(while \( c)216 449.8 R(=)6 E F2(*)6 2.2 M F0(s)-2.2 I F2(++)A F0(\))1.666 E -4.334 (putchar \( c \) ;)252 460.8 R -4.334(continue ;)216 471.8 R(})180 482.8 Q -4.334(putchar \( c \) ;)180 493.8 R(})144 504.8 Q(})108 515.8 Q(/)108 526.8 Q F2(*)2.2 I(*)110.5 540 Q F0(Print n in decimal)6 -2.2 M 6(;nm) 1.666 G(ust be non-negative)-6 E F2(*)110.5 551 Q F0(/)-2.2 I -4.334 (printd \( n \))108 559.8 R({)108 570.8 Q(int a)144 581.8 Q(;)1.666 E 1.666(if \()144 592.8 R -4.334(a=n/10 \))1.666 F -4.334 (printd \( a \) ;)180 603.8 R -4.334(putchar \( n%10)144 614.8 R 6<2bb4> 6 G -4.334(0\264 \) ;)-6 F(})108 625.8 Q(/)108 636.8 Q F2(*)2.2 I(*) 110.5 650 Q F0(Print n in octal, with exactly 1 leading 0)6 -2.2 M F2(*) 110.5 661 Q F0(/)-2.2 I -4.334(printo \( n \))108 669.8 R({)108 680.8 Q 1.666(if \()144 691.8 R 1.666(n\))1.666 G -4.334(printo \()180 702.8 R 1.666(\(n)3.332 G -4.334(>>3 \) &017777 \) ;)-1.666 F -4.334(putchar \() 144 713.8 R 1.666(\(n)3.332 G -4.334(&07 \) +\2640\264 \) ;)-1.666 F(}) 108 724.8 Q EP %%Page: 25 25 %%BeginPageSetup BP %%EndPageSetup /F0 10/Courier@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)434.28 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-2)2.5 G(5)-2.5 E/F2 10 /Times-Roman@0 SF(REFERENCES)274.605 119.8 Q 10(1. Johnson,)72 147.3 R .025(S. C., and K)2.525 F .025(ernighan, B. W)-.25 F 5.025(.`)-.92 G .025(`The Programming Language B.)-5.765 F 1.505 -.74('' C)-.7 H .025 (omp. Sci. T).74 F .026(ech. Rep. #8., Bell Labo-)-.7 F(ratories, 1972.) 92 158.3 Q 10(2. Ritchie,)72 175.9 R 1.307(D. M., and Thompson, K. L.) 3.807 F -.74(``)6.307 G(The).74 E/F3 8/Times-Roman@0 SF(UNIX)3.807 E F2 -.35(Ti)3.807 G 1.307(me-sharing System.).35 F 5.287 -.74('' C)-.7 H 3.807(.A).74 G(CM)-4.207 E F0(7,)3.807 E F2 1.307(17, July)7.307 F 3.807 (,1)-.65 G 1.306(974, pp.)-3.807 F(365-375.)92 186.9 Q 10(3. Peterson,) 72 204.5 R 2.349 -.74(T. G)3.369 H .869(., and Lesk, M. E.).74 F -.74 (``)5.869 G 3.369(AU)-.06 G(ser')-3.369 E 3.369(sG)-.55 G .87 (uide to the C Language on the IBM 370.)-3.369 F 4.85 -.74('' I)-.7 H .87(nternal Memoran-).74 F(dum, Bell Laboratories, 1974.)92 215.5 Q 10 (4. Thompson,)72 233.1 R(K. L., and Ritchie, D. M.)2.5 E/F4 8 /Times-Italic@0 SF(UNIX)5 E F1(Pr)2.5 E -.1(og)-.45 G -.15(ra).1 G (mmer').15 E 2.5(sM)-.4 G(anual.)-2.5 E F2(Bell Laboratories, 1973.)5 E 10(5. Lesk,)72 251.8 R(M. E., and Barres, B. A.)2.5 E -.74(``)5 G(The) .74 E F3(GCOS)2.5 E F2 2.5(CL)2.5 G(ibrary)-2.5 E -.7(.')-.65 G 5('I) -.04 G(nternal memorandum, Bell Laboratories, 1974.)-5 E 10(6. K)72 270.5 R .947(ernighan, B. W)-.25 F 5.947(.`)-.92 G .947 (`Programming in C)-6.687 F/F5 10/Symbol SF(-)A F2 3.447(AT)3.447 G (utorial.)-3.897 E 4.927 -.74('' U)-.7 H .946 (npublished internal memorandum, Bell Laboratories,).74 F(1974.)92 281.5 Q EP %%Page: 26 26 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-2)2.5 G(6)-2.5 E F0(APPENDIX 1) 277.53 114.3 Q(Syntax Summary)271.415 128.6 Q 2.5(1. Expressions.)102 156.1 R F1 -.2(ex)138 185.8 S(pr).2 E(ession:)-.37 E(primary)174 196.8 Q F0(*)174 210 Q F1 -.2(ex)2.5 -2.2 O(pr).2 E(ession)-.37 E/F2 10 /Courier@0 SF(&)174 218.8 Q F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E/F3 10 /Symbol SF(-)174 229.8 Q F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F2(!)174 240.8 Q F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E/F4 14/Times-Italic@0 SF(~) 174 257.3 Q F1 -.2(ex)2.5 -5.5 O(pr).2 E(ession)-.37 E F0(++)174 262.8 Q F1(lvalue)2.5 E F3(--)174 273.8 Q F1(lvalue)2.5 E(lvalue)174 284.8 Q F0 (++)2.5 E F1(lvalue)174 295.8 Q F3(--)2.5 E F2(sizeof)174 306.8 Q F1 -.2 (ex)6 G(pr).2 E(ession)-.37 E -.2(ex)174 317.8 S(pr).2 E(ession binop e) -.37 E(xpr)-.2 E(ession)-.37 E -.2(ex)174 328.8 S(pr).2 E(ession)-.37 E F2(?)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F2(:)2.5 E F1 -.2(ex) 2.5 G(pr).2 E(ession)-.37 E(lvalue asgnop e)174 339.8 Q(xpr)-.2 E (ession)-.37 E -.2(ex)174 350.8 S(pr).2 E(ession)-.37 E F2(,)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E(primary:)138 369.5 Q(identi\214er)174 380.5 Q(constant)174 391.5 Q(string)174 402.5 Q F2(\()174 413.5 Q F1 -.2 (ex)6 G(pr).2 E(ession)-.37 E F2(\))2.5 E F1(primary)174 424.5 Q F2(\() 2.5 E F1 -.2(ex)6 G(pr).2 E(ession-list)-.37 E/F5 6/Times-Italic@0 SF (opt)3 I F2(\))2.5 -3 M F1(primary)174 435.5 Q F2([)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F2(])2.5 E F1(lvalue)174 446.5 Q F2(.)2.5 E F1 (identi\214er)6 E(primary)174 457.5 Q F2<8a3e>2.5 E F1(identi\214er)6 E (lvalue:)138 476.2 Q(identi\214er)174 487.2 Q(primary)174 498.2 Q F2([) 2.5 E F1 -.2(ex)6 G(pr).2 E(ession)-.37 E F2(])2.5 E F1(lvalue)174 509.2 Q F2(.)2.5 E F1(identi\214er)6 E(primary)174 520.2 Q F2<8a3e>2.5 E F1 (identi\214er)2.5 E F0(*)174 533.4 Q F1 -.2(ex)5 -2.2 O(pr).2 E(ession) -.37 E F2(\()174 542.2 Q F1(lvalue)12 E F2(\))5 E F0(The primary-e)102 560.9 Q(xpression operators)-.15 E F2 2.668 1.666(\(\) [] . \212)138 579.6 T(>)-1.666 E F0(ha)102 596.1 Q .3 -.15(ve h)-.2 H (ighest priority and group left-to-right.).15 E(The unary operators)5 E (*)138 617 Q F2(&)12 -2.2 M F3(-)12 E F2(!)12 E/F6 14/Courier@0 SF(~)12 5.5 M F0(++)12 -5.5 M F3(--)5 E F2(sizeof)5 E F0(ha)102 631.3 Q .595 -.15(ve p)-.2 H .295(riority belo).15 F 2.795(wt)-.25 G .295 (he primary operators b)-2.795 F .295(ut higher than an)-.2 F 2.795(yb) -.15 G .296(inary operator)-2.795 F 2.796(,a)-.4 G .296 (nd group right-to-left.)-2.796 F(Bina-)5.296 E(ry operators and the co\ nditional operator all group left-to-right, and ha)102 642.3 Q .3 -.15 (ve p)-.2 H(riority decreasing as indicated:).15 E F1(binop:)138 661 Q F0(*)174 674.2 Q F2 24(/%)24 -2.2 O(+)174 683 Q F3(-)24 E F2 18(>> <<) 174 694 R 24(<><)174 705 S 24(=>)-24 G(=)-24 E 18(== !=)174 716 R(&)174 727 Q EP %%Page: 27 27 %%BeginPageSetup BP %%EndPageSetup /F0 10/Courier@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)434.28 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-2)2.5 G(7)-2.5 E F0(^)174 97.8 Q .4 LW 175 102.05 175 108.8 DL(&&)174 119.8 Q 175 124.05 175 130.8 DL 177 124.05 177 130.8 DL 12(?:)174 141.8 S/F2 10/Times-Roman@0 SF (Assignment operators all ha)102 157.2 Q .3 -.15(ve t)-.2 H (he same priority).15 E 2.5(,a)-.65 G(nd all group right-to-left.)-2.5 E F1(asgnop:)138 175.9 Q F0 12(==)174 186.9 S 12(+=)-12 G/F3 10/Symbol SF (-)-12 E F0(=)12 E F2(*)2.2 I 425.49 180.15 425.49 186.9 DL F0 6 (=/ =% =>> =<< =& =^ =)262.49 186.9 R F2(The comma operator has the lo) 102 202.3 Q(west priority)-.25 E 2.5(,a)-.65 G(nd groups left-to-right.) -2.5 E 2.5(2. Declarations.)102 221 R F1(declar)138 239.7 Q(ation:)-.15 E(decl-speci\214er)174 250.7 Q 2.5(sd)-.1 G(eclar)-2.5 E(ator)-.15 E (-list)-.2 E/F4 6/Times-Italic@0 SF(opt)3 I F0(;)5 -3 M F1 (decl-speci\214er)138 269.4 Q(s:)-.1 E(type-speci\214er)174 280.4 Q (sc-speci\214er)174 291.4 Q(type-speci\214er sc-speci\214er)174 302.4 Q (sc-speci\214er type-speci\214er)174 313.4 Q(sc-speci\214er:)138 332.1 Q F0(auto)174 343.1 Q(static)174 354.1 Q(extern)174 365.1 Q(register)174 376.1 Q F1(type-speci\214er:)138 394.8 Q F0(int)174 405.8 Q(char)174 416.8 Q(float)174 427.8 Q(double)174 438.8 Q(struct {)174 449.8 Q F1 (type-decl-list })6 E F0(struct)174 460.8 Q F1 (identi\214er { type-decl-list })6 E F0(struct)174 471.8 Q F1 (identi\214er)6 E(declar)138 490.5 Q(ator)-.15 E(-list:)-.2 E(declar)174 501.5 Q(ator)-.15 E(declar)174 512.5 Q(ator)-.15 E F0(,)2.5 E F1(declar) 2.5 E(ator)-.15 E(-list)-.2 E(declar)138 531.2 Q(ator:)-.15 E (identi\214er)174 542.2 Q F2(*)174 555.4 Q F1(declar)2.5 -2.2 M(ator) -.15 E(declar)174 564.2 Q(ator)-.15 E F0 6(\(\))2.5 G F1(declar)174 575.2 Q(ator)-.15 E F0([)2.5 E F1(constant-e)2.5 E(xpr)-.2 E(ession)-.37 E F4(opt)3 I F0(])2.5 -3 M(\()174 586.2 Q F1(declar)6 E(ator)-.15 E F0 (\))2.5 E F1(type-decl-list:)138 604.9 Q(type-declar)174 615.9 Q(ation) -.15 E(type-declar)174 626.9 Q(ation type-decl-list)-.15 E(type-declar) 138 645.6 Q(ation:)-.15 E(type-speci\214er declar)174 656.6 Q(ator)-.15 E(-list)-.2 E F0(;)5 E F2(3. Statements.)102 684.1 Q F1(statement:)138 702.8 Q -.2(ex)174 713.8 S(pr).2 E(ession)-.37 E F0(;)2.5 E F1 2.5({s) 174 724.8 S(tatement-list })-2.5 E EP %%Page: 28 28 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Italic@0 SF(-)0 11 Q 5(CR)72 58 S(efer)-5 E 2.5 (ence Manual)-.37 F 2.5(-2)2.5 G(8)-2.5 E/F1 10/Courier@0 SF(if \()174 97.8 Q F0 -.2(ex)6 G(pr).2 E(ession)-.37 E F1(\))2.5 E F0(statement)6 E F1(if \()174 108.8 Q F0 -.2(ex)8.5 G(pr).2 E(ession)-.37 E F1(\))2.5 E F0(statement)6 E F1(else)2.5 E F0(statement)6 E F1(while \()174 119.8 Q F0 -.2(ex)6 G(pr).2 E(ession)-.37 E F1(\))2.5 E F0(statement)6 E F1 (for \()174 130.8 Q F0 -.2(ex)6 G(pr).2 E(ession)-.37 E/F2 6 /Times-Italic@0 SF(opt)3 I F1(;)2.5 -3 M F0 -.2(ex)6 G(pr).2 E(ession) -.37 E F2(opt)3 I F1(;)2.5 -3 M F0 -.2(ex)6 G(pr).2 E(ession)-.37 E F2 (opt)3 I F1 6(\)s)2.5 -3 O(tatement)-6 E(switch \()174 141.8 Q F0 -.2 (ex)6 G(pr).2 E(ession)-.37 E F1(\))2.5 E F0(statement)6 E F1(case)174 152.8 Q F0(constant-e)6 E(xpr)-.2 E(ession)-.37 E F1(:)2.5 E F0 (statement)2.5 E F1(default :)174 163.8 Q F0(statement)6 E F1(break ;) 174 174.8 Q(continue ;)174 185.8 Q(return ;)174 196.8 Q(return \()174 207.8 Q F0 -.2(ex)6 G(pr).2 E(ession)-.37 E F1 6(\);)2.5 G(goto)174 218.8 Q F0 -.2(ex)6 G(pr).2 E(ession)-.37 E F1(;)2.5 E F0(identi\214er) 174 229.8 Q F1(:)2.5 E F0(statement)6 E F1(;)174 240.8 Q F0 (statement-list:)138 259.5 Q(statement)174 270.5 Q (statement statement-list)174 281.5 Q/F3 10/Times-Roman@0 SF 2.5 (4. External)102 309 R(de\214nitions.)2.5 E F0(pr)138 327.7 Q -.1(og) -.45 G -.15(ra).1 G(m:).15 E -.2(ex)174 338.7 S(ternal-de\214nition).2 E -.2(ex)174 349.7 S(ternal-de\214nition pr).2 E -.1(og)-.45 G -.15(ra).1 G(m).15 E -.2(ex)138 368.4 S(ternal-de\214nition:).2 E (function-de\214nition)174 379.4 Q(data-de\214nition)174 390.4 Q (function-de\214nition:)138 409.1 Q(type-speci\214er)174 420.1 Q F2(opt) 3 I F0(function-declar)2.5 -3 M(ator function-body)-.15 E (function-declar)138 438.8 Q(ator:)-.15 E(declar)174 449.8 Q(ator)-.15 E F1(\()2.5 E F0(par)8.5 E(ameter)-.15 E(-list)-.2 E F2(opt)3 I F1(\))2.5 -3 M F0(par)138 468.5 Q(ameter)-.15 E(-list:)-.2 E(identi\214er)174 479.5 Q(identi\214er)174 490.5 Q F1(,)2.5 E F0(par)2.5 E(ameter)-.15 E (-list)-.2 E(function-body:)138 509.2 Q (type-decl-list function-statement)174 520.2 Q(function-statement:)138 538.9 Q 2.5({d)174 549.9 S(eclar)-2.5 E(ation-list)-.15 E F2(opt)3 I F0 (statement-list })2.5 -3 M(data-de\214nition:)138 568.6 Q F1(extern)174 579.6 Q F2(opt)3 I F0(type-speci\214er)2.5 -3 M F2(opt)3 I F0 (init-declar)2.5 -3 M(ator)-.15 E(-list)-.2 E F2(opt)3 I F1(;)2.5 -3 M F0(init-declar)138 598.3 Q(ator)-.15 E(-list:)-.2 E(init-declar)174 609.3 Q(ator)-.15 E(init-declar)174 620.3 Q(ator)-.15 E F1(,)2.5 E F0 (init-declar)2.5 E(ator)-.15 E(-list)-.2 E(init-declar)138 639 Q(ator:) -.15 E(declar)174 650 Q(ator initializer)-.15 E F2(opt)3 I F0 (initializer:)138 668.7 Q(constant)174 679.7 Q 2.5({c)174 690.7 S (onstant-e)-2.5 E(xpr)-.2 E(ession-list })-.37 E EP %%Page: 29 29 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)434.28 58 S(efer)-5 E 2.5(ence Manual)-.37 F 2.5(-2)2.5 G(9)-2.5 E(constant-e)138 97.8 Q(xpr)-.2 E(ession-list:)-.37 E(constant-e)174 108.8 Q(xpr)-.2 E (ession)-.37 E(constant-e)174 119.8 Q(xpr)-.2 E(ession)-.37 E/F2 10 /Courier@0 SF(,)2.5 E F1(constant-e)2.5 E(xpr)-.2 E(ession-list)-.37 E (constant-e)138 138.5 Q(xpr)-.2 E(ession:)-.37 E -.2(ex)174 149.5 S(pr) .2 E(ession)-.37 E F0 2.5(5. Preprocessor)102 164.9 R F2 6(#d)138 183.6 S(efine)-6 E F1(identi\214er tok)6 E(en-string)-.1 E F2 6(#i)138 202.3 S (nclude ")-6 E F1(\214lename)A F2(")1.666 E EP %%Page: 30 30 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)72 58 S (efer)-5 E 2.5(ence Manual)-.37 F 2.5(-3)2.5 G(0)-2.5 E F0(APPENDIX 2) 277.53 108.8 Q(Implementation Peculiarities)248.365 119.8 Q .368 (This Appendix brie\215y summarizes the dif)72 152.8 R .367 (ferences between the implementations of C on the)-.25 F/F2 8 /Times-Roman@0 SF(PDP)2.867 E F0 .367(-11 under)B F2(UNIX)2.867 E F0 (and)2.867 E .364(on the)72 163.8 R F2(HIS)2.864 E F0 .364(6070 under) 2.864 F F2(GCOS)2.865 E F0 2.865(;i)C 2.865(ti)-2.865 G .365 (ncludes some kno)-2.865 F .365(wn b)-.25 F .365 (ugs in each implementation.)-.2 F .365(Each entry is k)5.365 F -.15(ey) -.1 G .365(ed by an indi-).15 F(cator as follo)72 174.8 Q(ws:)-.25 E 23.8(hh)100.8 196.8 S(ard to \214x)-23.8 E(g)100.8 207.8 Q F2(GCOS)23.8 E F0 -.15(ve)2.5 G(rsion should probably be changed).15 E(u)100.8 218.8 Q F2(UNIX)23.8 E F0 -.15(ve)2.5 G(rsion should probably be changed).15 E 23.8(dI)100.8 229.8 S(nherent dif)-23.8 E(ference lik)-.25 E (ely to remain)-.1 E(This list w)72 251.8 Q (as prepared by M. E. Lesk, S. C. Johnson, E. N. Pinson, and the author) -.1 E(.)-.55 E F1(A. Bugs or dif)72 284.8 Q(fer)-.18 E(ences fr)-.37 E (om C langua)-.45 E .2 -.1(ge s)-.1 H(peci\214cations).1 E F0 16.3 (hg A.1\))72 306.8 R F2(GCOS)39.55 E F0(does not do type con)2.5 E -.15 (ve)-.4 G(rsions in `).15 E(`?:')-.74 E('.)-.74 E 16.3(hg A.2\))72 317.8 R F2(GCOS)39.55 E F0 .198(has a b)2.698 F .198(ug in)-.2 F/F3 10 /Courier@0 SF(int)2.698 E F0(and)2.698 E F3(real)2.698 E F0 .197 (comparisons; the numbers are compared by subtraction, and)2.698 F (the dif)158.4 328.8 Q(ference must not o)-.25 E -.15(ve)-.15 G(r\215o) .15 E -.65(w.)-.25 G 23.8(gA)72 339.8 S 37.05(.3\) When)-23.8 F F1(x)2.5 E F0(is a)2.5 E F3(float)2.5 E F0 2.5(,t)C(he construction `)-2.5 E (`test ?)-.74 E/F4 10/Symbol SF(-)2.5 E F0 2.5(x:x)C 1.48 -.74('' i)-2.5 H 2.5(si).74 G(lle)-2.5 E -.05(ga)-.15 G 2.5(lo).05 G(n)-2.5 E F2(GCOS) 2.5 E F0(.)A 16.3(hg A.4\))72 350.8 R -.74(``)39.55 G(p1).74 E F4(-)A F0 (>p2 =+ 2')A 2.5('c)-.74 G(auses a compiler error)-2.5 E 2.5(,w)-.4 G (here p1 and p2 are pointers.)-2.5 E 23.8(uA)72 361.8 S 37.05(.5\) On) -23.8 F F2(UNIX)2.661 E F0 2.661(,t)C .161(he e)-2.661 F .161 (xpression in a)-.15 F F3(return)2.661 E F0 .161(statement is)2.661 F F1 (not)2.661 E F0(con)2.661 E -.15(ve)-.4 G .161 (rted to the type of the function, as).15 F(promised.)158.4 372.8 Q 11.3 (hug A.6\))72 383.8 R F3(entry)39.55 E F0 (statement is not implemented at all.)2.5 E F1(B. Implementation dif)72 405.8 Q(fer)-.18 E(ences)-.37 E F0 23.8(dB)72 427.8 S 37.6(.1\) Sizes) -23.8 F(of character constants dif)2.5 E(fer;)-.25 E F2(UNIX)2.5 E F0 2.5(:2)C(,)-2.5 E F2(GCOS)2.5 E F0 2.5(:4)C(.)-2.5 E 23.8(dB)72 438.8 S 37.6(.2\) T)-23.8 F(able sizes in compilers dif)-.8 E(fer)-.25 E(.)-.55 E 23.8(dB)72 449.8 S(.3\))-23.8 E F3(char)40.1 E F0 2.794(sa)C(nd)-2.794 E F3(int)2.794 E F0 2.794(sh)C -2.25 -.2(av e)-2.794 H(dif)2.994 E .294 (ferent sizes;)-.25 F F3(char)2.794 E F0 2.794(sa)C .294(re 8 bits on) -2.794 F F2(UNIX)2.794 E F0 2.794(,9o)C(n)-2.794 E F2(GCOS)2.794 E F0 2.794(;w)C .294(ords are 16 bits)-2.894 F(on)158.4 460.8 Q F2(UNIX)3.337 E F0 .837(and 36 on)3.337 F F2(GCOS)3.337 E F0 5.837(.T)C .837 (here are corresponding dif)-5.837 F .837 (ferences in representations of)-.25 F F3(float)3.338 E F0(s)A(and)158.4 471.8 Q F3(double)2.5 E F0(s.)A 23.8(dB)72 482.8 S 37.6(.4\) Character) -23.8 F(arrays stored left to right in a w)2.5 E(ord in)-.1 E F2(GCOS) 2.5 E F0 2.5(,r)C(ight to left in)-2.5 E F2(UNIX)2.5 E F0(.)A 23.8(gB)72 493.8 S 37.6(.5\) P)-23.8 F .061(assing of \215oats and doubles dif)-.15 F(fers;)-.25 E F2(UNIX)2.561 E F0 .061(passes on stack,)2.561 F F2(GCOS) 2.561 E F0 .06(passes pointer \(hidden to nor)2.561 F(-)-.2 E (mal user\).)158.4 504.8 Q 23.8(gB)72 515.8 S 37.6(.6\) Structures)-23.8 F(and strings are aligned on a w)2.5 E(ord boundary in)-.1 E F2(UNIX)2.5 E F0 2.5(,n)C(ot aligned in)-2.5 E F2(GCOS)2.5 E F0(.)A 23.8(gB)72 526.8 S(.7\))-23.8 E F2(GCOS)40.1 E F0 (preprocessor supports #rename, #escape;)2.5 E F2(UNIX)2.5 E F0 (has only #de\214ne, #include.)2.5 E 23.8(uB)72 537.8 S 37.6 (.8\) Preprocessor)-23.8 F(is not in)2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5 (do).1 G(n)-2.5 E F2(UNIX)2.5 E F0 (unless \214rst character of \214le is `)2.5 E(`#')-.74 E('.)-.74 E 23.8 (uB)72 548.8 S 37.6(.9\) The)-23.8 F -.15(ex)3.436 G .936 (ternal de\214nition `).15 F .936(`static int .)-.74 F 1.666(..)1.666 G 4.916 -.74('' i)-2.366 H 3.436(sl).74 G -2.25 -.15(eg a)-3.436 H 3.436 (lo).15 G(n)-3.436 E F2(GCOS)3.436 E F0 3.436(,b)C .936 (ut gets a diagnostic on)-3.636 F F2(UNIX)3.437 E F0 5.937(.\()C(On) -5.937 E F2(GCOS)158.4 559.8 Q F0 .61 (it means an identi\214er global to the routines in the \214le b)3.11 F .609(ut in)-.2 F .609(visible to routines compiled)-.4 F(separately) 158.4 570.8 Q(.\))-.65 E 23.8(gB)72 581.8 S 32.6(.10\) A)-23.8 F (compound statement on)2.5 E F2(GCOS)2.5 E F0(must contain one `)2.5 E (`;')-.74 E 2.5('b)-.74 G(ut on)-2.7 E F2(UNIX)2.5 E F0(may be empty)2.5 E(.)-.65 E 23.8(gB)72 592.8 S 32.6(.11\) On)-23.8 F F2(GCOS)3.063 E F0 .563(case distinctions in identi\214ers and k)3.063 F -.15(ey)-.1 G -.1 (wo).15 G .563(rds are ignored; on).1 F F2(UNIX)3.063 E F0 .563 (case is signi\214cant)3.063 F -2.15 -.25(ev e)158.4 603.8 T (rywhere, with k).25 E -.15(ey)-.1 G -.1(wo).15 G(rds in lo).1 E (wer case.)-.25 E F1(C. Syntax Dif)72 625.8 Q(fer)-.18 E(ences)-.37 E F0 23.8(gC)72 647.8 S(.1\))-23.8 E F2(UNIX)40.1 E F0(allo)3.096 E .596 (ws broader classes of initialization; on)-.25 F F2(GCOS)3.096 E F0 .596 (an initializer must be a constant, name,)3.096 F .268(or string.)158.4 658.8 R(Similarly)5.268 E(,)-.65 E F2(GCOS)2.768 E F0 .268 (is much stickier about w)2.768 F .268 (anting braces around initializers and in par)-.1 F(-)-.2 E(ticular the) 158.4 669.8 Q 2.5(ym)-.15 G(ust be present for array initialization.) -2.5 E 23.8(gC)72 680.8 S 37.6(.2\) `)-23.8 F(`int e)-.74 E(xtern')-.15 E 2.5('i)-.74 G(lle)-2.5 E -.05(ga)-.15 G 2.5(lo).05 G(n)-2.5 E F2(GCOS) 2.5 E F0 2.5(;m)C(ust ha)-2.5 E .3 -.15(ve `)-.2 H(`e)-.59 E(xtern int') -.15 E 2.5('\()-.74 G(storage class before type\).)-2.5 E 23.8(gC)72 691.8 S 37.6(.3\) Externals)-23.8 F(on)2.5 E F2(GCOS)2.5 E F0(must ha) 2.5 E .3 -.15(ve a t)-.2 H(ype \(not def).15 E(aulted to)-.1 E F3(int) 2.5 E F0(\).)A 23.8(uC)72 702.8 S(.4\))-23.8 E F2(GCOS)40.1 E F0(allo) 2.5 E(ws initialization of internal)-.25 E F3(static)2.5 E F0 (\(same syntax as for e)2.5 E(xternal de\214nitions\).)-.15 E 23.8(gC)72 713.8 S 37.6(.5\) inte)-23.8 F(ger)-.15 E F4(-)A F0(>... is not allo)A (wed on)-.25 E F2(GCOS)2.5 E F0(.)A 23.8(gC)72 724.8 S 37.6(.6\) Some) -23.8 F(operators on pointers are ille)2.5 E -.05(ga)-.15 G 2.5(lo).05 G (n)-2.5 E F2(GCOS)2.5 E F0(\(<, >\).)2.5 E EP %%Page: 31 31 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF(-)0 11 Q/F1 10/Times-Italic@0 SF 5(CR)434.28 58 S(efer)-5 E 2.5(ence Manual)-.37 F 2.5(-3)2.5 G(1)-2.5 E F0 23.8(gC)72 97.8 S(.7\))-23.8 E/F2 10/Courier@0 SF(register)40.1 E F0 (storage class means something on)2.5 E/F3 8/Times-Roman@0 SF(UNIX)2.5 E F0 2.5(,b)C(ut is not accepted on)-2.7 E F3(GCOS)2.5 E F0(.)A 23.8(gC)72 108.8 S 37.6(.8\) Scope)-23.8 F(holes: `)2.5 E(`int x; f)-.74 E 3.332 (\(\))1.666 G({int x;}')-1.666 E 2.5('i)-.74 G 2.5(si)-2.5 G(lle)-2.5 E -.05(ga)-.15 G 2.5(lo).05 G(n)-2.5 E F3(UNIX)2.5 E F0 -.2(bu)2.5 G 2.5 (td).2 G(e\214nes tw)-2.5 E 2.5(ov)-.1 G(ariables on)-2.75 E F3(GCOS)2.5 E F0(.)A 23.8(gC)72 119.8 S 37.6(.9\) When)-23.8 F .843 (function names are used as ar)3.343 F .843(guments on)-.18 F F3(UNIX) 3.343 E F0 3.343(,e)C .843(ither `)-3.343 F(`fname')-.74 E 3.342('o)-.74 G 3.342(r`)-3.342 G(`&fname')-4.082 E 3.342('m)-.74 G .842(ay be)-3.342 F .664(used to get a pointer to the function; on)158.4 130.8 R F3(GCOS) 3.165 E F0 -.74(``)3.165 G(&fname').74 E 3.165('g)-.74 G .665 (enerates a doubly-indirect pointer)-3.165 F(.)-.55 E (\(Note that both are wrong since the `)158.4 141.8 Q(`&')-.74 E 2.5('i) -.74 G 2.5(ss)-2.5 G(upposed to be supplied for free.\))-2.5 E F1 (D. Oper)72 163.8 Q(ating System Dependencies)-.15 E F0 23.8(dD)72 185.8 S(.1\))-23.8 E F3(GCOS)39.55 E F0 .702(allocates e)3.202 F .702 (xternal scalars by SYMREF;)-.15 F F3(UNIX)3.202 E F0 .702(allocates e) 3.202 F .702(xternal scalars as labelled com-)-.15 F .832 (mon; as a result there may be man)158.4 196.8 R 3.332(yu)-.15 G .832 (ninitialized e)-3.332 F .832(xternal de\214nitions of the same v)-.15 F .832(ariable on)-.25 F F3(UNIX)158.4 207.8 Q F0 -.2(bu)2.5 G 2.5(to).2 G (nly one on)-2.5 E F3(GCOS)2.5 E F0(.)A 23.8(dD)72 218.8 S 37.05 (.2\) External)-23.8 F .006(names dif)2.506 F .006(fer in allo)-.25 F -.1(wa)-.25 G .006(ble length and character set; on).1 F F3(UNIX)2.506 E F0 2.506(,7c)C .005(haracters and both cas-)-2.506 F(es; on)158.4 229.8 Q F3(GCOS)2.5 E F0 2.5(6c)2.5 G(haracters and only one case.)-2.5 E F1 (E. Semantic Dif)72 251.8 Q(fer)-.18 E(ences)-.37 E F0 16.3(hg E.1\))72 273.8 R -.74(``)40.66 G .171(int i, *p; p=i; i=p;').74 F 2.671('d)-.74 G .171(oes nothing on)-2.671 F F3(UNIX)2.671 E F0 2.671(,d)C .171 (oes something on)-2.671 F F3(GCOS)2.671 E F0(\(destro)2.671 E .172 (ys right half of i\) .)-.1 F 23.8(dE)72 284.8 S 38.16(.2\) `)-23.8 F (`>>')-.74 E 2.5('m)-.74 G(eans arithmetic shift on)-2.5 E F3(UNIX)2.5 E F0 2.5(,l)C(ogical on)-2.5 E F3(GCOS)2.5 E F0(.)A 23.8(dE)72 295.8 S 38.16(.3\) When)-23.8 F(a)2.692 E F2(char)2.692 E F0 .192(is con)2.692 F -.15(ve)-.4 G .192(rted to inte).15 F(ger)-.15 E 2.692(,t)-.4 G .192 (he result is al)-2.692 F -.1(wa)-.1 G .192(ys positi).1 F .492 -.15 (ve o)-.25 H(n).15 E F3(GCOS)2.692 E F0 -.2(bu)2.692 G 2.692(tc).2 G .192(an be ne)-2.692 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(on)158.4 306.8 Q F3(UNIX)2.5 E F0(.)A 23.8(dE)72 317.8 S 38.16(.4\) Ar)-23.8 F (guments of subroutines are e)-.18 E -.25(va)-.25 G (luated left-to-right on).25 E F3(GCOS)2.5 E F0 2.5(,r)C (ight-to-left on)-2.5 E F3(UNIX)2.5 E F0(.)A EP %%Trailer end %%EOF