%!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