%!
% This file is a NONconforming PostScript file.
% Copyright 1989 Stephan v. Bechtolsheim (unless otherwise stated)
% applies to various prologue files. Read documentation for details.
save
% dvitps: BEGIN including file "/usr/local/lib/tex/TeXPS/pro/texpre.pro"
/@bop0
{
PsPrintEnabled { (Pass0: Page ) print == flush } {pop} ifelse
}.def
/@eop0 {
pop
}.def
/@bop1
{
PsPrintEnabled { (Pass1: Page ) print == flush } {pop} ifelse
save
DviTranslateVector-X DviTranslateVector-Y translate
DviOrientationMatrix concat
Page-H-Offset Page-V-Offset translate
3 1 roll
translate
0 0 moveto
Draft-Flag { @Draft } if
/DriverDelta 0 def
} def
/@eop1 {
pop
showpage
restore
} def
/@end {
(Done!\n) print flush
} def
/@ReportVmStatus {
(\n@ReportVmStatus: ) print
print (: ) print
vmstatus
(max: ) print 20 string cvs print
(, used: ) print 20 string cvs print
(, level: ) print 20 string cvs print
(\n) print flush
} def
/@ReportVmStatusNew {
(VM: ) print
exch print
(, printer: ) print
/Vmfree vmstatus pop exch pop def Vmfree (       ) cvs print
(, driver: ) print dup (      ) cvs print
(, delta: ) print
Vmfree sub (      ) cvs print
(\n) print flush
} def
/@Draft {
gsave
Page-H-Offset neg Page-V-Offset neg translate
-45 rotate
-150 0 moveto
/Helvetica-Bold findfont
[120.0 0 0 -120.0 0 0 ] makefont setfont
(DRAFT) show
grestore
gsave
Page-H-Offset neg Page-V-Offset neg translate
300 -100 moveto
/Helvetica-Bold findfont
[60.0 0 0   -60.0 0 0 ] makefont setfont
Date-and-Time..show
(   ::   ).      .show
Dvi-File-Name..show
grestore
} def
% dvitps: END including file "/usr/local/lib/tex/TeXPS/pro/texpre.pro"
% dvitps: BEGIN including file "/usr/local/lib/tex/TeXPS/pro/pos.pro"
/a { rmoveto } def
/DriverDelta 0 def
/b { exch p dup /DriverDelta exch def 0 rmoveto } def
/c { p DriverDelta 4 sub dup /DriverDelta exch def 0 rmoveto } def
/d { p DriverDelta 3 sub dup /DriverDelta exch def 0 rmoveto } def
/e { p DriverDelta 2 sub dup /DriverDelta exch def 0 rmoveto } def
/f { p DriverDelta 1 sub dup /DriverDelta exch def 0 rmoveto } def
/g { p DriverDelta 0 rmoveto } def
/h { p DriverDelta 1 add dup /DriverDelta exch def 0 rmoveto } def
/i { p DriverDelta 2 add dup /DriverDelta exch def 0 rmoveto } def
/j { p DriverDelta 3 add dup /DriverDelta exch def 0 rmoveto } def
/k { p DriverDelta 4 add dup /DriverDelta exch def 0 rmoveto } def
/l { p -4 0 rmoveto } def
/m { p -3 0 rmoveto } def
/n { p -2 0 rmoveto } def
/o { p -1 0 rmoveto } def
/q { p 1 0 rmoveto } def
/r { p 2 0 rmoveto } def
/s { p 3 0 rmoveto } def
/t { p 4 0 rmoveto } def
/p { show } def
/w { 0 exch rmoveto } def
/x { 0 rmoveto } def
/y { 3 -1 roll p rmoveto } def
/u-string ( ) def
/u { u-string exch 0 exch put
u-string show
} def
/v { u-string exch 0 exch put
currentpoint
u-string show
moveto
} def
% dvitps: END including file "/usr/local/lib/tex/TeXPS/pro/pos.pro"
% dvitps: BEGIN including file "/usr/local/lib/tex/TeXPS/pro/rules.pro"
/z
{   /dy exch def
/dx exch def
currentpoint
currentpoint
transform round exch round exch itransform
newpath
moveto
dx 0 rlineto
0 dy rlineto
dx neg 0 rlineto
closepath
fill
moveto
}
def
/z
{   /dy exch def
/dx exch def
currentpoint
0.2 0.2 rmoveto
currentpoint
newpath
moveto
dx 0 rlineto
0 dy rlineto
dx neg 0 rlineto
closepath
fill
moveto
}
def
% dvitps: END including file "/usr/local/lib/tex/TeXPS/pro/rules.pro"
/Dvi-File-Name (rat.dvi) def
/Draft-Flag false def
/#copies 1 def
/NumCharsInPixelFonts 256 def
/HostName (thor) def
/PsPrintEnabled false def
/Page-H-Offset   0.000000 def
/Page-V-Offset   0.000000 def
/ExecPsConv {0.30 mul} def
/Date-and-Time (Mon Mar 22 14:24 1993) def
/DviTranslateVector-X   72.000 def
/DviTranslateVector-Y  720.000 def
/DviOrientationMatrix [    0.240    0.000    0.000
.   -0.240 0.0 0.0 ] def
% dvitps: BEGIN including file "/usr/local/lib/tex/TeXPS/pro/pixel-fonts.pro"
/@newfont
{
/newname exch def
newname 7 dict def
newname load begin
/FontType 3 def
/FontMatrix [1 0 0 -1 0 0] def
/FontBBox [0 0 1 1] def
/BitMaps NumCharsInPixelFonts array def
/BuildChar {CharBuilder} def
/Encoding NumCharsInPixelFonts array def
0 1 NumCharsInPixelFonts 1 sub {Encoding exch /.undef put} for
end
newname newname load definefont pop
} def
/ch-image {ch-data 0 get} def
/ch-width {ch-data 1 get} def
/ch-height {ch-data 2 get} def
/ch-xoff  {ch-data 3 get} def
/ch-yoff  {ch-data 4 get} def
/ch-tfmw  {ch-data 5 get} def
/CharBuilder
{
/ch-code exch def
/font-dict exch def
/ch-data font-dict /BitMaps get ch-code get def
ch-data null eq not
{
ch-tfmw   0
ch-xoff neg
ch-height ch-yoff sub neg
ch-width  ch-xoff neg add
ch-yoff
setcachedevice
0 0 transform round exch round exch itransform translate
ch-width ch-height true
[1 0  0 1 ch-xoff ch-height ch-yoff sub] {ch-image} imagemask
}
if
} def
/@dc
{
/ch-code exch def
/ch-data exch def
currentfont /BitMaps get
ch-code ch-data put
currentfont /Encoding get
ch-code (   ) cvs   % convert the character code to a string
cvn
ch-code exch put
} def
/@sf /setfont load def
% dvitps: END including file "/usr/local/lib/tex/TeXPS/pro/pixel-fonts.pro"

1 @bop0
/@F3 @newfont
@F3 @sf
[<
FC00000FC0FC00001F80FC00001F80FC00003F00FC00003F00FC00007E00FC00007E00FC00
00FC00FC0000F800FC0001F800FC0003F000FC0003F000FC0007E000FC0007E000FC000FC0
00FC000FC000FC001F8000FC001F8000FC003F0000FC003F0000FC007E0000FC007E0000FC
00FC0000FFFFF80000FFFFFE0000FFFFFF8000FFFFFFE000FC001FF000FC0003F800FC0001
FC00FC0000FC00FC00007E00FC00007E00FC00003F00FC00003F00FC00003F00FC00003F00
FC00003F00FC00003F00FC00003F00FC00007E00FC00007E00FC0000FC00FC0001FC00FC00
03F800FC001FF000FFFFFFE000FFFFFF8000FFFFFE0000FFFFF00000>
. 34 50 -6 49 43] 82 @dc
[<
0FE07C1FFC7C3FFF7C7FFFFC7F07FCFC01FCF800FCF8007CF8007CF8007CF8007C7C007C3F
007C3FC07C0FFFFC07FFFC00FFFC0007FC00007C00007C00007C00007C00007C20007C3000
F83800F83F03F03FFFE01FFFC007FF8000FE00>
. 22 31 -3 30 32] 97 @dc
[<
007E0000FFC001FFF001FFF003F0E003E02003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E000FFFFE0FFFFE0FFFFE0FFFFE003E00003E00003E00003E00003E00003E000
03E00003E00003E000>
. 20 40 -1 39 24] 116 @dc
[<
7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C000000000000
0000000000FCFCFCFCFCFC>
. 6 48 -4 47 16] 105 @dc
[<
001FC00000FFF80001FFFC0007FFFF000FF07F801FC01FC01F0007C03F0007E03E0003E07C
0001F07C0001F0FC0001F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F800
00F8780000F07C0001F07C0001F03E0003E03E0003E01F0007C01F800FC00FE03F8007FFFF
0001FFFC0000FFF800001FC000>
. 29 31 -2 30 34] 111 @dc
[<
F8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8
007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CFC007CFC007CFC007CFE00
FCFF00F8FF83F8FBFFF8F9FFF0F8FFE0F83F80>
. 22 31 -6 30 35] 110 @dc
[<
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8>
. 5 50 -5 49 16] 108 @dc
[<
001FE00000FFFC0001FFFF0007FFFF800FF01F801FC003801F0000803E0000003E0000007C
0000007C000000F8000000F8000000F8000000F8000000F8000000FFFFFF80FFFFFF80FFFF
FF80FFFFFF807C0007807C000F007C000F003E001F003F001E001F803E000FE0FC0007FFFC
0003FFF80000FFE000003F8000>
. 25 31 -2 30 30] 101 @dc
[<
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E000FFFFC0FFFFC0FFFFC0FFFFC003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00001E00001F00000F00000FC04007FFC003FFC001FFC00
07FC>
. 22 50 -1 49 21] 102 @dc
[<
F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F8
00FC00FC00FE00FE00FF00FF80FFF0FBFEF9FEF8FEF87EF81E>
. 15 31 -6 30 23] 114 @dc
[<
F80000003FF80000007F7C0000007E7C0000007E7C000000FE3E000000FC3E000000FC3E00
0001FC1F000001F81F000001F81F000003F80F800003F00F800003F007800007E007C00007
E007FFFFFFE003FFFFFFC003FFFFFFC003FFFFFFC001E0001F8001F0001F8001F0001F8000
F0003F0000F8003F0000F8003F000078007E00007C007E00007C007E00003C00FC00003E00
FC00003E00FC00001E01F800001F01F800001F01F800000F03F000000F83F000000F83F000
000783E000000787E0000003C7C0000003C7C0000003CFC0000001EF80000001EF80000001
EF80000000FF00000000FF00000000FF000000007E000000007E0000>
. 40 50 -2 49 45] 65 @dc
[<
F8003E000F80F8003E000F80F8003E000F80F8003E000F80F8003E000F80F8003E000F80F8
003E000F80F8003E000F80F8003E000F80F8003E000F80F8003E000F80F8003E000F80F800
3E000F80F8003E000F80F8003E000F80F8003E000F80F8003E000F80F8003E000F80F8003E
000F80F8003E000F80F8003E000F80FC003F000F80FC003F000F80FC003F000F80FE007F80
1F80FF007FC01F00FF81FDE07F00FBFFF8FFFE00F9FFF87FFE00F87FF01FFC00F81FC007F0
00>
. 41 31 -6 30 53] 109 @dc
[<
003FC000FFF803FFFE07FFFF0FE07F1F800F1F00033E00017E00007C00007C0000F80000F8
0000F80000F80000F80000F80000F80000F80000F800007C00007C00007E00003E00001F00
021F800F0FE03F07FFFF03FFFE00FFF8003FC0>
. 24 31 -3 30 30] 99 @dc
[<
F800003FE0F800003FE0F800007FE0F800007FE0F80000FFE0F80000FFE0F80001FBE0F800
01FBE0F80003F3E0F80003F3E0F80007E3E0F80007E3E0F8000FE3E0F8000FC3E0F8000FC3
E0F8001F83E0F8001F83E0F8003F03E0F8003F03E0F8007E03E0F8007E03E0F800FC03E0F8
00FC03E0F801F803E0F801F803E0F803F003E0F803F003E0F807E003E0F807E003E0F80FC0
03E0F80FC003E0F81F8003E0F81F8003E0F83F0003E0F83F0003E0F87E0003E0F87E0003E0
F8FE0003E0F8FC0003E0F8FC0003E0F9F80003E0F9F80003E0FBF00003E0FBF00003E0FFE0
0003E0FFE00003E0FFC00003E0FFC00003E0FF800003E0FF800003E0>
. 35 50 -6 49 48] 78 @dc
[<
003FE00001FFF8000FFFFE001FFFFF007FFFFF80FFE03FC0FF000FC0FC0007E0700007F060
0003F0400003F0000001F8000001F8000001F8000001F8000001F8000001F8000001F80000
03F8000003F0000007F000000FE000001FE000007FC00007FF80003FFF8000FFFE0003FFFC
0007FFF0000FFF80001FF800001FE000003F8000003F8000003F0000007F0000007E000000
7E0000007E0000007E0000007E0000007E0000003F0000403F0000C01F8001C01FC003E00F
F01FE007FFFFE003FFFFC001FFFF00007FFE00001FF000>
. 29 52 -3 50 37] 83 @dc
[<
007E0F8001FF8F8007FFCF800FFFEF801FE0FF801F803F803F001F803E001F807C000F807C
000F807C000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F800
0F80F8000F807C000F807C000F807E000F803E000F803F001F801F803F800FE07F800FFFFF
8003FFEF8001FF8F80007E0F8000000F8000000F8000000F8000000F8000000F8000000F80
00000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000
000F8000000F8000000F8000000F80>
. 25 50 -3 49 35] 100 @dc
[<
FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
FCFCFCFCFCFCFCFCFCFCFCFCFC>
. 6 50 -6 49 19] 73 @dc
[<
0FC000003FE000003FF000003FF8000038780000207C0000003C0000003E0000001E000000
1F0000000F0000000F0000000F80000007800000078000000FC000000FC000001FC000001D
E000003DE000003CE000003CF000007CF0000078F00000F8F80000F8780000F07C0001F07C
0001F03C0003E03E0003E03E0003E03E0007C01F0007C01F000F801F000F800F801F800F80
1F000F801F0007C03E0007C03E0007C07E0003E07C0003E07C0003F0F80001F0>
. 28 45 -1 30 31] 121 @dc
[<
01FE001FFFC07FFFE0FFFFF0FE03F8F800F860007C40007C00007C00007C00007C0000FC00
03F8003FF803FFF00FFFE01FFF803FFE007FE0007E0000FC0000F80000F80000F80000F800
007C00307E01F83FFFF81FFFF80FFFE001FF00>
. 22 31 -2 30 26] 115 @dc
[<
FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF80>
. 33 4 0 20 34] 123 @dc
[<
FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC
000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00
0000FC000000FC000000FFFFF800FFFFFF00FFFFFF80FFFFFFE0FC001FF0FC0007F8FC0001
F8FC0000FCFC00007EFC00007EFC00003EFC00003FFC00003FFC00003FFC00003FFC00003F
FC00003FFC00003FFC00003EFC00007EFC00007EFC0000FCFC0001F8FC0007F8FC001FF0FF
FFFFE0FFFFFF80FFFFFF00FFFFF800>
. 32 50 -6 49 43] 80 @dc
[<
003FE00001FFFC0007FFFF000FFFFF803FE03FE03F0007E07E0003F0FC0001F8F80000F8F8
0000F8F80000F8F80000F8FC0001F87C0003F03E000FF03FFFFFE01FFFFFC00FFFFF801FFF
FF001FFFF8001E0000003C0000003C0000003C0000001C7F00001DFFC0001FFFE0000FFFF0
000FC1F8001F80FC001F007C001F007C003E003E003E003E003E003E003E003E003E003E00
3E003E001F007C001F007C001F80FC000FC1FC0007FFFFFC03FFFFFC01FFC7FC007F00F8>
. 30 46 -2 30 34] 103 @dc
[<
FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FC000000FC000000FC000000FC000000FC
000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00
0000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000
00FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000
FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC
000000FC000000FC000000FC000000>
. 26 50 -6 49 36] 76 @dc
[<
0FE07C3FFC7C7FFE7C7FFFFCFC07FCF801FCF800FCF800FCF8007CF8007CF8007CF8007CF8
007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF800
7CF8007CF8007CF8007CF8007CF8007CF8007C>
. 22 31 -6 30 35] 117 @dc
[<
00003FE0000001FFFC000007FFFF00001FFFFFC0003FFFFFE0007FC01FE000FF0003E001FC
0000E003F800002007F00000000FE00000000FC00000001FC00000001F800000003F000000
003F000000003F000000007E000000007E000000007E00000000FE00000000FC00000000FC
00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000
0000FC00000000FE000000007E000000007E000000007E000000003F000000003F00000000
3F000000001F800000001FC00000000FC00000000FE000000007F000000003F800008001FC
00018000FF000780007FC03FC0003FFFFFC0001FFFFFC00007FFFF800001FFFC0000003FE0
00>
. 35 52 -4 50 43] 67 @dc
/@F16 @newfont
@F16 @sf
[<
0F800000104000003030000060080000E0040000E0040000E0020000E0020000E0010000E0
010000E0010000700080007000800070008000700080003800400038004000380040003800
40001C0020001C0020001C0020001C0020000E0010000E0010000E0010000E0018000F001C
007FF0FF80>
. 25 29 -9 27 31] 85 @dc
[<
FF8010001C0010000C00180004003800040038000400380002007400020074000200740002
00E4000100E2000100E2000101C2000101C2000081C1000081810000838100008381000043
8080004700800047008000470080002E0040002E0040002E0040003C0060001C007001FC03
FE>
. 31 28 -3 27 31] 78 @dc
[<
FFE0000F000007000007000007000007000003800003800003800003800001C00001C00001
C00001C00000E00000E00000E00000E0000070000070000070000070000038000038000038
00003800003C0001FFC0>
. 18 28 -2 27 16] 73 @dc
[<
FF80FFC01E001E0006001E0002001C0001001C0000803C0000403800006038000020700000
1070000008F0000004E0000002E0000001E0000001C0000001C0000003C0000003A0000007
90000007080000070400000F0200000E0100000E0180001E0080001C0060001E00F001FF81
FE>
. 31 28 -2 27 31] 88 @dc
[<
3C0072007200710071007100380038001C001C001C000E008E008E004700470026001C0000
00000000000000000000000000010003800180>
. 9 28 -4 27 13] 105 @dc
[<
1F0060C08060C030E03060300038007807F00FF01FC01F001C0018180C1C0C08060801F0>
. 14 18 -3 17 17] 115 @dc
[<
3C38626461E4C0E2C0E2E0E2E070E070E070E0707038703830383838181C0C3C063C03CC>
. 15 18 -5 17 21] 97 @dc
[<
3000700038003800380038001C001C001C001C000E000E008E008E064707468726C23C3C>
. 16 18 -4 17 18] 114 @dc
[<
1F0030C060206010E008E000E000E000E000E0007F8070607010381018080C10071001E0>
. 13 18 -5 17 19] 101 @dc
[<
7E00C300E1C0C0C000E000E0007000700F7018F01878303830383838381C381C381C381C1C
0E1C0E0C0E0E0E0607030F018F00F3>
. 16 26 -3 17 19] 103 @dc
[<
0E00190038803840384038401C001C001C001C000E000E000E000E00070007000700FFE003
8003800380038001C001C001C000C0>
. 11 26 -3 25 14] 116 @dc
[<
3C380062640061E400C0E200C0E200E0E200E07000E07000E07000E0700070380070380030
3800383800181C000C3C00063C0003DC00000E00000E00000E00000E000007000007000007
00000700000380000380001F80>
. 17 29 -5 28 21] 100 @dc
[<
300C01C0701C0320380E0710380E0708380E0388380E03881C0703801C0701C01C0701C01C
0701C00E0380E00E0380E08E0380E08E0380E04703C0E04683A0E0266318C03C1E0780>
. 29 18 -4 17 34] 109 @dc
[<
603800E0640070E40070E20070E20070E20038E00038E00039C0003F80001E00001D00001C
80001C83000E43800E23800E11000E0F000700000700000700000700000380000380000380
0003800001C00001C0000FC000>
. 17 29 -3 28 19] 107 @dc
[<
1E00318060C0E060E030E038E018E01CE01CE01C700E700E300E380C180C0C0C071801E0>
. 15 18 -5 17 21] 111 @dc
[<
780000CC0000E60000C6000007000003000003000003800003800003800001C00001C00001
C00001C00001C00000E00000E00000E00000E00000E0000070000070000070000070000070
0003FF80003800003800003800003800003800001C00001C00001C60000C700006700003C0
>
. 20 37 1 28 13] 102 @dc
[<
FF00FFC01C001E000C000E0004000E0002001C0002001C0001001C0001801C0000801C0000
401C00007FFC0000201C0000201C0000101C0000181C0000081C0000041C0000041C000002
3C0000023800000138000001B8000000B80000007800000078000000380000003800000018
0000001800>
. 26 29 -2 28 31] 65 @dc
[<
7FFE000003C0000001C0000001C0000001C0000001C0000000E0000000E0000000E0000000
E000000070000000700000007000000070000000380000003800000038000000380000001C
0000801C0080801C0080401C0080400E0080600E0080200E0080300E00C01C0701C01FFFFF
C0>
. 26 28 -7 27 30] 84 @dc
[<
01FC00000E03800018006000300010007000080060000400E0000200E0000200E0000100E0
000100E00001007000E0807000E0803001608039C100801A2080800E1081000E1041000F10
22000EE01A000E0004000E0002000E00010007030080070380400301802003808020018080
7000C1007000630030003C0000>
. 28 31 -5 29 32] 38 @dc
[<
60F07830>
. 5 4 -4 3 13] 46 @dc
[<
FFFF00000E01C000070070000700380007001C0007000E0003800700038007800380038003
8003C001C001C001C001E001C001E001C001E000E000F000E000F000E000F000E000F00070
00F00070007000700070007000F0003800E0003800E0003801C0003801C0003C078001FFFE
00>
. 28 28 -3 27 31] 68 @dc
[<
FFFFF0000E0078000700180007000C00070004000700040003800200038002000380010003
81010001C0800001C0800001C0800001C0800000FFC00000E0C00000E0400000E040000070
200000702040007000400070004000380040003800400038004000380060003C00E001FFFF
E0>
. 27 28 -3 27 28] 69 @dc
[<
01F80000070600000C01800018004000380020007000100070000800F0000800F0000400F0
000400F0000400F0000000F0000000F0000000F00000007800000078000000780000003C00
00003C0000801C0000801E0000800E000080070000C0038001C001C001C000E003C0003002
E0001E0C600003F020>
. 27 30 -6 28 30] 67 @dc
[<
300E00701900383880383840381C40381C401C1C001C0E001C0E001C0E000E07000E07008E
07008E07004707004687002646003C3C00>
. 18 18 -4 17 23] 110 @dc
[<
FFE000000F0000000700000007000000070000000700000003800000038000000380000003
80000001C0000001C0000001C0000001FFE00000E0380000E00E0000E0070000E007800070
0380007003C0007003C0007003C0003801C0003801C0003801C000380380003C070001FFFC
00>
. 26 28 -3 27 28] 80 @dc
[<
FFC0FFC0FFC0>
. 10 3 -3 9 15] 45 @dc
[<
FFF00780038003800380038001C001C001C001C000E000E000E000E0007000700070007000
38003800380038039C007C001C000C00060002>
. 15 28 -4 27 21] 49 @dc
[<
38006800E400E400E400E400700070007000700038003800380038001C001C001C001C000E
000E000E000E000700070007000700038003801F80>
. 9 29 -4 28 11] 108 @dc
[<
3FF00780038003800380038001C001C03DC063C061E0C0E0C0E0E0E0E070E070E070E07070
38703830383838181C0C3C062C03C4>
. 14 26 -5 17 19] 113 @dc
[<
078E001C59001839001838803838803838801C1C001C1C001C1C001C1C000E0E000E0E0087
0E00870E004707004707002707001E0300>
. 17 18 -4 17 22] 117 @dc
[<
FF80003C00001C00001C00001C00001C00000E00000E00000E70000E8C0007060007070007
03000703800381800381C00381C00381C001C0E001C0E011C0E011C0E008E0C008E0C004D9
80078700>
. 19 26 -1 17 21] 112 @dc
[<
03F800000E0E00001C0380003801C0007800E0007000700070003800F0003C00F0001E00F0
000E00F0000F00F0000F00F0000780F0000780F0000780780003C0780003C0780003C03C00
03C03C0003C01C0003C01E0003C00E0003C0070003800380038001C0038000E0070000700E
00001C1C000007F000>
. 26 30 -6 28 32] 79 @dc
[<
83E000CC1800F004006002006003006001806001802000C02000C00000C00000C00001C000
01C00007C0007F8001FF0003FC0003E0000700000700000600000600100600100300180300
1801001800801800403C00304C000F84>
. 22 30 -3 28 23] 83 @dc

1 @eop0

0 0 1 @bop1 757 936 a @F3 @sf(Rationale)23 b(fo)n(r)-579 92 y(American)f
(National)h(Standa)n(rd)-762 91 y(fo)n(r)e(Info)n(rmation)h(Systems)i({)
-728 91 y(Programming)f(Language)f({)-385 92 y(C)-847 1219 y @F16 @sf
(UNIX)15 b(is)f(a)i(r)n(e)n(gister)m(e)n(d)e(tr)n(ademark)g(of)h(A)m(T&T.)
-766 50 y(DEC)h(and)f(PDP-11)h(ar)n(e)f(tr)n(ademarks)f(of)h(Digital)f
(Equipment)h(Corp)n(or)n(ation.)-1253 49 y(POSIX)h(is)e(a)h(tr)n(ademark)f
(of)h(IEEE.)-697 133 y
1 @eop1

2 @bop0
/@F14 @newfont
@F14 @sf
[<
FFC00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E007E
000E000000000000000000000000001C003E003E003E001C00>
. 10 31 0 30 13] 105 @dc

2 @eop0

0 0 2 @bop1 112 50 a @F14 @sf(ii)-138 2703 y
2 @eop1

1 @bop0
/@F2 @newfont
@F2 @sf
[<
000000003FFE0000000000000FFFFFE000000000007FFFFFFC0000000003FFFFFFFF000000
000FFFFFFFFFC00000003FFFF8007FF0000000FFFF80000FF8000001FFFC000001FC000007
FFF0000000FE00000FFFC00000003F00001FFF800000001F80003FFF000000000FC0007FFE
0000000007E000FFFC0000000003E001FFF80000000001F003FFF00000000001F803FFF000
00000000F807FFE00000000000F807FFE000000000007C0FFFC000000000007C0FFFC00000
0000007C1FFFC000000000003E1FFF8000000000003E3FFF8000000000003E3FFF80000000
00003E3FFF8000000000003E7FFF8000000000003E7FFF000000000000007FFF0000000000
00007FFF00000000000000FFFF00000000000000FFFF00000000000000FFFF000000000000
00FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000
FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FF
FF00000000000000FFFF000000000000007FFF000000000000007FFF000000000000007FFF
0000000000003E7FFF8000000000003E3FFF8000000000003E3FFF8000000000003E3FFF80
00000000007E1FFF8000000000007E1FFFC000000000007E0FFFC000000000007E0FFFC000
00000000FE07FFE00000000000FE07FFE00000000001FE03FFF00000000001FE03FFF00000
000003FE01FFF80000000007FE00FFFC0000000007FE007FFE000000000FFE003FFF000000
001FFE001FFF800000003FFE000FFFC00000007FFE0007FFF0000001FFFE0001FFFC000003
FFFE0000FFFF80000FF7FE00003FFFF800FFC3FE00000FFFFFFFFF81FE000003FFFFFFFE00
FE0000007FFFFFF8003E0000000FFFFFC0001E000000003FFE00000E>
. 71 73 -7 71 86] 67 @dc
[<
00000FFF0000000000FFFFF000000007FFFFFE0000001FFFFFFF8000007FFC03FFE00000FF
E0007FF00001FFC0003FF80003FF80001FFC0007FF00000FFE000FFE000007FF001FFE0000
07FF801FFC000003FF803FFC000003FFC03FFC000003FFC07FF8000001FFE07FF8000001FF
E07FF8000001FFE07FF8000001FFE0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FF
F8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF800
0001FFF0FFF8000001FFF07FF8000001FFE07FF8000001FFE07FF8000001FFE03FF8000001
FFC03FF8000001FFC03FFC000003FFC01FFC000003FF800FFC000003FF000FFE000007FF00
07FE000007FE0003FF00000FFC0001FF80001FF80000FFE0007FF000003FFC03FFC000001F
FFFFFF80000007FFFFFE00000000FFFFF0000000000FFF000000>
. 52 46 -3 45 59] 111 @dc
[<
FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07F
FFFFE001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF
E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0
0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE000
00FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001
FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF
F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFF00000FFF00001FFF0
0000FFF00001FFF00000FFF00001FFF80000FFF00001FFFC0000FFF00001FFDC0000FFE000
01FFDE0000FFE00001FFCF0001FFE00003FFC7C001FFC000FFFFC3E003FFC000FFFFC1FC07
FF8000FFFFC0FFFFFF0000FFFFC03FFFFE0000FFFFC00FFFF80000007FC001FFC00000>
. 59 46 -4 45 66] 110 @dc
[<
00001FF0000001FFFC000007FFFE00000FFFFF80001FFE0F80003FFC07C0003FF803E0007F
F803E0007FF001E000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000FFF001
F000FFF001F000FFF001F000FFF001F000FFF0000000FFF0000000FFF0000000FFF0000000
FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0
000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF00000
00FFF0000000FFF0000000FFF0000000FFF00000FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFF
FFFFC00FFFFFFFC003FFF0000001FFF00000007FF00000003FF00000003FF00000001FF000
00000FF00000000FF000000007F000000007F000000007F000000003F000000003F0000000
03F000000001F000000001F000000001F000000001F000000001F000000001F00000>
. 36 66 -2 65 46] 116 @dc
[<
00000FFF80000000FFFFF8000007FFFFFE00001FFFFFFF80003FFE00FFC0007FF0001FE001
FFC00003F003FF800001F807FF000000FC07FF0000007E0FFE0000003E1FFE0000003E3FFC
0000001C3FFC000000003FFC000000007FFC000000007FF8000000007FF800000000FFF800
000000FFF800000000FFF800000000FFF800000000FFFFFFFFFFFCFFFFFFFFFFFEFFFFFFFF
FFFEFFFFFFFFFFFEFFF8000007FEFFF8000007FE7FF8000007FE7FF8000007FE7FF8000007
FC7FFC000007FC3FFC000007FC3FFC00000FFC1FFC00000FF81FFE00000FF80FFE00001FF0
07FF00003FF003FF80003FE001FFC0007FC000FFE001FF80007FFC07FF00001FFFFFFE0000
07FFFFF8000001FFFFE00000001FFE0000>
. 47 46 -3 45 54] 101 @dc
[<
E003FF8000F81FFFF800FC7FFFFE00FFFFFFFF80FFFC00FFC0FFF0001FE0FFC0000FF0FF80
0007F0FF000003F8FE000003F8FE000003F8FC000003FCFC000003FCF8000003FCF8000007
FC7800000FFC0000001FFC000000FFFC00001FFFF80003FFFFF8003FFFFFF000FFFFFFF003
FFFFFFE007FFFFFFC00FFFFFFF801FFFFFFF003FFFFFFC007FFFFFF0007FFFFFC000FFFFF8
0000FFFE000000FFF0000000FFC0000000FF800003E0FF000003E0FF000003E07F000003E0
7F000003E03F000007E03F80000FE01FC0001FE00FF800FFE007FFFFFFE001FFFFFFE0007F
FFF3E0000FFF00E0>
. 38 46 -4 45 47] 115 @dc
/@F9 @newfont
@F9 @sf
[<
FFFF80FFFF8003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000F3E0
00FFE0000FE00001E00000E000>
. 17 29 -4 28 26] 49 @dc
[<
FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007
E007E007E007E007E007E007E007E007E007E007E0FFFFFFFF>
. 16 31 -2 30 20] 73 @dc
[<
FFF0000600FFF00006000600000E000600001E000600003E000600007E00060000FE000600
00FE00060001FE00060003F600060007E60006000FE60006001FC60006001F860006003F06
0006007E06000600FC06000601FC06000601F806000603F006000607E00600060FC0060006
1F800600063F800600063F000600067E00060006FC00060007F800060007F0000600FFF000
FFF0FFE000FFF0>
. 36 31 -2 30 41] 78 @dc
[<
03FFFFC003FFFFC00007E0000007E0000007E0000007E0000007E0000007E0000007E00000
07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007
E000C007E006C007E006C007E006C007E006E007E00E6007E00C6007E00C7007E01C7C07E0
7C7FFFFFFC7FFFFFFC>
. 31 30 -2 29 36] 84 @dc
[<
FFFF007F80FFFF01FFC007E003F86007E007F03007E00FE03007E00FE00007E00FE00007E0
0FE00007E00FC00007E00FC00007E00FC00007E00F800007E00F800007E01F000007E03E00
0007FFFC000007FFFF000007E01FC00007E007E00007E003F00007E003F00007E003F80007
E003F80007E003F80007E003F80007E003F00007E003F00007E007E00007E01FC000FFFFFF
0000FFFFF80000>
. 36 31 -2 30 39] 82 @dc
[<
001FF80000FFFF0001F81F8007E007E00FC003F01F8001F83F8001FC3F0000FC7F0000FE7F
0000FE7E00007EFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00
007FFE00007F7E00007E7E00007E7F0000FE3F0000FC1F0000F81F8001F80FC003F007E007
E001F81F8000FFFF00001FF800>
. 32 31 -3 30 39] 79 @dc
[<
FFFFFE0000FFFFFFC00007E007F00007E001F80007E000FC0007E0007E0007E0003F0007E0
003F0007E0001F8007E0001F8007E0001F8007E0001FC007E0001FC007E0001FC007E0001F
C007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001F8007E0001F8007
E0001F8007E0003F0007E0003F0007E0007E0007E000FC0007E001F80007E007F000FFFFFF
C000FFFFFE0000>
. 34 31 -2 30 40] 68 @dc
[<
0003FC0000001FFF8000007E03C00000F800600001F000300001F000180003E000180007E0
000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C
0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007
E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C00FFFF01
FFE0FFFF01FFE0>
. 35 31 -2 30 40] 85 @dc
[<
0007FC00003FFF8000FE01C003F0007007E000380FC000181F80000C3F00000C3F0000067F
0000067E0000067E000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
00007E0000067E0000067F0000063F00000E3F00000E1F80001E0FC0001E07E0003E03F000
FE00FE03DE003FFF0E0007FC02>
. 31 31 -3 30 38] 67 @dc
@F14 @sf
[<
FFFE07C0038003800380038003800380038003800380038003800380038003800380038003
800380038003800380038003800380F3800F8003800180>
. 15 30 -4 29 23] 49 @dc
[<
70F8F8F870>
. 5 5 -4 4 13] 46 @dc
[<
FFFC00000FC000000780000007800000078000000780000007800000078000000780000007
800000078000000780000007800000078000000780000007FFE0000780780007801C000780
1E0007800F0007800F8007800F8007800F8007800F8007800F8007800F8007800F0007801E
0007801C000F807800FFFFE000>
. 25 31 -2 30 31] 80 @dc
[<
01F1FC030DC00603C00E03C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C0FE1FC00E01C0>
. 22 20 -1 19 25] 117 @dc
[<
FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000F0C0F1E0F1EFE
8C0E78>
. 15 20 -1 19 18] 114 @dc
[<
FFE0000E00000E00000E00000E00000E00000E00000E00000E00000E3E000EC3000F01C00F
01E00E00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00
E00F00E00F01C0FEC3800E3E00>
. 21 29 -1 19 25] 112 @dc
[<
01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F0
00F07000E07000E03801C03801C01C0380070E0001F800>
. 20 20 -1 19 23] 111 @dc
[<
8F80D060E030C018C01880188018803800700FF03FE07F807800E000C010C010C010403030
701F90>
. 13 20 -2 19 18] 115 @dc
[<
01F8000706000C0100180080380080700000700000F00000F00000F00000FFFF80F00380F0
03807003807007003807003807001C0E000E1C0003F000>
. 17 20 -1 19 20] 101 @dc
/@F13 @newfont
@F13 @sf
[<
70F8F8F870>
. 5 5 -4 4 13] 58 @dc
@F14 @sf
[<
FFFF807FFF803FFF801000801800400C004006004003000001800000C00000600000700000
3800001C00000E00000F000007800007800007C02007C0F803C0F803C0F803C0F007C08007
80400780200700100E000C1C0003F000>
. 18 30 -2 29 23] 50 @dc
[<
81F800CE0C00F00600E00300C00380C001808001C08001C08001C08001C00001C00003C000
03C0000780001F8003FF000FFE001FFC003FF0007F0000780000F00000F00000E00080E000
80E00080E001806001806001803003801007800C198007E080>
. 18 33 -3 31 25] 83 @dc
[<
03F00E0C1C023801380170007000F000F000F000F000F000F00070007000380C381E1C1E0E
0C03F8>
. 16 20 -2 19 20] 99 @dc
@F14 @sf
[<
00FFE0000E00000E00000E00000E00000E00000E00000E00FFFFF0C00E00400E00200E0020
0E00100E00080E00080E00040E00020E00020E00010E00008E00008E00004E00002E00002E
00001E00000E00000E00000600000600>
. 20 30 -1 29 23] 52 @dc
[<
03F0001C3C00200E00400F00400780F00780F807C0F807C0F807C02007C00007C000078000
0780000F00000E00003C0003F000003800001C00000E00000F00000F00000F80380F807807
80780780780F80200F00100E000C1C0003F000>
. 18 31 -2 29 23] 51 @dc
[<
000003E0FFFC0F100FC01E0807803E0407807E0407807C0407807C0007807C0007807C0007
8078000780780007807800078070000780F0000780E0000781C00007FF80000780F0000780
780007803C0007801E0007801E0007801F0007801F0007801F0007801F0007801E0007801E
0007803C00078078000F80F000FFFF8000>
. 30 32 -2 30 33] 82 @dc
[<
7FF00700070007000700070007000700070007000700070007000700070007000700070007
00FFF007000700070007000700070007000706038F018F00C6007C>
. 16 32 0 31 14] 102 @dc
[<
FFE7FC0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00F01C00F01C00E8180FE43000E3E00>
. 22 20 -1 19 25] 110 @dc
@F14 @sf
[<
001F800000F0F00001C0380007801E000F000F000E0007001E0007803C0003C03C0003C07C
0003E07C0003E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F800
01F0F80001F0F80001F0780001E0780001E07C0003E03C0003C03C0003C01E0007800E0007
000F000F0007801E0001C0380000F0F000001F8000>
. 28 33 -3 31 35] 79 @dc
[<
03FC001C03803000C0600060C00030C00030C00030C000306000703001E00FFFC01FFF803F
FE0030000030000020000020000033E0001E38001C1C00380E00780F00780F00780F00780F
00780F00380E001C1C300E3C3003E3300000E0>
. 20 31 -1 20 23] 103 @dc
[<
0F83C0386720781E10F01E10F00E10F00E10F00E10780E00380E001E0E00078E0000FE0000
0E00000E00000E00300E00781C007818003030001FE000>
. 20 20 -2 19 23] 97 @dc
[<
FFFE700E700638021C031E010E0107010780038001C001E000E0407040784038201C200E38
0E3FFF>
. 16 20 -1 19 20] 122 @dc
[<
01E0031006100E080E080E080E080E080E000E000E000E000E000E000E000E000E000E000E
00FFF83E000E000E0006000600020002000200>
. 13 28 -1 27 18] 116 @dc
[<
FFE7FC0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00F01C00F01C00E81800E43000E3E000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E0000FE00000E0000>
. 22 32 -1 31 25] 104 @dc
[<
03E3F80E1B801C0780380780380380700380700380F00380F00380F00380F00380F00380F0
03807003807003803803803803801C0780061B8003E3800003800003800003800003800003
80000380000380000380000380000380003F80000380>
. 21 32 -2 31 25] 100 @dc
[<
FFE7FE7FE00E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00
E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E
000F00F00E000F00F00E000E81C81C00FE618618000E1F01F000>
. 35 20 -1 19 38] 109 @dc
@F14 @sf
[<
03E0000C3800100E00200600400700400380E00380F003C0F003C07003C00003C00003C000
03C0000380000380100780100700180E00161C0011F0001000001000001000001000001000
001000001FE0001FF8001FFC001FFE00180300>
. 18 31 -2 29 23] 53 @dc
[<
FFFFF0000F803C0007801F0007800F0007800F8007800780078007C0078007C0078007C007
8007C0078007C00780078007800F8007800F0007801E0007803C0007FFF00007803C000780
1E0007801F0007800F0007800F8007800F8007800F8007800F8007800F8007800F0007801F
0007801E000F803800FFFFE000>
. 26 31 -2 30 32] 66 @dc
@F14 @sf
[<
01F000061C000C0E001807003807003803807003807003C07003C0F003C0F003C0F003C0F0
03C0F003C0F80380F80380F80700F40600F21C00F1F0007000007000007800003800003803
001C07800C07800E0380070100018200007C00>
. 18 31 -2 29 23] 54 @dc
[<
FFFFE0000F803C0007800E000780070007800380078003C0078001E0078001E0078000F007
8000F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8078000F80780
00F8078000F8078000F0078000F0078001F0078001E0078001E0078003C007800380078007
0007801E000F803C00FFFFE000>
. 29 31 -2 30 35] 68 @dc
[<
7FC3FE0700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E0FFFFE00700000700000700000700000700
000700000701E00701E00381E001C0C000E0C0003F00>
. 23 32 0 31 25] 12 @dc
@F14 @sf
[<
03000007800007800007800007800007800007800007800003800003800003800003800001
800001C00000C00000C0000040000040000020000020000010000008000008008004008002
008002004001007FFF807FFF807FFFC0400000>
. 18 31 -3 29 23] 55 @dc
[<
000FC0000070380001C0040003800200070001000E0000801E0000801C0000403C0000407C
0000407C00004078000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000780000407C0000407C0000403C0000C01C0000C01E0000C00E0001
C0070003C0038005C001C009C0007030C0000FC040>
. 26 33 -3 31 33] 67 @dc
[<
FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E00FE000E00>
. 11 32 0 31 13] 108 @dc
@F14 @sf
[<
03F0000C0C00100200200100600180C00080C000C0C000C0C000C0C001C04001C060038030
0F80103F000C7E0007FC0003F8000FF0001FC8003F06003E03007803007001806001806001
806001802001803003001006000C0C0003F000>
. 18 31 -2 29 23] 56 @dc
[<
FFFE00000FC000000780000007800000078000000780000007800000078000000780000007
800000078080000780800007808000078080000781800007FF800007818000078080000780
80000780800007808000078000800780008007800080078000800780018007800100078003
00078003000F800F00FFFFFF00>
. 25 31 -2 30 30] 70 @dc
@F9 @sf
[<
FFFFC0FFFFC07FFFC03FFFC01FFFC01C00E00E006007006003806001C00000E00000F00000
7800003E00001F00001F80000FC0000FC0000FE03807E07C07E0FE07E0FE0FE0FE0FC0FE0F
C07C1F80383F001FFE0007F000>
. 19 29 -3 28 26] 50 @dc
[<
FFFFFFF0FFFFFFF007E003F007E000F807E0007807E0003807E0001807E0001807E0001807
E0000C07E0600C07E0600C07E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0
E00007E0600007E0603007E0603007E0003007E0003007E0007007E0006007E000E007E001
E007E007E0FFFFFFE0FFFFFFE0>
. 30 31 -2 30 34] 69 @dc
[<
000070000000007000000000F800000000F800000001FC00000001FC00000003FE00000003
F600000003F600000007E300000007E30000000FE18000000FC18000001FC1C000001F80C0
00003F80E000003F006000003F006000007E003000007E00300000FC00180000FC00180001
FC000C0001F8000C0003F8000E0003F000060007F000070007E000030007E0000380FFFE00
3FF8FFFE003FF8>
. 37 31 -1 30 40] 86 @dc
[<
FFF00C03FFF8FFF01E03FFF806001E001F0006003F001F0006003F001F0006003F001F0006
007D801F0006007D801F000600F8C01F000600F8C01F000601F0601F000601F0601F000603
E0301F000603E0301F000607C0181F000607C0181F000607C0181F00060F800C1F00060F80
0C1F00061F00061F00061F00061F00063E00031F00063E00031F00067C00019F00067C0001
9F0006F80000DF0006F80000DF0006F80000DF0007F000007F00FFF000007FF8FFE000003F
F8>
. 45 31 -2 30 50] 77 @dc
[<
07F0001FFC00381F003C07807E07C07E03E07E03E07E01F03C01F00001F00041F807F9F81F
FDF83E05F87C03F87C03F8FC01F8FC01F8FC01F8FC01F8FC01F0FC01F0FC01F07C01E07C03
E03E03C01F07800FFF0001FC00>
. 21 29 -2 28 26] 57 @dc
@F14 @sf
[<
0FC000107000201800700C00780E0078060030070000070000038000038000038003E3C00E
13C0180BC03807C07007C07007C0F003C0F003C0F003C0F003C0F003C0F00380F003807003
807007003807003806001C0C000E180003F000>
. 18 31 -2 29 23] 57 @dc
[<
07FFFE00001F8000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000800F0010800F0010800F0010800F0010C00F0030400F0020400F00
20600F0060780F01E07FFFFFE0>
. 28 31 -2 30 33] 84 @dc
[<
00200000700000700000700000E80000E80001EC0001C40001C40003820003820003820007
01000701000E00800E00800E00801C00C01E01E0FF83F8>
. 21 20 -1 19 24] 118 @dc
@F14 @sf
[<
FFFFFF800F800F8007800180078000C0078000C00780004007800040078000400780002007
80002007800020078080000780800007808000078080000781800007FF8000078180000780
80000780800007808000078080800780008007800080078000800780018007800100078003
00078003000F800F00FFFFFF00>
. 27 31 -2 30 31] 69 @dc
[<
FF07FE1E01E00601E00201C0030380010700008700004E00007C00003C0000380000780000
EC0000E40001C2000381000701800701C00F01E07FC3FC>
. 23 20 0 19 24] 120 @dc
@F14 @sf
[<
3C0000620000F10000F08000F0800000400000400000400000200000200000700000700000
700000E80000E80001EC0001C40001C4000382000382000382000701000701000E00800E00
800E00801C00C01E01E0FF83F8>
. 21 29 -1 19 24] 121 @dc
@F9 @sf
[<
03FC001FFF803C0FC07807E0FC03F0FE03F0FE03F8FE03F87C03F83803F80003F80003F000
03E00007C0000F8001FC0001FC00001F00000F80000FC01E0FC03F07E03F07E03F07E03F07
E01E0FC00E0F8007FF0001FC00>
. 21 29 -2 28 26] 51 @dc
[<
FFFFFF80FFFFFF8007E01F8007E00F8007E0038007E0038007E001C007E001C007E001C007
E000C007E000C007E000C007E0000007E0000007E0000007E0000007E0000007E0000007E0
000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
0007E00000FFFF8000FFFF8000>
. 26 31 -2 30 31] 76 @dc
[<
FFE00FFFE0FFE00FFFE00E0000FE00060000FC00060001FC00030001F800030001F8000180
03F000018003F00001FFFFF00000FFFFE00000C007E00000600FC00000600FC00000701FC0
0000301F800000303F800000183F000000183F0000000C7E0000000C7E0000000EFE000000
06FC00000006FC00000003F800000003F800000001F000000001F000000001F000000000E0
00000000E00000>
. 35 31 -2 30 40] 65 @dc
[<
0007FC0600003FFF8E0000FE01FE0003F000FE0007E0007E000FC0007E001F80007E003F00
007E003F00007E007F00007E007E00007E007E00007E00FE003FFFE0FE003FFFE0FE000000
00FE00000000FE00000000FE00000000FE000000007E000006007E000006007F000006003F
00000E003F00000E001F80001E000FC0001E0007E0003E0003F000FE0000FE03DE00003FFF
0E000007FC0200>
. 35 31 -3 30 41] 71 @dc
@F14 @sf
[<
FFFFFC0F807C07801C07800C07800407800407800607800207800207800207800207800007
80000780000780000780000780000780000780000780000780000780000780000780000780
000780000780000780000780000FC000FFFE00>
. 23 31 -2 30 28] 76 @dc
@F14 @sf
[<
FFFC3FFC0FC007E0078007C0078007800780078007800F0007801E0007801E0007803C0007
803C00078078000780F00007C0F00007A1E0000791E0000793C000078F8000078780000783
00000781000007808000078040000780200007801000078008000780040007800200078001
00078001800FC003E0FFFC0FFC>
. 30 31 -2 30 35] 75 @dc
[<
004008000060180000E01C0000E01C0000F03C0001D03A0001D0320003C873000388710003
8861000704E0800704C0800707C0800E03C0400E0380400E0380401C0380201C0300603C07
8070FF9FE1FC>
. 30 20 -1 19 33] 119 @dc
@F14 @sf
[<
FFFC0FC0078007800780078007800780078007800780078007800780078007800780078007
8007800780078007800780078007800780078007800FC0FFFC>
. 14 31 -1 30 16] 73 @dc
@F14 @sf
[<
FFF8FFF80F800F8007800F0007800F0007800F0007800F0007800F0007800F0007800F0007
800F0007800F0007800F0007800F0007800F0007800F0007800F0007FFFF0007800F000780
0F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F
0007800F000F800F80FFF8FFF8>
. 29 31 -2 30 34] 72 @dc
@F14 @sf
[<
083E000CC3000D01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00780E
00780E00700E00700E00E00F00E00F01C00EC3800E3E000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E0000FE00000E0000>
. 21 32 -1 31 25] 98 @dc
@F14 @sf
[<
FFC03FFE1F0007E00E0003C0040003C002000780020007800200078001000F0001000F0001
000F0000FFFE0000801E0000801E0000403C0000403C0000403C0000207800002078000020
78000010F0000010F0000010F0000009E0000009E0000009E0000007C0000007C0000007C0
0000038000000380000003800000010000>
. 31 32 -1 31 34] 65 @dc

1 @eop0

0 0 1 @bop1 112 528 a @F2 @sf(Con)m(ten)m(ts)-464 271 y @F9 @sf(1)43 b
(INTR)o(ODUCTION)1127 b(1)-1581 58 y @F14 @sf(1.1)45 b(Purp)q(ose)31 b 
@F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)83 b 
@F14 @sf(1)-1582 58 y(1.2)45 b(Scop)q(e)e @F13 @sf(:)22 b(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)83 b @F14 @sf(4)-1582 57 y
(1.3)45 b(References)20 b @F13 @sf(:)i(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)83 b @F14 @sf(4)-1582 58 y(1.4)45 b(Organization)14 b
(of)h(the)g(do)q(cumen)o(t)20 b @F13 @sf(:)i(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)83 b @F14 @sf(4)-1582 
58 y(1.5)45 b(Base)15 b(do)q(cumen)o(ts)f @F13 @sf(:)22 b(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)83 b @F14 @sf(5)-1582 58 y(1.6)45 b(De\014nitions)
15 b(of)f(terms)d @F13 @sf(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)83 b 
@F14 @sf(5)-1582 58 y(1.7)45 b(Compliance)30 b @F13 @sf(:)22 b(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)83 b @F14 @sf(6)-1582 58 y(1.8)45 b
(F)l(uture)15 b(directions)29 b @F13 @sf(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)83 b @F14 @sf(8)-1651 104 y @F9 @sf(2)43 b(ENVIR)o(ONMENT)1141 b
(9)-1581 58 y @F14 @sf(2.1)45 b(Conceptual)15 b(mo)q(dels)26 b @F13 @sf(:)d
(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)83 b @F14 @sf(9)-1478 58 y(2.1.1)51 b
(T)l(ranslatio)o(n)14 b(en)o(vironmen)o(t)k @F13 @sf(:)k(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)83 b @F14 @sf
(9)-1478 58 y(2.1.2)51 b(Execution)15 b(en)o(vironmen)o(ts)27 b @F13 @sf
(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)60 b @F14 @sf(11)-1582 58 y(2.2)45 b(En)o(vironmen)o(tal)14 b
(considerations)27 b @F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(13)-1478 58 y
(2.2.1)51 b(Character)14 b(sets)43 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)60 b @F14 @sf(13)-1478 58 y(2.2.2)51 b(Character)14 b(displa)o(y)g
(seman)o(tics)19 b @F13 @sf(:)j(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(16)-1478 58 y(2.2.3)51 b(Signals)
14 b(and)h(in)o(terrupts)32 b @F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(16)
-1478 57 y(2.2.4)51 b(En)o(vironmen)o(tal)13 b(limits)i @F13 @sf(:)23 b(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)60 b @F14 @sf(17)-1651 105 y @F9 @sf(3)43 b(LANGUA)o(GE)1222 b
(19)-1581 58 y @F14 @sf(3.1)45 b(Lexical)15 b(Elemen)o(ts)31 b @F13 @sf(:)
22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(19)-1478 58 y
(3.1.1)51 b(Keyw)o(ords)28 b @F13 @sf(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)60 b @F14 @sf(19)-1478 57 y(3.1.2)51 b(Iden)o(ti\014ers)26 b 
@F13 @sf(:)c(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(19)-1478 
58 y(3.1.3)51 b(Constan)o(ts)23 b @F13 @sf(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)60 b @F14 @sf(28)-1478 58 y(3.1.4)51 b(String)14 b(literals)22 b 
@F13 @sf(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(31)-1478 58 y
(3.1.5)51 b(Op)q(erators)24 b @F13 @sf(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)60 b @F14 @sf(32)-1478 58 y(3.1.6)51 b(Punctuators)14 b @F13 @sf(:)
23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(33)-1478 58 y(3.1.7)
51 b(Header)15 b(names)g @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(33)-1478 58 y(3.1.8)51 b(Prepro)q(cessing)15 b(n)o(um)o(b)q(ers)g 
@F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(33)-1478 58 y(3.1.9)51 b(Commen)o(ts)
11 b @F13 @sf(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(33)-1582 58 y(3.2)45 b(Con)o(v)o(ersions)25 b @F13 @sf(:)d(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(34)-1478 58 y(3.2.1)51 b
(Arithmetic)14 b(op)q(erands)26 b @F13 @sf(:)d(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(34)-832 124 y(i)-944 b
1 @eop1

2 @bop0
/@F10 @newfont
@F10 @sf
[<
003F000001C0E0000300100006000C000E0002001C0002003C0001003C0000807800008078
00008078000040F8000000F8000000F8000000F8000000F80000007C0000007C0000007C00
00007C0000003C0000003E0000201E0000301F0000300F000030078000300780003003C000
7001E00078007000F800380138000E06180001F808>
. 29 33 -5 31 33] 67 @dc
[<
00FE000003C3C0000700F0000E0038001E001C003C001E003C000F007C000780780007C078
0003C0780003E0F80003E0F80001F0F80001F0F80001F0F80001F07C0000F87C0000F87C00
00F87C0000F83C0000F83E0000F81E0000F81E0000F00F0000F00F0000F0078000E003C001
E001C001C000E0038000380700001E0E000003F800>
. 29 33 -5 31 35] 79 @dc
[<
FFE00100000F00010000060003000006000380000200078000020007800002000F80000200
0F800002000F800001001E400001001E400001003C400001003C400001007C400001007840
0000807820000080F020000080F020000081E020000081E020000083C020000043C0100000
43C0100000478010000047801000004F001000004F001000003E001800003E001800003E00
3E0007FC01FFC0>
. 34 31 -2 30 34] 78 @dc
[<
7FFFE00001F8000000F0000000780000007800000078000000780000007800000078000000
3C0000003C0000003C0000003C0000003C0000003C0000001E0000001E0000001E0000001E
0000001E0000001E0000800F0010800F0010800F0010C00F0010400F0010400F0010600780
30300780303C0780F03FFFFFF0>
. 28 31 -6 30 33] 84 @dc
[<
FFFFFF80078007C0078001C003C000C003C0006003C0002003C0002003C0001003C0001001
E0001001E0000801E0200001E0200001E0200001E0200000F0700000FFF00000F0300000F0
100000F0100000F01000007808080078000800780008007800080078000800780018003C00
18003C0038007C007807FFFFF8>
. 29 31 -2 30 31] 69 @dc
[<
81F800C60C00F80300E003806001806000C04000E04000E04000E04000E00000F00000F000
00E00001E00007E0007FE001FFC003FF8007FE000FE0000F80000F00000E00000E00080E00
080E000806000807001803001C03801C01803C0060CC003F04>
. 22 33 -3 31 25] 83 @dc
@F14 @sf
[<
03F0000E1C001C0E00180600380700780780700380700380700380F003C0F003C0F003C0F0
03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07003807003807003
807003803807001806001C0E000E1C0003F000>
. 18 31 -2 29 23] 48 @dc
@F14 @sf
[<
000FC000003820000070180000E0080001C0040001C0020003800200038002000780010007
80010007800100078001000780010007800100078001000780010007800100078001000780
01000780010007800100078001000780010007800100078001000780010007800100078001
0007800100078003800FC007C0FFFC3FF8>
. 29 32 -2 30 34] 85 @dc
@F14 @sf
[<
FFE0C1FFF81F00C01F800E00C00F000401E00F000401E00F000401E00F000403900F000403
900F000407080F000407080F000407080F00040E040F00040E040F00040E040F00041C020F
00041C020F00041C020F000438010F000438010F000438010F000470008F000470008F0004
70008F0004E0004F0004E0004F0005C0002F0005C0002F0005C0002F000780001F000F8000
1F80FF80001FF8>
. 37 31 -2 30 42] 77 @dc
@F14 @sf
[<
003FF800038000038000038000038000038000038000038000038003E3800E13801C0B8038
0780380380780380700380F00380F00380F00380F00380F00380F003807003807803803803
803C07801C058006198003E080>
. 21 29 -2 19 24] 113 @dc
@F14 @sf
[<
FFE001001F0003000E000300040007000400070004000F0004001F0004001F0004003D0004
003D00040079000400F1000400F1000401E1000401E1000403C1000407810004078100040F
0100040F0100041E0100043C0100043C0100047801000478010004F0010005E0010005E001
0007C0038007C007C0FF803FF8>
. 29 31 -2 30 34] 78 @dc
@F14 @sf
[<
FFC0FFC0>
. 10 2 -1 10 15] 45 @dc
@F14 @sf
[<
40201010080804040474FCFCF870>
. 6 14 -4 4 13] 44 @dc
[<
FFCFF80E03E00E03C00E03800E07800E07000E0E000E1E000E1C000F38000EF8000E70000E
30000E10000E08000E04000E02000E03000E03C00E0FF00E00000E00000E00000E00000E00
000E00000E00000E00000E00000E0000FE00000E0000>
. 21 32 -1 31 24] 107 @dc
@F14 @sf
[<
0F800030E000407000407800F03800F83C00F83C00F83C00203C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
00003C00003C00003C00003C00003C00007C000FFFC0>
. 18 32 -2 30 23] 74 @dc
@F14 @sf
[<
3F006180F0C0F0606070007000700070007000700070007000700070007000700070007000
70007000700070007000700070007000F007F0007000000000000000000000000000E001F0
01F001F000E0>
. 12 40 2 30 14] 106 @dc

2 @eop0

0 0 2 @bop1 112 50 a @F14 @sf(ii)1366 b @F10 @sf(CONTENTS)-1477 145 y 
@F14 @sf(3.2.2)51 b(Other)15 b(op)q(erands)20 b @F13 @sf(:)j(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)60 b @F14 @sf(36)-1582 57 y(3.3)45 b(Expressions)30 b 
@F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(38)-1478 56 y(3.3.1)51 b(Primary)14 b(expressions)34 b @F13 @sf(:)23 b(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)60 b @F14 @sf(40)-1478 57 y(3.3.2)51 b(P)o(ost\014x)14 b(op)q
(erators)26 b @F13 @sf(:)c(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(41)-1478 56 y
(3.3.3)51 b(Unary)15 b(op)q(erators)39 b @F13 @sf(:)22 b(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)60 b @F14 @sf(43)-1478 57 y(3.3.4)51 b(Cast)14 b(op)q(erators)36 b 
@F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(44)-1478 57 y(3.3.5)
51 b(Multiplica)o(tiv)n(e)14 b(op)q(erators)28 b @F13 @sf(:)22 b(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(45)-1478 56 y(3.3.6)51 b(Additiv)o(e)14 b(op)q(erators)28 b 
@F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(45)-1478 57 y(3.3.7)51 b(Bit)o
(wise)14 b(shift)g(op)q(erators)22 b @F13 @sf(:)g(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(46)-1478 56 y(3.3.8)51 b(Relational)13 b(op)q(erators)31 b @F13 @sf(:)23 b
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)60 b @F14 @sf(47)-1478 57 y(3.3.9)51 b(Equalit)o(y)13 b(op)q
(erators)30 b @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(47)-1478 57 y
(3.3.10)28 b(Bit)o(wise)14 b(AND)h(op)q(erator)24 b @F13 @sf(:)e(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)60 b @F14 @sf(47)-1478 56 y(3.3.11)28 b(Bit)o(wise)14 b(exclusiv)o(e)h
(OR)h(op)q(erator)43 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(47)-1478 57 y(3.3.12)28 b(Bit)o
(wise)14 b(inclusiv)o(e)g(OR)i(op)q(erator)f @F13 @sf(:)22 b(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(47)
-1478 56 y(3.3.13)28 b(Logical)14 b(AND)h(op)q(erator)27 b @F13 @sf(:)22 b
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)60 b @F14 @sf(47)-1478 57 y(3.3.14)28 b(Logical)14 b(OR)i(op)q
(erator)25 b @F13 @sf(:)e(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(47)-1478 57 y(3.3.15)
28 b(Conditional)o 14 x(op)q(erator)19 b @F13 @sf(:)k(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(47)-1478 56 y(3.3.16)28 b(Assignmen)o(t)14 b(op)q(erators)39 b 
@F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(48)-1478 57 y(3.3.17)28 b(Comma)14 b
(op)q(erator)27 b @F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(49)
-1582 56 y(3.4)45 b(Constan)o(t)14 b(Expressions)46 b @F13 @sf(:)23 b(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(49)-1582 57 y(3.5)45 b(Declarations)
14 b @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(50)-1478 57 y(3.5.1)51 b(Storage-class)13 b(sp)q(eci\014ers)23 b 
@F13 @sf(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(51)-1478 56 y(3.5.2)51 b(T)o(yp)q(e)
15 b(sp)q(eci\014ers)34 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(51)-1478 57 y(3.5.3)51 b(T)o(yp)q(e)15 b(quali\014ers)33 b @F13 @sf
(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(52)-1478 56 y(3.5.4)51 b
(Declarator)o(s)30 b @F13 @sf(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(54)-1478 57 y(3.5.5)51 b(T)o(yp)q(e)15 b(names)i @F13 @sf(:)23 b
(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(57)-1478 56 y(3.5.6)51 b
(T)o(yp)q(e)15 b(de\014nitions)43 b @F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(57)-1478 57 y(3.5.7)51 b(Initializat)o(ion)39 b @F13 @sf(:)22 b
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(57)-1582 57 y(3.6)45 b
(Statemen)o(ts)c @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)60 b @F14 @sf(58)-1478 56 y(3.6.1)51 b(Lab)q(eled)16 b
(statemen)o(ts)e @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(58)-1478 
57 y(3.6.2)51 b(Comp)q(ound)15 b(statemen)o(t,)f(or)h(blo)q(c)o(k)29 b 
@F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)60 b @F14 @sf(58)-1478 56 y(3.6.3)51 b(Expression)14 b(and)i(n)o(ull)e
(statemen)o(ts)25 b @F13 @sf(:)e(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(58)-1478 57 y(3.6.4)51 b(Selection)
15 b(statemen)o(ts)28 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(59)-1478 
57 y(3.6.5)51 b(Iteration)14 b(statemen)o(ts)32 b @F13 @sf(:)23 b(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)60 b @F14 @sf(59)-1478 56 y(3.6.6)51 b(Jump)16 b(statemen)o(ts)23 b 
@F13 @sf(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(59)-1582 57 y(3.7)45 b
(External)15 b(de\014nitions)d @F13 @sf(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)60 b @F14 @sf(60)-1478 56 y(3.7.1)51 b(F)l(unction)15 b(de\014nitions)
40 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(60)-1478 57 y(3.7.2)51 b
(External)14 b(ob)s(ject)h(de\014nitions)d @F13 @sf(:)23 b(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(61)-1582 57 y(3.8)45 b(Prepro)q(cessing)15 b(directiv)o(es)35 b @F13 @sf
(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(61)-1478 56 y(3.8.1)51 b
(Conditional)o 14 x(inclusion)13 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(62)-1478 57 y(3.8.2)51 b(Source)15 b(\014le)g(inclusion)41 b @F13 @sf(:)
23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(63)-1478 56 y(3.8.3)51 b(Macro)14 b
(replacemen)o(t)21 b @F13 @sf(:)h(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(64)-1478 
57 y(3.8.4)51 b(Line)15 b(con)o(trol)j @F13 @sf(:)23 b(:)f(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)60 b @F14 @sf(68)-1478 57 y(3.8.5)51 b(Error)14 b(directiv)o
(e)37 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(68)-1763 124 y
2 @eop1

3 @bop0
@F9 @sf
[<
00FFFE00FFFE0007C00007C00007C00007C00007C00007C0FFFFFEFFFFFEE003C07003C038
03C01803C00C03C00E03C00703C00383C00183C000C3C00063C00073C0003BC0001FC0000F
C00007C00007C00003C00001C0>
. 23 29 -1 28 26] 52 @dc
[<
FFFFFF00FFFFFFE007C007F007C003F807C001FC07C000FC07C000FE07C000FE07C000FE07
C000FE07C000FE07C000FC07C001FC07C001F807C003F007FFFFC007FFFF8007C00FE007C0
07F007C003F807C001F807C001FC07C001FC07C001FC07C001FC07C001FC07C001F807C003
F007C007E0FFFFFFC0FFFFFE00>
. 31 31 -2 30 37] 66 @dc
[<
001FFFE000001FFFE0000000FC00000000FC00000000FC00000000FC00000000FC00000000
FC00000000FC00000000FC00000000FC00000000FC00000000FC00000001FC00000001FE00
000003FF00000007F30000000FE18000000FE1C000001FC0C000003F806000003F80700000
7F00300000FE00180001FC001C0001FC000C0003F800060007F000070007F0000380FFFE00
3FF8FFFE003FF8>
. 37 31 -1 30 40] 89 @dc
[<
00C00001E00003F00003F00003F00003F00003F00003F00001F00001F00001F00001F00000
F00000F000007000007800003800003800001800000C00C00600C00300C00300E001807FFF
C07FFFE07FFFF07FFFF87FFFF8600000>
. 21 30 -3 29 26] 55 @dc
/@F8 @newfont
@F8 @sf
[<
000300000780001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000FC
00007E00003F00001FC00007E00003F00001FC00007E00003F00001F80000780000300>
. 17 24 -3 25 24] 60 @dc
[<
01FC0007FF001FFF803E03C03801C07001C0700000E00000FFFFC0FFFFC0FFFFC0E001C0E0
01C07003807003803807803E0F001FFE0007FC0001F000>
. 18 20 -3 19 24] 101 @dc
[<
7FFE00FFFF007FFE0003800003800003800003800003800003800003800003800003800003
C00003C00003E00003F03003F8787FBFF8FF9FF07F87E0>
. 21 20 -1 19 24] 114 @dc
[<
7FC3FCFFE7FE7FC3FC0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00F00E00F80E00FC1C07FFFC0FEFF807E3E00>
. 23 20 0 19 24] 110 @dc
[<
01F0000FFE001FFF003E0F803C07807803C07001C0F001E0E000E0E000E0E000E0E000E0E0
00E07001C07001C03803803E0F801FFF000FFE0001F000>
. 19 20 -2 19 24] 111 @dc
[<
3078FCFC7830>
. 6 6 -9 5 24] 46 @dc
[<
7FC3FCFFE7FE7FC3FC0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00F00E00F80E00FC1C00FFFC00EFF800E3E000E00000E00000E00000E00000E00
007E0000FE00007E0000>
. 23 28 0 27 24] 104 @dc
[<
600000F00000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F8000
1F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000F00000600000>
. 17 24 -3 25 24] 62 @dc
@F8 @sf
[<
7FFF007FFF007FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C000FFFFC0FFFFC07FFFC001C00001C00001C00001C0C000E1
E000FFE0007FC0001F80>
. 19 28 -1 27 24] 102 @dc
[<
7FFFC0FFFFE07FFFC000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
007FE000FFE0007FE000>
. 19 28 -2 27 24] 108 @dc
[<
07E1F01FFBF03FFFF0781F00F00F00E00700E00700E007007807007F07001FFF0007FF0000
FF00000700000700300E00781E007FFC003FF8001FE000>
. 20 20 -3 19 24] 97 @dc
[<
003E0000FF8001FFC001C1C00380E00380E00380E003804003800003800003800003800003
8000038000038000038000038000FFFFC0FFFFC07FFFC00380000380000380000380000180
00>
. 19 25 -1 24 24] 116 @dc
@F8 @sf
[<
FFFF00FFFF80FFFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C0007FC000FFC0007FC0000000000000000000000000000380
0007C00007C00007C000038000>
. 17 29 -4 28 24] 105 @dc
[<
7F1F1F00FFBFBF807F1F1F001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C
1C1C001C1C1C001C1C1C001C1C1C001C1C1C001E1E1C001E1E1C001F1F1C007FFFF800FFFB
F8007CE0E000>
. 25 20 1 19 24] 109 @dc
[<
E7F000FFFC00FFFF00F80F00F00380E00380E00380600780001F0003FE001FFC007FE0007C
0000E00700E00700E00700780F007FFF003FFF0007F700>
. 17 20 -3 19 24] 115 @dc
@F8 @sf
[<
03E3F00FFBF81FFFF03C1F80380F80700780700780E00380E00380E00380E00380E00380E0
0380700380700780380F803C1F801FFF800FFB8003E3800003800003800003800003800003
80001F80003F80001F80>
. 21 28 -2 27 24] 100 @dc
@F8 @sf
[<
01FC0007FF001FFF803E03C03801C07001C0700000E00000E00000E00000E00000E00000E0
00007000007000003803003E07801FFF8007FF0001FE00>
. 18 20 -3 19 24] 99 @dc
[<
1E00003F00007F80007BC00079E00000E00000F00000700000700000700000780000780000
780000DC0000CC0000CC0001CE0001CE00038E000386000387000707000707000703800E03
800E03800E01C07F8FF0FF8FF87F8FF0>
. 21 30 -1 19 24] 121 @dc
[<
7FC000FFE0007FC0000E00000E00000E00000E00000E00000E00000E00000E3E000EFF800F
FFC00FC1E00F80E00F00700F00700E00380E00380E00380E00380E00380E00380E00700F00
700F80E00FC1E07FFFC0FEFF807E3E00>
. 21 30 0 19 24] 112 @dc
@F8 @sf
[<
3F807FE0FFF0F0786038001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C0FFC1FFC0FFC00000000000000000038007C007C
007C0038>
. 14 39 -2 28 24] 106 @dc
@F8 @sf
[<
01FC000FFF801FFFC07E03F07800F0E00038E00038E00038E000387000707801F03FFFE01F
FFC01FFE001C000038000039E0001FF8001FFC001E1E001C0E003807003807003807003807
003807001C0E001E1E300FFFF807FFF801E1F0>
. 21 31 -1 19 24] 103 @dc
@F14 @sf
[<
000100000003800000038000000380000007C0000007C0000007C000000F2000000F200000
1F3000001E1000001E1000003C0800003C0800003C0800007804000078040000F8060000F0
020000F0020001F0010001E0010001E0010003C0008003C0008003C0008007800040078000
400F8000600F0000601F8000F8FFF003FE>
. 31 32 -1 30 34] 86 @dc
@F14 @sf
[<
C000C000C0006000600060003000300030001800180018000C000C000C0006000600060003
000300030001800180018000C000C000C0006000600060003000300030001800180018000C
000C000C000600060006000300030001>
. 16 45 -3 33 23] 47 @dc
/@F15 @newfont
@F15 @sf
[<
000007C0FFF01C200F801C100F003C1007803C0807803C0007803C0007803C0007803C0007
803C0003C01E0003C01C0003C03C0003C0380003C0700003FFE00001E03C0001E00E0001E0
070001E0038001E003C001E003C000F001E000F001E000F001C000F003C000F0078000F80E
000FFFF800>
. 29 29 -2 27 31] 82 @dc
[<
FF80FFF01E001F0004000F0004000F0002000F0002001E0001001E0001001E0000801E0000
FFFE0000403E0000403C0000203C0000203C0000103C0000183C0000087C00000C78000004
78000006780000027800000378000001F0000000F0000000F0000000700000007000000030
0000002000>
. 28 29 -1 28 31] 65 @dc
[<
1FFFE000007C000000780000003C0000003C0000003C0000003C0000003C0000003C000000
1E0000001E0000001E0000001E0000001E0000001E0000000F0000000F0000000F0000000F
0000800F0020400F002040078020400780206007802020078020300780303C07C0F01FFFFF
F0>
. 28 28 -4 27 30] 84 @dc
[<
FFF8000F80000F000007800007800007800007800007800007800003C00003C00003C00003
C00003C00003C00001E00001E00001E00001E00001E00001E00000F00000F00000F00000F0
0000F00000F8000FFF80>
. 17 28 -1 27 15] 73 @dc
[<
00FE0000038380000E00E0001C0038003C001C0038001E0078000F007000070070000780F0
0003C0F00003C0F00003C0F00001E0F00001E0F00001E0F00001E0780000F0780000F07800
00F0380000E03C0000E01C0000E01E0001E00E0001C0070001C00380038001C0030000E00E
0000381C000007F000>
. 28 30 -4 28 32] 79 @dc
[<
FF8004001E0004000C000C0004000E0004001E0004001E0004003E0004003E0004007E0002
0079000200F9000200F1000200F1000201E1000201E1000103C0800103C080010780800107
8080010F0080010F0080009E0040009E004000BE004000BC004000FC006000F800F00FF807
FE>
. 31 28 -2 27 31] 78 @dc
[<
FFFFF00F00F00F003807801807800807800807800407800407800403C00403C00003C00003
C00003C00003C00001E00001E00001E00001E00001E00001E00000F00000F00000F00000F0
0000F00000F8000FFFC0>
. 22 28 -2 27 26] 76 @dc
[<
FFFFFC000F003E000F000E0007800600078003000780010007800100078000800780008003
C0808003C0800003C0800003C0800003C1800003FF800001E1C00001E0C00001E0400001E0
400001E0404001E0004000F0004000F0004000F0004000F0004000F000E000F801E00FFFFF
E0>
. 27 28 -2 27 28] 69 @dc

3 @eop0

0 0 3 @bop1 112 50 a @F10 @sf(CONTENTS)1355 b @F14 @sf(iii)-1479 145 y
(3.8.6)51 b(Pragma)14 b(directiv)o(e)25 b @F13 @sf(:)d(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)60 b @F14 @sf(68)-1478 57 y(3.8.7)51 b(Null)14 b(directiv)o(e)25 b 
@F13 @sf(:)d(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(68)-1478 57 y
(3.8.8)51 b(Prede\014ned)16 b(macro)f(names)20 b @F13 @sf(:)i(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(68)-1582 57 y(3.9)45 b(F)l(uture)15 b(language)g(directions)h 
@F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(69)-1478 56 y(3.9.1)51 b
(External)14 b(names)19 b @F13 @sf(:)k(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(69)-1478 57 y(3.9.2)51 b(Character)14 b(escap)q(e)i(sequences)32 b @F13 @sf
(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)60 b @F14 @sf(69)-1478 57 y(3.9.3)51 b(Storage-class)13 b(sp)q(eci\014ers)
23 b @F13 @sf(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(69)-1478 57 y(3.9.4)51 b(F)l
(unction)15 b(declarators)26 b @F13 @sf(:)d(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(69)
-1478 57 y(3.9.5)51 b(F)l(unction)15 b(de\014nitions)40 b @F13 @sf(:)23 b
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)60 b @F14 @sf(69)-1478 57 y(3.9.6)51 b(Arra)o(y)14 b
(parameters)g @F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(69)-1651 
102 y @F9 @sf(4)43 b(LIBRAR)l(Y)1287 b(71)-1581 57 y @F14 @sf(4.1)45 b(In)o
(tro)q(duction)14 b @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)60 b @F14 @sf(71)-1478 57 y(4.1.1)51 b(De\014nitions)14 b(of)h
(terms)42 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(71)-1478 57 y(4.1.2)
51 b(Standard)15 b(headers)k @F13 @sf(:)j(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(71)-1478 57 y(4.1.3)51 b(Errors)14 b @F8 @sf(<errno.h>)44 b @F13 @sf(:)
22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(73)-1478 57 y(4.1.4)51 b(Limits)14 b 
@F8 @sf(<float.h>)g @F14 @sf(and)h @F8 @sf(<limits.h>)j @F13 @sf(:)k(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(73)-1478 
56 y(4.1.5)51 b(Common)14 b(de\014nitions)h @F8 @sf(<stddef.h>)29 b @F13 @sf
(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(74)-1478 57 y(4.1.6)51 b(Use)15 b(of)g(library)f(functions)38 b 
@F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(75)-1582 57 y(4.2)45 b(Diagnostics)14 b 
@F8 @sf(<assert.h>)28 b @F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(76)-1478 57 y(4.2.1)51 b(Program)13 b(diagnostics)29 b @F13 @sf(:)23 b(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)60 b @F14 @sf(76)-1582 57 y(4.3)45 b(Character)15 b(Handling)f 
@F8 @sf(<ctype.h>)28 b @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(76)-1478 57 y
(4.3.1)51 b(Character)14 b(testing)g(functions)35 b @F13 @sf(:)22 b(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(77)-1478 57 y(4.3.2)51 b(Character)14 b(case)h(mapping)g(functions)42 b 
@F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(78)-1582 56 y(4.4)45 b(Lo)q(calization)14 b @F8 @sf(<locale.h>)g 
@F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(78)-1478 57 y(4.4.1)51 b
(Lo)q(cale)15 b(con)o(trol)d @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)60 b @F14 @sf(80)-1478 57 y(4.4.2)51 b(Numeric)15 b(formatti)o(ng)f
(con)o(v)o(en)o(tion)g(inquiry)46 b @F13 @sf(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(80)-1582 57 y(4.5)45 b(Mathematics)14 b 
@F8 @sf(<math.h>)d @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(80)-1478 57 y(4.5.1)51 b(T)l(reatmen)o(t)14 b(of)h(error)f(conditions)24 b 
@F13 @sf(:)e(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)60 b @F14 @sf(81)-1478 57 y(4.5.2)51 b(T)l(rigonometri)o(c)14 b
(functions)31 b @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(82)-1478 56 y(4.5.3)51 b
(Hyp)q(erb)q(olic)15 b(functions)22 b @F13 @sf(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(83)-1478 57 y(4.5.4)51 b(Exp)q(onen)o(tial)14 b(and)h(logarithmic)e
(functions)26 b @F13 @sf(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)60 b @F14 @sf(83)-1478 57 y(4.5.5)51 b(P)o(o)o(w)o(er)14 b(functions)e 
@F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(83)-1478 57 y(4.5.6)
51 b(Nearest)14 b(in)o(teger,)g(absolute)h(v)m(alue,)g(and)g(remainder)g
(functions)20 b @F13 @sf(:)j(:)f(:)60 b @F14 @sf(84)-1582 57 y(4.6)45 b
(Nonlo)q(cal)15 b(jumps)g @F8 @sf(<setjmp.h>)h @F13 @sf(:)23 b(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)60 b @F14 @sf(84)-1478 57 y(4.6.1)51 b(Sa)o(v)o(e)14 b(calling)g(en)o
(vironmen)o(t)46 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(85)-1478 57 y(4.6.2)51 b
(Restore)15 b(calling)f(en)o(vironmen)o(t)21 b @F13 @sf(:)h(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(85)
-1582 56 y(4.7)45 b(Signal)15 b(Handling)f @F8 @sf(<signal.h>)45 b @F13 @sf
(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)60 b @F14 @sf(86)-1478 57 y(4.7.1)51 b(Sp)q(ecify)15 b
(signal)g(handling)d @F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(86)-1478 57 y
(4.7.2)51 b(Send)16 b(signal)32 b @F13 @sf(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)60 b @F14 @sf(87)-1582 57 y(4.8)45 b(V)l(ariable)15 b(Argumen)o
(ts)f @F8 @sf(<stdarg.h>)35 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(87)-1478 57 y
(4.8.1)51 b(V)l(ariable)14 b(argumen)o(t)g(list)h(access)g(macros)20 b 
@F13 @sf(:)j(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(87)-1582 57 y(4.9)45 b(Input/Output)16 b @F8 @sf(<stdio.h>)36 b @F13 @sf
(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(88)-1478 57 y(4.9.1)51 b(In)o(tro)q
(duction)45 b @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(89)-252 124 y @F15 @sf(RA)m(TIONALE)-1763 b
3 @eop1

4 @bop0
@F14 @sf
[<
000FE0000078182000E00460038002E0070001E00F0001E01E0001E01E0001E03C0001E03C
0001E07C0001E0780001E0F80003E0F8007FFCF8000000F8000000F8000000F8000000F800
0000F8000000F8000000780000207C0000203C0000203C0000601E0000601E0000600F0000
E0070001E0038002E000E004E000781860000FE020>
. 30 33 -3 31 36] 71 @dc
@F8 @sf
[<
063E000EFF800FFFC00FC1E00F80E00F00700F00700E00380E00380E00380E00380E00380E
00380E00700F00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00
007E0000FE00007E0000>
. 21 28 0 27 24] 98 @dc
@F9 @sf
[<
07F0001FFC00381F00600F80780FC0FC07C0FC07E0FC07E0FC07E07807E00007E00007E000
07C01007C0380F803C1F0037FE0033F8003000003000003000003000003F80003FF0003FFC
003FFE003FFF003FFF80380380>
. 19 29 -3 28 26] 53 @dc
[<
FFFF0000FFFF000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007
E0000007E0000007E0000007E0000007E0000007FFFE0007FFFF8007E00FE007E003F007E0
01F807E001F807E001FC07E001FC07E001FC07E001FC07E001FC07E001F807E001F807E003
F007E00FE0FFFFFF80FFFFFE00>
. 30 31 -2 30 36] 80 @dc
[<
81FF00E7FFC0FE01E0F80070E00078E00038C0003CC0003CC0003C00003C00007C0000FC00
07F800FFF807FFF00FFFF01FFFE03FFF807FFE007FC000FC0000F80000F00018F00018F000
387000387000783800F81E03F80FFF3803FC08>
. 22 31 -3 30 29] 83 @dc
[<
FFF00FFFE0FFF00FFFE0070000FE00030001FC00018003F80000C003F80000E007F0000070
0FE00000300FC00000181FC000001C3F8000000E7F000000067E00000003FE00000003FC00
000003F800000003F800000007F00000000FF00000000FF80000001FD80000003F8C000000
7F060000007E07000000FE03800001FC01800003F800C00003F800E00007F0007000FFFE07
FF80FFFE07FF80>
. 35 31 -2 30 40] 88 @dc

4 @eop0

0 0 4 @bop1 112 50 a @F14 @sf(iv)1355 b @F10 @sf(CONTENTS)-1477 145 y 
@F14 @sf(4.9.2)51 b(Streams)28 b @F13 @sf(:)22 b(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(90)-1478 57 y(4.9.3)51 b(Files)23 b 
@F13 @sf(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf
(91)-1478 56 y(4.9.4)51 b(Op)q(erations)15 b(on)g(\014les)27 b @F13 @sf(:)
22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(92)-1478 56 y(4.9.5)51 b(File)14 b
(access)h(functions)30 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(93)
-1478 57 y(4.9.6)51 b(F)l(ormatted)14 b(input/output)g(functions)37 b 
@F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b 
@F14 @sf(95)-1478 56 y(4.9.7)51 b(Character)14 b(input/output)h(functions)d 
@F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)
60 b @F14 @sf(97)-1478 57 y(4.9.8)51 b(Direct)14 b(input/output)h
(functions)g @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(98)-1478 56 y(4.9.9)51 b(File)14 b(p)q
(ositioning)g(functions)36 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)60 b @F14 @sf(99)-1478 57 y
(4.9.10)28 b(Error-handling)14 b(functions)i @F13 @sf(:)22 b(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b 
@F14 @sf(100)-1582 56 y(4.10)22 b(General)15 b(Utiliti)o(es)f @F8 @sf
(<stdlib.h>)34 b @F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(100)-1478 57 y
(4.10.1)28 b(String)14 b(con)o(v)o(ersion)g(functions)39 b @F13 @sf(:)22 b
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b 
@F14 @sf(100)-1478 56 y(4.10.2)28 b(Pseudo-random)15 b(sequence)h
(generation)f(functions)f @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)
37 b @F14 @sf(101)-1478 57 y(4.10.3)28 b(Memory)14 b(managemen)o(t)g
(functions)21 b @F13 @sf(:)i(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(101)-1478 56 y(4.10.4)28 b(Comm)o
(unicatio)o(n)14 b(with)h(the)g(en)o(vironmen)o(t)31 b @F13 @sf(:)22 b(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(102)-1478 56 y
(4.10.5)28 b(Searc)o(hing)15 b(and)g(sorting)f(utiliti)o(es)i @F13 @sf(:)
22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b 
@F14 @sf(104)-1478 57 y(4.10.6)28 b(In)o(teger)15 b(arithmetic)f
(functions)22 b @F13 @sf(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(104)-1478 56 y(4.10.7)28 b
(Multib)o(yte)14 b(c)o(haracter)g(functions)22 b @F13 @sf(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(105)
-1478 57 y(4.10.8)28 b(Multib)o(yte)14 b(string)g(functions)20 b @F13 @sf
(:)j(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)37 b @F14 @sf(105)-1582 56 y(4.11)22 b(STRING)16 b(HANDLING)g @F8 @sf
(<string.h>)23 b @F13 @sf(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(105)-1478 57 y(4.11.1)28 b
(String)14 b(function)h(con)o(v)o(en)o(tions)32 b @F13 @sf(:)22 b(:)g(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf
(105)-1478 56 y(4.11.2)28 b(Cop)o(ying)14 b(functions)40 b @F13 @sf(:)22 b
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(106)-1478 57 y(4.11.3)28 b(Concatenation)
14 b(functions)22 b @F13 @sf(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(106)-1478 56 y
(4.11.4)28 b(Comparison)14 b(functions)37 b @F13 @sf(:)22 b(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b 
@F14 @sf(107)-1478 57 y(4.11.5)28 b(Searc)o(h)15 b(functions)39 b @F13 @sf
(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(107)-1478 56 y(4.11.6)28 b
(Miscellaneous)14 b(functions)38 b @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(108)
-1582 56 y(4.12)22 b(D)o(A)l(TE)15 b(AND)g(TIME)g @F8 @sf(<time.h>)27 b 
@F13 @sf(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(108)-1478 57 y(4.12.1)28 b(Comp)q
(onen)o(ts)15 b(of)f(time)32 b @F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf
(108)-1478 56 y(4.12.2)28 b(Time)14 b(manipulation)g(functions)35 b @F13 @sf
(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)
37 b @F14 @sf(108)-1478 57 y(4.12.3)28 b(Time)14 b(con)o(v)o(ersion)h
(functions)20 b @F13 @sf(:)j(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(110)-1582 56 y(4.13)22 b(F)l
(uture)15 b(library)f(directions)23 b @F13 @sf(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b 
@F14 @sf(111)-1478 57 y(4.13.1)28 b(Errors)14 b @F8 @sf(<errno.h>)44 b 
@F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(111)-1478 56 y(4.13.2)28 b
(Character)14 b(handling)h @F8 @sf(<ctype.h>)32 b @F13 @sf(:)23 b(:)f(:)g
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(111)
-1478 57 y(4.13.3)28 b(Lo)q(calization)14 b @F8 @sf(<locale.h>)44 b @F13 @sf
(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h
(:)f(:)37 b @F14 @sf(111)-1478 56 y(4.13.4)28 b(Mathematics)13 b @F8 @sf
(<math.h>)43 b @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(111)-1478 57 y(4.13.5)28 b
(Signal)14 b(handling)h @F8 @sf(<signal.h>)f @F13 @sf(:)22 b(:)g(:)h(:)f
(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf
(111)-1478 56 y(4.13.6)28 b(Input/output)15 b @F8 @sf(<stdio.h>)44 b 
@F13 @sf(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)37 b @F14 @sf(111)-1478 56 y(4.13.7)28 b(General)14 b
(utilities)g @F8 @sf(<stdlib.h>)38 b @F13 @sf(:)22 b(:)h(:)f(:)g(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b @F14 @sf(111)-1478 57 y
(4.13.8)28 b(String)14 b(handling)h @F8 @sf(<string.h>)f @F13 @sf(:)22 b
(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)37 b 
@F14 @sf(111)-1651 102 y @F9 @sf(5)43 b(APPENDICES)1155 b(113)-1650 102 y
(INDEX)1397 b(115)-1762 265 y
4 @eop1

1 @bop0
/@F1 @newfont
@F1 @sf
[<
C0003FFC0000E003FFFF8000F01FFFFFE000F87FFFFFF800FCFFC007FC00FFFC0001FE00FF
F000007F00FFC000003F80FF0000001F80FE0000001FC0FC0000001FC0FC0000000FE0F800
00000FE0F80000000FE0F80000000FF0F00000000FF0F00000000FF0F00000001FF0F00000
001FF0700000001FF0000000003FF0000000007FF000000000FFF000000003FFE00000003F
FFE0000007FFFFC000007FFFFFC00007FFFFFF80003FFFFFFF80007FFFFFFF0001FFFFFFFE
0003FFFFFFFC0007FFFFFFF8000FFFFFFFF0001FFFFFFFC0003FFFFFFF00003FFFFFF80000
7FFFFF0000007FFFF00000007FFE00000000FFF800000000FFE000000780FFC000000780FF
8000000780FF8000000780FF0000000F80FF0000000F80FF0000000F807F0000001F807F00
00001F807F0000003F803F8000007F803F8000007F801FC00001FF800FE00003FF8007F000
0FFF8003FE00FF9F8001FFFFFF0F80007FFFFC0780001FFFF003800003FF800180>
. 44 61 -5 59 55] 83 @dc
[<
0000FFE0000007FFFC00003FFFFF0000FFC03FC001FF0007E003FE0001F007FC0000F80FF8
0000781FF000003C1FF000003C3FF000003C3FE00000007FE00000007FE00000007FE00000
00FFE0000000FFE0000000FFE0000000FFE0000000FFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFF
E00003FC7FE00003FC7FE00003FC7FE00003FC7FE00007F83FF00007F83FF00007F81FF000
07F00FF8000FF00FF8000FE007FC001FC001FE003F8000FF80FF00003FFFFE00000FFFF800
0001FFC000>
. 38 38 -3 37 45] 101 @dc
[<
0000FFC000000FFFFC00003FFFFF0000FFE01F8001FF8007C003FE0001E007FC0000F00FF8
0000F01FF80000781FF00000783FF00000003FF00000007FF00000007FE00000007FE00000
00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF
E00000007FE00000007FE00000007FE00007003FF0001FC03FF0003FE01FF0003FE01FF000
7FF00FF8007FF007FC007FF003FC007FF001FF003FE000FFC01FC0003FFFFF80000FFFFF00
0000FFF000>
. 37 38 -3 37 44] 99 @dc
[<
0001FF000007FF80001FFFC0003FE0E0007FC07000FFC07800FF807801FF803C01FF803C01
FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF800001FF800001FF800001FF
800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF80
0001FF800001FF800001FF800001FF800001FF800001FF8000FFFFFFF0FFFFFFF0FFFFFFF0
1FFFFFF007FF800001FF800000FF8000007F8000003F8000003F8000001F8000001F800000
0F8000000F8000000F8000000F80000007800000078000000780000007800000078000>
. 30 55 -2 54 39] 116 @dc
[<
FFFFF8FFFFF8FFFFF8FFFFF803FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003
FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
0003FF0003FF0003FF0003FF0003FF0003FF0003FF0007FF00FFFF00FFFF00FFFF00FFFF00
00FF0000000000000000000000000000000000000000000000000000000000000001F00007
FC000FFE000FFE001FFF001FFF001FFF001FFF001FFF000FFE000FFE0007FC0001F000>
. 21 61 -3 60 28] 105 @dc
[<
0001FFE00000000FFFFC0000003FFFFF000000FFC0FFC00003FE001FF00007FC000FF8000F
F80007FC000FF80007FC001FF00003FE003FF00003FF003FF00003FF007FE00001FF807FE0
0001FF807FE00001FF80FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE000
01FFC0FFE00001FFC0FFE00001FFC0FFE00001FFC0FFE00001FFC07FE00001FF807FE00001
FF807FE00001FF807FE00001FF803FE00001FF003FF00003FF001FF00003FE000FF00003FC
0007F80007F80007FC000FF80001FE001FE00000FFC0FFC000003FFFFF0000000FFFFC0000
0000FFC00000>
. 42 38 -3 37 50] 111 @dc
[<
FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF03FF0000FFC003FF0000FFC003
FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF
0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00
00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000
FFC003FF0000FFC003FF8000FFC003FF8000FFC003FF8000FFC003FEC000FFC003FEE000FF
C003FE6000FF8007FE3001FF80FFFE1C01FF00FFFE0F03FE00FFFE07FFFC00FFFE01FFF800
00FE007FC000>
. 48 38 -4 37 55] 110 @dc
[<
7FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFFFFC0000FFE0000000FFE0000000FFE0000000F
FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00
00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE
0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000
000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F
FE0000000FFE0000000FFE0000FFCFFE0000FFFFFE0000FFFFFE0000FFFFFE0000003FFE00
000003FE00000000FE000000003E000000001E0000>
. 34 56 -7 55 50] 49 @dc
@F2 @sf
[<
FFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE000FFFE000000FFFE000000F
FFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE0
00000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE00000
0FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFF
E000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000
000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000F
FFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE0
00000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE00000
0FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000000FFFE000FFFFFF
FFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE>
. 39 71 -3 70 45] 73 @dc
[<
FFFFFFF0000000000F0000FFFFFFF0000000001F8000FFFFFFF0000000003F8000FFFFFFF0
000000007F8000FFFFFFF000000000FF8000007FE00000000000FF8000001F800000000001
FF8000001F800000000003FF8000001F800000000007FF8000001F80000000000FFF800000
1F80000000001FFF8000001F80000000001FFF8000001F80000000003FFF8000001F800000
00007FFF8000001F8000000000FFFF8000001F8000000001FFFF8000001F8000000003FFFF
8000001F8000000003FFFF8000001F8000000007FFFF8000001F800000000FFFFF8000001F
800000001FFFFF8000001F800000003FFFFF8000001F800000007FFFDF8000001F80000000
7FFFDF8000001F80000000FFFF9F8000001F80000001FFFF1F8000001F80000003FFFE1F80
00001F80000007FFFC1F8000001F8000000FFFF81F8000001F8000000FFFF81F8000001F80
00001FFFF01F8000001F8000003FFFE01F8000001F8000007FFFC01F8000001F800000FFFF
801F8000001F800001FFFF001F8000001F800001FFFF001F8000001F800003FFFE001F8000
001F800007FFFC001F8000001F80000FFFF8001F8000001F80001FFFF0001F8000001F8000
3FFFE0001F8000001F80003FFFC0001F8000001F80007FFFC0001F8000001F8000FFFF8000
1F8000001F8001FFFF00001F8000001F8003FFFE00001F8000001F8007FFFC00001F800000
1F8007FFF800001F8000001F800FFFF800001F8000001F801FFFF000001F8000001F803FFF
E000001F8000001F807FFFC000001F8000001F80FFFF8000001F8000001F80FFFF0000001F
8000001F81FFFF0000001F8000001F83FFFE0000001F8000001F87FFFC0000001F8000001F
8FFFF80000001F8000001F9FFFF00000001F8000001F9FFFE00000001F8000001FBFFFE000
00001F8000001FFFFFC00000001F8000001FFFFF800000001F8000001FFFFF000000001F80
00001FFFFE000000001F8000001FFFFC000000007FE000FFFFFFFC000000FFFFFFF0FFFFFF
F8000000FFFFFFF0FFFFFFF0000000FFFFFFF0FFFFFFE0000000FFFFFFF0FFFFFFC0000000
FFFFFFF0>
. 84 71 -4 70 93] 78 @dc
[<
0003FFFFFFFFFFF800000003FFFFFFFFFFF800000003FFFFFFFFFFF800000003FFFFFFFFFF
F800000003FFFFFFFFFFF8000000000003FFF80000000000000003FFF80000000000000003
FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF80000000000
000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF80000
000000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FF
F80000000000000003FFF80000000000000003FFF80000000000000003FFF8000000000000
0003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF8000000
0000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF8
0000000000000003FFF80000000000000003FFF80000000000000003FFF800000000000000
03FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF800000000
00000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF800
00000000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003
FFF800000000F8000003FFF8000007C0F8000003FFF8000007C0F8000003FFF8000007C0F8
000003FFF8000007C0F8000003FFF8000007C0FC000003FFF800000FC07C000003FFF80000
0F807C000003FFF800000F807C000003FFF800000F807C000003FFF800000F807E000003FF
F800000F807E000003FFF800001F807E000003FFF800001F807F000003FFF800003F807F00
0003FFF800003F807F800003FFF800007F807FC00003FFF80000FF807FE00003FFF80001FF
807FF80003FFF80007FF803FFF0003FFF8003FFF003FFFFFFFFFFFFFFFFF003FFFFFFFFFFF
FFFFFF003FFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFF00>
. 74 70 -4 69 83] 84 @dc
[<
0000000000000000FFF000FFFFFFFFF000001FFFFC00FFFFFFFFF000007FFFFE00FFFFFFFF
F00001FFFFFF00FFFFFFFFF00003FFFC1F80FFFFFFFFF00007FFF007C0001FFF8000000FFF
E007E0001FFF8000001FFFE003E0001FFF8000003FFFC003F0001FFF8000003FFFC001F000
1FFF8000007FFFC001F0001FFF8000007FFFC001F0001FFF8000007FFF8001F0001FFF8000
007FFF8000E0001FFF8000007FFF800000001FFF8000007FFF800000001FFF8000007FFF80
0000001FFF8000007FFF800000001FFF8000007FFF800000001FFF8000007FFF000000001F
FF8000007FFF000000001FFF8000007FFF000000001FFF8000007FFF000000001FFF800000
7FFF000000001FFF8000007FFF000000001FFF8000007FFF000000001FFF8000007FFE0000
00001FFF800000FFFE000000001FFF800000FFFE000000001FFF800001FFFC000000001FFF
800001FFF8000000001FFF800003FFF0000000001FFF800007FFE0000000001FFF80001FFF
C0000000001FFF80007FFF80000000001FFFFFFFFFFE00000000001FFFFFFFFFF800000000
001FFFFFFFFFFE00000000001FFFFFFFFFFFC0000000001FFF80001FFFF0000000001FFF80
0003FFF8000000001FFF800000FFFE000000001FFF8000003FFF000000001FFF8000001FFF
800000001FFF8000000FFFC00000001FFF8000000FFFE00000001FFF8000000FFFE0000000
1FFF80000007FFF00000001FFF80000007FFF00000001FFF80000007FFF80000001FFF8000
0007FFF80000001FFF80000007FFF80000001FFF80000007FFF80000001FFF80000007FFF8
0000001FFF80000007FFF80000001FFF80000007FFF80000001FFF80000007FFF80000001F
FF80000007FFF00000001FFF80000007FFF00000001FFF8000000FFFE00000001FFF800000
0FFFE00000001FFF8000000FFFC00000001FFF8000001FFF800000001FFF8000003FFF8000
00001FFF8000007FFF000000001FFF800001FFFC000000001FFF80001FFFF8000000FFFFFF
FFFFFFFFE0000000FFFFFFFFFFFFFF80000000FFFFFFFFFFFFFE00000000FFFFFFFFFFFFF0
00000000FFFFFFFFFFFC0000000000>
. 84 72 -4 70 89] 82 @dc
[<
00000003FFF0000000000000007FFFFF80000000000003FFFFFFF000000000000FFFFFFFFC
00000000007FFFFFFFFF8000000000FFFF807FFFC000000003FFFC000FFFF000000007FFF0
0003FFF80000000FFFC00000FFFC0000003FFF8000007FFF0000007FFF0000003FFF800000
7FFE0000001FFF800000FFFC0000000FFFC00001FFF800000007FFE00003FFF800000007FF
F00003FFF000000003FFF00007FFE000000001FFF8000FFFE000000001FFFC000FFFE00000
0001FFFC001FFFC000000000FFFE001FFFC000000000FFFE001FFFC000000000FFFE003FFF
80000000007FFF003FFF80000000007FFF003FFF80000000007FFF007FFF80000000007FFF
807FFF80000000007FFF807FFF00000000003FFF807FFF00000000003FFF80FFFF00000000
003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00
000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0
FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC0FFFF0000000000
3FFFC0FFFF00000000003FFFC0FFFF00000000003FFFC07FFF00000000003FFF807FFF0000
0000003FFF807FFF00000000003FFF807FFF00000000003FFF807FFF00000000003FFF803F
FF80000000007FFF003FFF80000000007FFF003FFF80000000007FFF001FFF80000000007F
FE001FFF80000000007FFE000FFFC000000000FFFC000FFFC000000000FFFC0007FFC00000
0000FFF80007FFE000000001FFF80003FFE000000001FFF00003FFF000000003FFF00001FF
F000000003FFE00000FFF800000007FFC000007FFC0000000FFF8000003FFC0000000FFF00
00001FFE0000001FFE0000000FFF0000003FFC00000007FFC00000FFF800000003FFE00001
FFF000000000FFF80007FFC0000000003FFF807FFF00000000000FFFFFFFFC000000000003
FFFFFFF00000000000007FFFFF8000000000000003FFF000000000>
. 74 73 -7 71 89] 79 @dc
[<
FFFFFFFFFFFFC0000000FFFFFFFFFFFFFE000000FFFFFFFFFFFFFFC00000FFFFFFFFFFFFFF
F80000FFFFFFFFFFFFFFFE0000001FFF800003FFFF0000001FFF8000007FFFC000001FFF80
00000FFFE000001FFF80000003FFF000001FFF80000001FFF800001FFF800000007FFC0000
1FFF800000003FFE00001FFF800000003FFF00001FFF800000001FFF80001FFF800000000F
FF80001FFF800000000FFFC0001FFF8000000007FFE0001FFF8000000007FFE0001FFF8000
000003FFF0001FFF8000000003FFF0001FFF8000000003FFF0001FFF8000000001FFF8001F
FF8000000001FFF8001FFF8000000001FFF8001FFF8000000001FFFC001FFF8000000001FF
FC001FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFE001FFF800000
0000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF
8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE
001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF80000000
00FFFE001FFF8000000001FFFE001FFF8000000001FFFC001FFF8000000001FFFC001FFF80
00000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFF800
1FFF8000000001FFF8001FFF8000000003FFF8001FFF8000000003FFF0001FFF8000000003
FFF0001FFF8000000003FFE0001FFF8000000007FFE0001FFF8000000007FFC0001FFF8000
00000FFFC0001FFF800000000FFF80001FFF800000001FFF00001FFF800000003FFF00001F
FF800000007FFE00001FFF80000000FFFC00001FFF80000001FFF800001FFF80000007FFF0
00001FFF8000000FFFE000001FFF8000007FFF8000001FFF800007FFFF0000FFFFFFFFFFFF
FFFC0000FFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFC00000FFFFFFFFFFFFFE000000FFFFFF
FFFFFFC0000000>
. 79 71 -4 70 91] 68 @dc
[<
000000000FFFC00000000000000001FFFFFC000000000000000FFFFFFF800000000000007F
FFFFFFE0000000000001FFFFFFFFF0000000000003FFFE007FFC00000000000FFFE00007FE
00000000001FFF800000FF00000000003FFE0000003F80000000007FFC0000001FC0000000
00FFF800000007E000000001FFF800000007E000000001FFF000000003F000000003FFF000
000001F800000007FFE000000001F800000007FFE000000000F80000000FFFE000000000FC
0000000FFFE0000000007C0000000FFFC0000000007C0000000FFFC0000000007E0000001F
FFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC00000
00003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E00
00001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFF
C0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000
003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000
001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0
000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC000000000
3E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E000000
1FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC000
0000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E
0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001F
FFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC00000
00003E0000001FFFC0000000003E0000001FFFC0000000003E0000001FFFC0000000003E00
00001FFFC0000000003E0000001FFFC0000000003E0000001FFFC000000000FF8000FFFFFF
FFF80001FFFFFFC0FFFFFFFFF80001FFFFFFC0FFFFFFFFF80001FFFFFFC0FFFFFFFFF80001
FFFFFFC0FFFFFFFFF80001FFFFFFC0>
. 82 72 -4 70 91] 85 @dc
@F14 @sf
[<
FFE01FFE1F8007E0070003C0020007C00100078001800F0000801F0000401E0000603C0000
207C00001078000018F8000009F0000005E0000007E0000003C00000078000000F8000000F
8000001E4000003E4000003C2000007C10000078100000F0080001F00C0001E0040003C002
0007C007000FE00FC07FF83FF8>
. 31 31 -1 30 34] 88 @dc
[<
70F8F8F8700000000000000000000070F8F8F870>
. 5 20 -4 19 13] 58 @dc
[<
7FE3FF00070070000700700007007000070070000700700007007000070070000700700007
00700007007000070070000700700007007000070070000700700007007000070070000700
7000FFFFFF80070070000700700007007000070070000700700007007000070070000300F0
300380F87801C0787800F06E30001F83E0>
. 29 32 0 31 27] 11 @dc
/@F4 @newfont
@F4 @sf
[<
7FFFFE7FFFFE7FFFFE00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
0000FE0000FE0000FE0000FE0000FE0000FE0000FE00F8FE00FFFE00FFFE0007FE00007E00
001E00000E00>
. 23 39 -5 38 34] 49 @dc
[<
1C003E007F00FF80FF80FF807F003E001C00>
. 9 9 -5 8 19] 46 @dc
[<
FFFFF00000FFFFF00000FFFFF0000003FC00000003FC00000003FC00000003FC00000003FC
00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
0003FC00000003FC00000003FC00000003FC00000003FFFFFE0003FFFFFF8003FC003FE003
FC000FF003FC0007F803FC0007FC03FC0003FC03FC0003FE03FC0003FE03FC0003FE03FC00
03FE03FC0003FE03FC0003FE03FC0003FE03FC0003FC03FC0007FC03FC0007F803FC000FF0
03FC003FE0FFFFFFFFC0FFFFFFFF00FFFFFFF800>
. 39 41 -3 40 47] 80 @dc
[<
003FC3FF8001FFF3FF8003F03BFF8007E00FF80007E007F8000FE007F8000FE003F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
E003F8000FE003F800FFE03FF800FFE03FF800FFE03FF800>
. 33 27 -3 26 38] 117 @dc
[<
FFFF00FFFF00FFFF000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FF01C0FF03E0FF07F0FD87F0FD87FFFCE
3EFFC7FCFFC1F0>
. 24 27 -2 26 28] 114 @dc
[<
FFFE000000FFFE000000FFFE0000000FE00000000FE00000000FE00000000FE00000000FE0
0000000FE00000000FE00000000FE00000000FE00000000FE1FC00000FE7FF80000FFE0FE0
000FF803F0000FF001F8000FE001FC000FE000FE000FE000FF000FE000FF000FE0007F000F
E0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE000
7F000FE0007F000FE000FF000FE000FE000FE000FC000FF001F8000FF803F000FFFE07E000
FFE7FF8000FFE1FE0000>
. 33 39 -2 26 38] 112 @dc
[<
003FE00001FFFC0007F07F000FC01F801F800FC03F800FE03F800FE07F0007F07F0007F0FF
0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F00
07F07F0007F03F0007E03F800FE01F800FC00FC01F8003F07E0001FFFC00003FE000>
. 29 27 -2 26 34] 111 @dc
[<
C1FF00F7FFC0FF01E0FC0070F80038F00038F0003CE0003C60007C0000FC0003FC00FFF807
FFF81FFFF03FFFE07FFF807FFE00FFE000FC0000F80070F00070F000707000703800F01E03
F00FFFF003FE30>
. 22 27 -2 26 27] 115 @dc
[<
001FF00000FFFE0003F81F0007E003800FC001C01F8000E03F8000E07F0000007F0000007F
000000FF000000FF000000FF000000FFFFFFE0FFFFFFE0FF0007E0FF0007E07F0007E07F00
07C07F000FC03F800FC01F800F800F801F8007C01F0003F07E0001FFF800003FE000>
. 27 27 -2 26 32] 101 @dc
@F14 @sf
[<
40201010080804040474FCFCF870>
. 6 14 -4 31 13] 39 @dc
/@F11 @newfont
@F11 @sf
[<
07C000183800300400700200700100F00000F00000F00000F00000F0000078000078000078
00003C02001C07001E07800E078003008001C100007E00>
. 17 20 -4 19 21] 99 @dc
[<
07C000187000301800700E00700F00F00700F00780F003C0F003C0F003C07801E07801E078
01E03C01E01C01E01E01C00E01C003018001C300007C00>
. 19 20 -4 19 23] 111 @dc
[<
0F0700308C80705C40703C40F01C40F01C40F00E20F00E00F00E00F00E0078070078070078
07003807003C03801C03800E03800707800389C000F1C00001C00001C00000E00000E00000
E00000E00000700000700000700000700003F8000078>
. 21 32 -4 31 23] 100 @dc
[<
1C003300310070803080388038401C001C001C000E000E000E008700470043004380230033
000E00000000000000000000000000000001C001E001E000C0>
. 11 31 -4 30 14] 105 @dc
[<
3C0000660000F300007B000031800001800001C00001C00000C00000E00000E00000E00000
E000007000007000007000007000007000007000003800003800003800003800003800001C
00001C00001C00001C0001FFE0000E00000E00000E00000E00000E00000700000700000718
00033C00033C00019C000078>
. 22 41 2 31 14] 102 @dc
[<
3E0000438000C0C000E06000F07000F03800003800001C00001C0007DC000C3C001C1E0018
0E00180E001C0E001C07001C07001C07001C07000E03800E03800E03808703804701C04301
C04381C02301C03300E00E00C0>
. 19 29 -4 19 22] 121 @dc
[<
300300380070070066003803806200380380E100380380610038038071001C01C070801C01
C038001C01C038001C01C038000E00E01C000E00E01C000E00E01C008E00E01C004700700E
004700700E004780680E004740640C002630C318001C0F80F000>
. 33 20 -4 19 37] 109 @dc
[<
3001C07003303803103807083803083803881C03841C01C01C01C01C01C00E00E00E00E00E
00E08E00E04700704700704780604740602630C01C0F80>
. 22 20 -4 19 26] 110 @dc
[<
07C018383804700270017000F000F000F000F0007C007BF0780C38023C011C010E01070101
C2007C>
. 16 20 -4 19 21] 101 @dc
[<
78780084C600E58100F38100F3808063808001C04001C00001C00001C00000E00000E00000
E00040E0002070C02071E01071E01068E00CC440038380>
. 19 20 -3 19 21] 120 @dc
[<
1F8020604010E008F00CF00C700E000E003E03FC07F80FF00F800C000C060C070C03060103
0200FC>
. 16 20 -3 19 19] 115 @dc
[<
1E003100708070807040704038203800380038001C001C001C001C000E000E000E000E0007
00FFF007000700038003800380038001C00180>
. 12 28 -4 27 15] 116 @dc
[<
3F800060E000F07000783800301C00001C00001C00000E00000E0003CE000C2E001C17001C
0F003C07003C07003C03803C03803C03803C03801E01C01E01C01E01C00E01C00F00E00700
E00380E001C1E000E270003C60>
. 20 29 -2 19 21] 103 @dc
[<
FFC0001C00001C00000E00000E00000E00000E0000070000070000071E0007238003C1C003
80E003807003807801C03801C03C01C03C01C03C00E01E00E01E00E01E08E01E04701E0470
1E04781C04741C02621801C1E0>
. 23 29 0 19 23] 112 @dc
[<
3000007000003800003800003800003800001C00001C00001C00001C00000E00000E00000E
00008E00004703004707804787804783802661001C1E00>
. 17 20 -4 19 19] 114 @dc
[<
0F0700308C80705C40703C40F01C40F01C40F00E20F00E00F00E00F00E0078070078070078
07003807003C03801C03800E03800707800389C000F180>
. 19 20 -4 19 23] 97 @dc
@F11 @sf
[<
FFFF000003E0000001E0000001E0000001E0000001E0000000F0000000F0000000F0000000
F0000000780000007800000078000000780000003C0000003C0000003C0000003C0000001E
0000001E0000001E0000801E0040400F0020400F0020600F0020200F002020078020100780
20180780201E0780E00FFFFFF0>
. 28 31 -8 30 33] 84 @dc
[<
600700E00CC0700C40701C20700C20700E20380E103807003807003807001C03801C03801C
03801C03800E01C00E01C00F01C00E8180076300071E000700000700000380000380000380
0003800001C00001C00001C00001C0000FE00001E000>
. 20 32 -3 31 23] 104 @dc
[<
00FE00000381C000060020000C001800180004003800020038000100700001007000008070
000080F0000080F0000000F0000000F0000000F00000007800000078000000780000007800
00003C0000003C0000001E0000101E0000100F000018070000180380001801C0001800C000
1C0060003C0038003C001C004C000781860000FE02>
. 31 33 -6 31 33] 67 @dc
[<
FFF000000F8000000780000007800000078000000780000003C0000003C0000003C0000003
C0000001E0000001E0000001E0000001E0000000F0000000FFFC0000F00F0000F003C00078
00E0007800F00078007800780078003C003C003C003C003C003C003C003C001E003C001E00
38001E0070001E00E001FFFF80>
. 30 31 -3 30 31] 80 @dc
[<
FFFFF8000F00780007801C0007800C00078006000780060003C0020003C0030003C0010003
C0010001E0008001E0000001E0000001E0000000F0000000F0000000F0000000F000000078
0000007800000078000000780000003C0000003C0000003C0000003C0000001E0000001E00
00001E0000001F000001FFF800>
. 25 31 -3 30 29] 76 @dc
[<
07C3800C26401C1E20180E20180E201C0E201C07101C07001C07001C07000E03800E03800E
03808703804701C04301C04381C02301C03300E00E00C0>
. 20 20 -4 19 24] 117 @dc
@F14 @sf
[<
0020004000800100020006000C000C00180018003000300030007000600060006000E000E0
00E000E000E000E000E000E000E000E000E000E00060006000600070003000300030001800
18000C000C00060002000100008000400020>
. 11 46 -3 33 18] 40 @dc
[<
07E00F801C183860380670307801C0107003C008F003C008F0074000F00E2000F01E100070
1C100070380800307808001870040008F0020004E0020003E0010001C0010001C000800380
01C003C003E003A00FFC031000000708000007080000070400000704000007020000070200
00070200000702000003020000018400000084000000780000>
. 30 34 -2 32 35] 38 @dc
[<
800040002000100008000C00060006000300030001800180018001C000C000C000C000E000
E000E000E000E000E000E000E000E000E000E000E000C000C000C001C00180018001800300
0300060006000C0008001000200040008000>
. 11 46 -3 33 18] 41 @dc
[<
381C7C3EFC7EFC7EB85C804080408040402040202010201010080804>
. 15 14 -5 31 23] 92 @dc
[<
402020101008100808040804040204020402743AFC7EFC7EF87C7038>
. 15 14 -2 31 23] 34 @dc

1 @eop0

0 0 1 @bop1 112 509 a @F1 @sf(Section)32 b(1)-398 210 y @F2 @sf(INTR)m
(ODUCTION)-974 225 y @F14 @sf(This)20 b(Rationale)f(summarizes)g(the)h
(delib)q(erations)f(of)g(X3J11,)h(the)g(T)l(ec)o(hnical)g(Committee)-1652 
56 y(c)o(harged)15 b(b)o(y)f(ANSI)h(with)e(devising)h(a)g(standard)g(for)g
(the)g(C)g(programming)f(language.)18 b(It)d(has)-1651 57 y(b)q(een)h
(published)g(along)e(with)g(the)h(draft)f(Standard)h(to)f(assist)f(the)i
(pro)q(cess)g(of)g(formal)e(public)-1650 56 y(review.)-70 59 y(The)18 b
(X3J11)g(Committee)f(represen)o(ts)h(a)f(cross-section)h(of)f(the)i(C)e
(comm)o(unit)o(y:)25 b(it)17 b(con-)-1650 57 y(sists)h(of)g(ab)q(out)h
(\014ft)o(y)f(activ)o(e)g(mem)o(b)q(ers)h(represen)o(ting)f(hardw)o(are)g
(man)o(ufacturers,)h(v)o(endors)-1651 56 y(of)c(compilers)g(and)g(other)g
(soft)o(w)o(are)f(dev)o(elopmen)o(t)h(to)q(ols,)f(soft)o(w)o(a)o(re)g
(designers,)h(consultan)o(ts,)-1652 56 y(academics,)24 b(authors,)e
(applications)f(programmers,)h(and)g(others.)40 b(In)22 b(the)h(course)f
(of)f(its)-1651 57 y(delib)q(erations,)f(it)f(has)g(review)o(ed)g(related)g
(American)g(and)h(in)o(ternational)o 18 x(standards)f(b)q(oth)-1650 56 y
(published)c(and)g(in)f(progress.)19 b(It)14 b(has)h(attempted)e(to)h(b)q
(e)h(resp)q(onsiv)o(e)f(to)g(the)h(concerns)f(of)g(the)-1650 57 y(broader)g
(comm)o(unit)o(y:)j(as)d(of)e(Septem)o(b)q(er)j(1988,)d(it)g(had)i(receiv)o
(ed)g(and)f(review)o(ed)g(almost)f(200)-1651 56 y(letters,)g(including)g
(dozens)h(of)f(formal)f(commen)o(ts)h(from)f(the)i(\014rst)f(public)g
(review,)g(suggesting)-1651 57 y(mo)q(di\014cations)j(and)g(additions)f
(to)h(the)g(v)m(arious)g(preliminary)f(drafts)g(of)h(the)g(Standard.)-1483 
59 y(Up)q(on)g(publication)e(of)h(the)g(Standard,)f(the)i(primary)e(role)g
(of)h(the)g(Committee)f(will)f(b)q(e)j(to)-1651 56 y(o\013er)g(in)o
(terpretatio)o(ns)f(of)h(the)g(Standard.)20 b(It)15 b(will)f(consider)h
(and)g(resp)q(ond)h(to)e(all)g(corresp)q(on-)-1650 57 y(dence)j(receiv)o
(ed.)-299 157 y @F4 @sf(1.1)70 b(Purp)r(ose)-403 106 y @F14 @sf(The)17 b
(Committee's)d(o)o(v)o(erall)g(goal)h(w)o(as)g(to)h(dev)o(elop)g(a)f
(clear,)h(consisten)o(t,)f(and)h(unam)o(biguous)-1651 57 y(Standard)e(for)f
(the)g(C)g(programming)f(language)h(whic)o(h)g(co)q(di\014es)h(the)g
(common,)f(existing)f(def-)-1650 56 y(inition)h(of)g(C)h(and)g(whic)o(h)f
(promotes)g(the)h(p)q(ortabilit)o(y)e(of)h(user)h(programs)f(across)g(C)g
(language)-1651 56 y(en)o(vironmen)o(ts.)-207 59 y(The)k(X3J11)e(c)o
(harter)h(clearly)f(mandates)h(the)h(Committee)e(to)g @F11 @sf(c)n(o)n
(dify)i(c)n(ommon)g(existing)-1651 57 y(pr)n(actic)n(e)p @F14 @sf(.)32 b
(The)20 b(Committee)e(has)h(held)h(fast)e(to)h(preceden)o(t)h(wherev)o(er)f
(this)g(w)o(as)f(clear)h(and)-1650 56 y(unam)o(biguous.)f(The)12 b(v)m
(ast)e(ma)s(jorit)o -1 x(y)f(of)i(the)g(language)f(de\014ned)i(b)o(y)f
(the)g(Standard)f(is)h(precisely)-1651 57 y(the)19 b(same)e(as)h(is)f
(de\014ned)i(in)f(App)q(endix)h(A)f(of)g @F11 @sf(The)g(C)g(Pr)n(o)n(gr)n
(amming)g(L)n(anguage)j @F14 @sf(b)o(y)d(Brian)-1651 56 y(Kernighan)g(and)f
(Dennis)g(Ritc)o(hie,)g(and)h(as)f(is)f(implemen)o(ted)h(in)g(almost)f
(all)g(C)h(translator)o(s.)-1652 57 y(\(This)e(do)q(cumen)o(t)h(is)e
(hereinafter)h(referred)g(to)g(as)g(K&R.\))-949 59 y(K&R)d(is)f(not)f(the)i
(only)e(source)h(of)g(\\existing)f(practice.")18 b(Muc)o(h)11 b(w)o(ork)f
(has)h(b)q(een)h(done)f(o)o(v)o(er)-837 124 y(1)-949 b
1 @eop1

2 @bop0
@F10 @sf
[<
07E0001C1800300400700200F00100E00000E00000E00000E00000F00000FFFF80F00380F0
03807003807803803803801C07000E0700070E0000F800>
. 17 20 -3 19 20] 101 @dc
[<
0FC0183030087004F002E000E000E000E000F000F000F000F00070007800380E1C0F0E0F07
0601FC>
. 16 20 -4 19 20] 99 @dc
[<
0F00188038403840382038203820382038001C001C001C001C001C001C000E000E000E000E
00FFF81E000F00070003000100010001000080>
. 13 28 -4 27 18] 116 @dc
[<
FF801E001C000E000E000E000E000E000E000700070007000700070007000380038007801F
800380000000000000000000000000018003C003E003E001C0>
. 11 31 -1 30 13] 105 @dc
[<
07E0001C1C00380E00700700F00380E003C0E001C0E001E0E001E0F000F0F000F0F000F0F0
00F07000F03800E03800E01C00C00E018003870000FC00>
. 20 20 -3 19 23] 111 @dc
[<
FFCFF81E03C01C03800E01C00E01C00E01C00E01C00E01C00E01C00700E00700E00700E007
00E00700E00780E003806003C06007A0E01F90E0038F80>
. 21 20 -2 19 25] 110 @dc
[<
FFFE03C0038001C001C001C001C001C001C000E000E000E000E000E000E000700070007000
7000700070003800380038003800380F3800FC001C000C>
. 15 30 -4 29 23] 49 @dc
[<
7078F87830>
. 5 5 -4 4 13] 46 @dc
[<
FFFC0007C00007800003C00003C00003C00003C00003C00003C00001E00001E00001E00001
E00001E00001E00000F00000F00000F00000F00000F00000F0000078000078000078000078
00007800007800003C00003C00007C0007FFE0>
. 19 31 -1 30 16] 73 @dc
[<
000003E0FFFC0F1807C01F0407803E0403C03E0203C03E0003C03E0003C03E0003C03E0003
C03E0001E01E0001E01C0001E01C0001E01C0001E0380001E0300000FFF00000F03C0000F0
0F0000F0078000F003C000F003E0007801E0007801F0007801F0007801F0007801F0007801
E0003C01E0003C03C0007C070007FFFC00>
. 31 32 -2 30 33] 82 @dc
[<
FFFFE00007803C0007800F0003C0078003C003C003C001E003C000F003C000F003C0007801
E0007C01E0003C01E0003E01E0003E01E0003E01E0001E00F0001F00F0001F00F0001F00F0
001F00F0001F00F0001F0078001F0078001E0078001E0078001E0078003C0078003C003C00
78003C00F0007C01E007FFFF00>
. 32 31 -2 30 35] 68 @dc
[<
01F80000070600000E0100001C0080001C0040003C00400038002000380010003800100038
0010003C0008003C0008003C0008003C0008003C0008003C0008001E0004001E0004001E00
04001E0004001E0004001E0004000F0002000F0002000F0002000F0002000F0002000F0002
0007800300078003000F8007C0FFFC3FF8>
. 29 32 -7 30 34] 85 @dc
@F14 @sf
[<
40202010101008080878F8F8F0700000000000000000000070F8F8F870>
. 5 29 -4 19 13] 59 @dc
@F9 @sf
[<
FF81FF80FF81FF800E00FC000701F8000381F0000183E00000C7C000006F8000007F800000
3F0000003E0000007E000000FF000001F3800003E1800007E0C00007C0E0000F807000FFE1
FF00FFE1FF00>
. 25 20 -1 19 28] 120 @dc
[<
FFE0FFE01F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FF
00FF000000000000000000000000001C003E007F007F007F003E001C00>
. 11 33 -2 32 15] 105 @dc
[<
C7F0FFFCF81EF006E007C007C007001F03FE1FFE3FFC7FF8FFC0F800E006E006600E701E3F
FE0FE6>
. 16 20 -2 19 21] 115 @dc
[<
01F003F807CC0F860F860F860F860F860F800F800F800F800F800F800F800F800F800F80FF
FCFFFC3F800F800780038003800380018001800180>
. 15 29 -1 28 20] 116 @dc
[<
FFE3FFFFE3FF1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81E80F81EC0F81E61F0FE3FE0FE0FC0>
. 24 20 -3 19 29] 110 @dc
[<
01FF000FFFE03F01F878003C78003CF0001EF0001EF0001E70003E3C007C1FFFFC07FFF80F
FFF01FFF801C000018000018000009FC000FFF000F07801E03C03E03E03E03E03E03E03E03
E03E03E01E03DE0F079E07FFFE01FC3C>
. 23 30 -1 19 26] 103 @dc
[<
01FC0007FF001F81C03F00C03E00607E00007C0000FC0000FC0000FC0000FC0000FC0000FC
00007C03007C0FC03E0FC03E0FC01F0FC007FF8001FE00>
. 19 20 -2 19 23] 99 @dc
[<
01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC
007E7C007C7C007C3E00F83E00F81F83F007FFC001FF00>
. 23 20 -1 19 26] 111 @dc
[<
03F8FF0FFEFF1F07F83E01F87E00F87C00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC
00F87C00F87C00F87E00F83E01F81F83F80FFEF801F8F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80007F80007F8>
. 24 32 -2 31 29] 100 @dc
[<
00FF8007FFE00F80701E00183E00187C00007C0000FC0000FC0000FC0000FFFFF8FFFFF8FC
00F87C00F87C00F03E00F01E01E00F83C007FF8001FE00>
. 21 20 -1 19 24] 101 @dc
[<
FFE3FF8FFEFFE3FF8FFE1F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F00
7C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F807E01
F01E807E01F01E407D01F01E70F9C3E0FE1FF07FC0FE0FE03F80>
. 39 20 -3 19 44] 109 @dc
[<
FFE000FFE0001F00001F00001F00001F00001F00001F00001F00001F1F801F7FE01FC1F81F
80FC1F007C1F007E1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F007E1F00
7E1F80FC1FE1F8FF7FF0FF1FC0>
. 24 29 -2 19 29] 112 @dc
[<
FFF000FFF0001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F
00001F03001F8FC01E8FC01E8FC01ECFC0FE7F80FE3E00>
. 18 20 -2 19 22] 114 @dc
[<
0FE07E3FF8FE7E0DE0FC05E0F803E0F803E0F803E07C03E03C03E01F03E007FBE0007FE000
03E00C03E03F03E03F03E03F07C03F0F801FFF0007FC00>
. 23 20 -1 19 25] 97 @dc
[<
2070180C0E060603033B7FFFFFFE7C38>
. 8 16 -4 6 15] 44 @dc
[<
FFE0FFE01F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F00FF00FF00>
. 11 32 -2 31 15] 108 @dc
[<
387CFEFEFE7C38>
. 7 7 -4 6 15] 46 @dc
@F9 @sf
[<
181F801C7FE01EC1F81F807C1F007C1F003E1F003E1F003F1F003F1F003F1F003F1F003F1F
003F1F003E1F003E1F007E1F807C1FE0F81F7FF01F1FC01F00001F00001F00001F00001F00
001F00001F00001F00001F00001F0000FF0000FF0000>
. 24 32 -2 31 29] 98 @dc
@F9 @sf
[<
FFF0FFF0FFF0FFF0>
. 12 4 -1 11 17] 45 @dc

2 @eop0

0 0 2 @bop1 112 50 a @F14 @sf(2)1026 b @F10 @sf(Section)16 b(1.)34 b(INTR)o
(ODUCTION)-1649 145 y @F14 @sf(the)16 b(y)o(ears)e(to)g(impro)o(v)o(e)g
(the)h(C)g(language)f(b)o(y)h(addressing)g(its)f(w)o(eaknesses.)20 b(The)
15 b(Committee)-1652 57 y(has)e(formalized)f(enhancemen)o(ts)i(of)e(pro)o
(v)o(en)g(v)m(alue)i(whic)o(h)e(ha)o(v)o(e)h(b)q(ecome)g(part)g(of)f(the)h
(v)m(arious)-1651 56 y(dialects)i(of)g(C.)-192 56 y(Existing)20 b
(practice,)i(ho)o(w)o(ev)o(er,)g(has)g(not)f(alw)o(a)n(ys)f(b)q(een)j
(consisten)o(t.)37 b(V)l(arious)21 b(dialects)-1651 57 y(of)e(C)f(ha)o(v)o
(e)g(approac)o(hed)h(problems)f(in)g(di\013eren)o(t)g(and)h(sometimes)e
(diametrically)g(opp)q(osed)-1650 56 y(w)o(a)o(ys.)31 b(This)19 b(div)o
(ergence)h(has)f(happ)q(ened)h(for)f(sev)o(eral)f(reasons.)32 b(First,)18 b
(K&R,)i(whic)o(h)g(has)-1651 57 y(serv)o(ed)13 b(as)f(the)g(language)g(sp)q
(eci\014cation)g(for)f(almost)g(all)g(C)i(translat)o(ors,)e(is)h
(imprecise)g(in)g(some)-1651 56 y(areas)21 b(\(thereb)o(y)g(allo)n(wing)e
(div)o(ergen)o(t)i(in)o(terpretati)o(ons\),)o 21 x(and)h(it)e(do)q(es)h
(not)g(address)g(some)-1651 57 y(issues)15 b(\(suc)o(h)g(as)f(a)g
(complete)h(sp)q(eci\014cation)f(of)h(a)f(library\))f(imp)q(ortan)o(t)g
(for)h(co)q(de)i(p)q(ortabilit)o -1 x(y)l(.)-1652 56 y(Second,)i(as)f(the)g
(language)f(has)g(matured)h(o)o(v)o(er)f(the)h(y)o(ears,)f(v)m(arious)g
(extensions)h(ha)o(v)o(e)f(b)q(een)-1649 57 y(added)k(in)e(di\013eren)o(t)f
(dialects)h(to)g(address)g(limitati)o(ons)f(and)i(w)o(eaknesses)f(of)g
(the)h(language;)-1652 56 y(these)d(extensions)f(ha)o(v)o(e)g(not)f(b)q
(een)j(consisten)o(t)d(across)h(dialects.)-1067 57 y(One)j(of)g(the)f
(Committee's)f(goals)h(w)o(as)g(to)g(consider)g(suc)o(h)h(areas)f(of)g
(div)o(ergence)h(and)g(to)-1651 56 y(establish)d(a)f(set)h(of)f(clear,)g
(unam)o(biguous)h(rules)f(consisten)o(t)h(with)f(the)h(rest)f(of)h(the)g
(language.)-1652 56 y(This)g(e\013ort)f(included)i(the)f(consideration)f
(of)h(extensions)g(made)g(in)g(v)m(arious)f(C)h(dialects,)f(the)-1650 57 y
(sp)q(eci\014cation)g(of)g(a)f(complete)h(set)g(of)f(required)h(library)f
(functions,)g(and)h(the)g(dev)o(elopmen)o(t)g(of)-1651 56 y(a)h(complete,)g
(correct)g(syn)o(tax)f(for)h(C.)-585 57 y(The)h(w)o(ork)f(of)h(the)g
(Committ)o(ee)f(w)o(as)g(in)h(large)f(part)g(a)h(balancing)f(act.)22 b
(The)16 b(Committee)-1652 56 y(has)g(tried)f(to)g(impro)o(v)o(e)f(p)q
(ortabilit)o(y)g(while)h(retaining)f(the)h(de\014nition)h(of)f(certain)g
(features)g(of)-1651 57 y(C)j(as)f(mac)o(hine-dep)q(enden)o(t.)27 b(It)18 b
(attempted)e(to)h(incorp)q(orate)g(v)m(aluable)g(new)g(ideas)g(without)-1651 
56 y(disrupting)d(the)g(basic)f(structure)h(and)g(fabric)g(of)f(the)h
(language.)19 b(It)14 b(tried)f(to)g(dev)o(elop)h(a)g(clear)-1651 57 y
(and)d(consisten)o(t)f(language)f(without)h(in)o(v)m(alidati)o(ng)f
(existing)h(programs.)o 18 x(All)f(of)h(the)h(goals)e(w)o(ere)-1651 56 y
(imp)q(ortan)o(t)18 b(and)h(eac)o(h)f(decision)h(w)o(as)f(w)o(eighed)g(in)h
(the)g(ligh)o(t)e(of)h(sometimes)g(con)o(tradictory)-1652 57 y(requiremen)o
(ts)d(in)g(an)g(attempt)g(to)f(reac)o(h)h(a)g(w)o(ork)m(able)g
(compromise.)-1143 56 y(In)c(sp)q(ecifying)f(a)g(standard)g(language,)g
(the)g(Committee)f(used)i(sev)o(eral)e(guiding)h(principles,)-1651 56 y
(the)16 b(most)e(imp)q(ortan)o(t)g(of)h(whic)o(h)g(are:)-661 87 y @F9 @sf
(Existing)e(co)q(de)h(is)e(imp)q(ortan)o(t,)h(existing)f(implemen)o
(tations)g(are)h(not.)19 b @F14 @sf(A)11 b(large)g(b)q(o)q(dy)-1650 57 y
(of)18 b(C)f(co)q(de)i(exists)e(of)g(considerable)h(commercial)e(v)m
(alue.)28 b(Ev)o(ery)17 b(attempt)g(has)h(b)q(een)g(made)-1650 56 y(to)e
(ensure)g(that)f(the)h(bulk)g(of)g(this)f(co)q(de)h(will)f(b)q(e)h
(acceptable)g(to)f(an)o(y)h(implemen)o(tation)e(con-)-1650 57 y(forming)g
(to)h(the)g(Standard.)k(The)d(Committ)o(ee)e(did)h(not)g(w)o(an)o(t)f(to)g
(force)h(most)f(programmers)-1652 56 y(to)g(mo)q(dify)g(their)g(C)f
(programs)g(just)h(to)g(ha)o(v)o(e)g(them)g(accepted)h(b)o(y)f(a)g
(conforming)f(translator)o(.)-1581 57 y(On)f(the)g(other)f(hand,)h(no)g
(one)g(implemen)o(tati)o(on)e(w)o(as)h(held)h(up)g(as)f(the)h(exemplar)f
(b)o(y)h(whic)o(h)-1651 56 y(to)j(de\014ne)h(C:)e(it)g(is)h(assumed)g
(that)f(all)g(existing)g(implemen)o(tatio)o(ns)g(m)o(ust)g(c)o(hange)h
(somewhat)-1651 57 y(to)g(conform)g(to)f(the)i(Standard.)-561 72 y @F9 @sf
(C)i(co)q(de)g(can)g(b)q(e)g(p)q(ortable.)j @F14 @sf(Although)15 b(the)g
(C)g(language)g(w)o(as)f(originall)o(y)g(b)q(orn)i(with)e(the)-1650 56 y
(UNIX)k(op)q(erating)e(system)g(on)h(the)g(DEC)f(PDP-11,)h(it)f(has)g
(since)h(b)q(een)h(implemen)o(ted)f(on)g(a)-1651 57 y(wide)f(v)m(ariet)o
(y)e(of)h(computers)g(and)h(op)q(erating)e(systems.)20 b(It)c(has)f(also)f
(seen)i(considerable)f(use)-1650 56 y(in)e(cross-compilation)f(of)g(co)q
(de)i(for)f(em)o(b)q(edded)h(systems)f(to)f(b)q(e)i(executed)g(in)f(a)g
(free-standing)-1651 57 y(en)o(vironmen)o(t.)19 b(The)12 b(Committee)f
(has)h(attempted)f(to)h(sp)q(ecify)g(the)h(language)e(and)h(the)h(library)
-1652 56 y(to)d(b)q(e)h(as)f(widely)g(implemen)o(table)g(as)g(p)q
(ossible,)g(while)g(recognizing)g(that)g(a)g(system)g(m)o(ust)g(meet)-1651 
57 y(certain)15 b(minim)o(um)f(criteria)g(to)h(b)q(e)h(considered)f(a)g
(viable)g(host)f(or)h(target)f(for)h(the)g(language.)-1647 72 y @F9 @sf(C)
20 b(co)q(de)h(can)g(b)q(e)f(non-p)q(ortable.)28 b @F14 @sf(Although)17 b
(it)g(stro)o(v)o(e)f(to)h(giv)o(e)g(programmers)f(the)h(op-)-1650 57 y(p)q
(ortunit)o(y)h(to)f(write)h(truly)f(p)q(ortable)h(programs,)f(the)h
(Committee)f(did)i(not)e(w)o(an)o(t)g(to)h @F11 @sf(for)n(c)n(e)-1763 124 y
2 @eop1

3 @bop0
@F10 @sf
[<
FFFC000007C000000780000003C0000003C0000003C0000003C0000003C0000003C0000001
E0000001E0000001E0000001E0000001E0000001E0000000FFF80000F00F0000F0078000F0
03C000F001E000F001F0007800F0007800F8007800F8007800F8007800F8007800F0003C00
F0003C01E0007C03C007FFFF00>
. 29 31 -2 30 31] 80 @dc
[<
1F9FC0305E00703C00701E00701E00700E00700E00700E00700E0038070038070038070038
07003807003807001C03801C03803C0780FC1F801C0380>
. 18 20 -5 19 25] 117 @dc
[<
FFE0001E00001C00000E00000E00000E00000E00000E00000E000007000007000007000007
000007000007800003830003C78007C7801FB380038E00>
. 17 20 -2 19 18] 114 @dc
[<
FFC0001E00000E00000E00000E00000E0000070000070000070000071F000721C00740E003
807003803803803C03801C03801E03801E01C00F01C00F01C00F01C00F01C00F01C00E00E0
0E00E01E00F01C07EC3800E3E0>
. 24 29 0 19 25] 112 @dc
[<
8FC0D060E0106018600C400C400C401C003C03F80FF01FE01E003800380418021806080606
0E01F2>
. 15 20 -2 19 18] 115 @dc
@F11 @sf
[<
38006400E200E200E200E200710070007000700038003800380038001C001C001C001C000E
000E000E000E00070007000700070003800380038003801FC003C0>
. 10 32 -4 31 12] 108 @dc
/@F12 @newfont
@F12 @sf
[<
0F8010C0206040706038703820380038003800300070006000C003000CC018603070703060
38E038E038E038E0306070706030C0198006001800300070006000E000E000E020E070E030
7010302018400F80>
. 13 41 -3 31 20] 120 @dc
@F9 @sf
[<
001C0000001C0000003E0000003E0000007F0000007F000000FF800000F9800001F9C00001
F0C00001F0C00003E0600003E0600007C0300007C030000F8018000F8018001F001C00FFE0
7F80FFE07F80>
. 25 20 -1 19 28] 118 @dc
[<
1C03803E07C07F0FE0FF1FE0FF1FE0FE1FC0DC1B80C01800C01800600C00600C00700E0030
06001803000E01C0040080>
. 19 16 -5 31 27] 92 @dc
[<
0007FF0007FF0000F80000F80000F80000F80000F80000F80000F803F8F80FFEF81F87F83F
01F87E00F87E00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87E00F83E01
F83F01F81F877807FE3801F818>
. 24 29 -2 19 28] 113 @dc
[<
03F8FF07FCFF0F06F81F01F81F01F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F8FF07F8FF07F8>
. 24 20 -3 19 29] 117 @dc
[<
FFE3FFFFE3FF1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F80F81FC0F81F61F01F3FE01F0FC01F00001F00001F00001F00001F00
001F00001F00001F00001F00001F0000FF0000FF0000>
. 24 32 -3 31 29] 104 @dc
[<
200400700E001803000C01800E01C00600C00600C00300600300603B07607F0FE0FF1FE0FF
1FE0FE1FC07C0F80380700>
. 19 16 -2 31 27] 34 @dc
/@F7 @newfont
@F7 @sf
[<
00000F8000001F0000001E0000003E0000007C00003F780000FFF80003FFF00007E1F8000F
83FC001F03FE001E079E003C0F8F003C0F0F00781E07807800078078000780F00003C0F000
03C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0780007
8078000780780007803C000F003C000F001E001E001F003E000F807C0007E1F80003FFF000
00FFC000003F0000>
. 26 39 -3 32 33] 81 @dc
[<
01F80007FE000FFF001F0F803C03C03C03C07801E07801E0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000
F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0>
. 20 33 -5 31 31] 85 @dc
[<
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0>
. 4 32 -4 31 13] 73 @dc
[<
FFFFE0FFFFE0FFFFE0F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFFC0FFFFC0FFFFC0>
. 19 32 -5 31 27] 69 @dc
[<
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000FFFFFFC0FFFFFFC0FFFFFFC0>
. 26 32 -2 31 31] 84 @dc
[<
001FC000FFF001FFFC03E03E07800E0F00021E00003E00003C00007C000078000078000078
0000F00000F00000F00000F00000F00000F00000F00000F000007800007800007800007C00
003C00003E00001E00000F000007800C03E03C01FFFC00FFF8001FC0>
. 23 34 -3 32 29] 67 @dc
[<
F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F0
0078F00078F00078FFFFF8FFFFF8FFFFF8F00078F00078F00078F00078F00078F00078F000
78F00078F00078F00078F00078F00078F00078F00078>
. 21 32 -5 31 32] 72 @dc
[<
F00003E0780003C0780003C0780007C03C0007803C0007803C000F801E000F001E000F000F
FFFE000FFFFE000FFFFE0007003C0007803C0007803C000380780003C0780003C0780001C0
F00001E0F00001E0F00000E0E00000E1E00000F1E0000071C0000073C000007BC000003B80
00003B8000003F8000001F0000001F0000>
. 27 32 -1 31 30] 65 @dc
[<
F001F8F003F8F003F8F00378F00778F00778F00E78F00E78F00E78F01E78F01C78F03C78F0
3C78F03878F07878F07078F07078F0F078F0E078F1E078F1E078F1C078F3C078F38078F380
78F38078F70078F70078F60078FE0078FE0078FC0078>
. 21 32 -5 31 32] 78 @dc
[<
001FC000FFF801FFFE03E03E07801E0F001E1E001E3E001E3C001E7C001E78001E78001E78
03FEF003FEF003FEF00000F00000F00000F00000F00000F000007800007800007800007C00
003C00003E00001E00000F000007800E03E03E01FFFE00FFF8001FE0>
. 23 34 -3 32 30] 71 @dc
@F9 @sf
[<
1E0000007F800000E1C00000C0E00000FC600000FC30000078300000001800000018000000
1C0000001C0000003E0000003E0000007F0000007F000000FF800000F9800001F9C00001F0
C00001F0C00003E0600003E0600007C0300007C030000F8018000F8018001F001C00FFE07F
80FFE07F80>
. 25 29 -1 19 28] 121 @dc
[<
0030018000007803C000007803C000007803C00000FC07E00000FC07E00001F60FB00001F6
0F300001F60F300003E31E180003E31E180007C1BE0C0007C1BC0C0007C1BC0C000F80F806
000F80F806001F00F803001F00F00300FFE7FE1FE0FFE7FE1FE0>
. 35 20 -1 19 38] 119 @dc
@F9 @sf
[<
FFFF03FFF0FFFF03FFF007E0007F0007E0007E0007E000FC0007E000FC0007E001F80007E0
03F00007E007E00007E00FE00007E00FC00007E01F800007F03F000007F87F000007EC7E00
0007E6FC000007E3F8000007E1F8000007E0F0000007E030000007E018000007E00C000007
E006000007E003800007E001C00007E000600007E000300007E000180007E0001E00FFFF00
FFE0FFFF00FFE0>
. 36 31 -2 30 41] 75 @dc
[<
3FFC003FFC0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C000FFFC00FFFC0007C00007C00007C00007C00007C0
0007C3C007C7E003C7E003E7E001F3E000FFC0001F80>
. 19 32 -1 31 16] 102 @dc
@F12 @sf
[<
03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C0>
. 16 18 -3 19 23] 15 @dc
@F11 @sf
[<
E0F0F8F870>
. 5 5 -5 4 14] 46 @dc
@F11 @sf
[<
FFFFC0000F00700007801C0007800E0007800380078001C003C001C003C000E003C0007003
C0007001E0007801E0003C01E0003C01E0003C00F0001E00F0001E00F0001E00F0001E0078
000E0078000E0078000E0078000E003C000E003C000E003C000E003C001C001E001C001E00
38001E0070001E00E001FFFF80>
. 31 31 -3 30 34] 68 @dc
[<
C020100804040202011D3F3F1F0E>
. 8 14 -9 31 14] 39 @dc
[<
03C0000E30001C08001C04001C04001C02001C02001C01001C01001C01000E00800E00800E
00808700804700C04301C04383C02307C03307800E0380>
. 18 20 -4 19 21] 118 @dc
[<
03E1F0000E1308000C0F04001C0F02001C0602001C0701001C0701001C0700801C0700801C
0700800E0380400E0380400E038040870380404701C0604301C0E04381C1E02301C3E03300
E3C00E00C1C0>
. 27 20 -4 19 30] 119 @dc
[<
1F0031C060E06070E038E03CE01CE01EE01EE01E700F700F700F700F380F380F3C0E3A0E1D
0C1CF01C001C000E000E000E000E0007000700070007003F800780>
. 16 32 -5 31 21] 98 @dc
@F11 @sf
[<
FFF03FF8000F8007C00007800780000780078000078007800007800F000003C00F000003C0
0F000003C01E000003C01E000001E01E000001E03C000001F03C000001E83C000000F47800
0000F278000000F1F8000000F0F00000007830000000781000000078080000007804000000
3C020000003C010000003C004000003C002000001E001000001E000800001E000E00001F00
0F8001FFF03FE0>
. 35 31 -3 30 35] 75 @dc
@F11 @sf
[<
FF8103FFC0001C01803E00000C01801E00000401C01E00000401E01E00000401E01E000002
03900F00000203900F00000203880F00000203840F00000103840780000103820780000103
8207800001038107800000838083C00000838083C00000838043C00000870043C000004700
21E00000470021E00000470011E00000470009E00000270008F00000270004F00000270004
F00000270002F000001700017800001700017800001E0000F800001E0000FC0001FE00007F
C0>
. 42 31 -3 30 41] 77 @dc
[<
601E00E0310070310070708070708070708038384038700038700038E0001FC0001E00001D
00001C80000E40C00E21E00E11E00E08E00704200703C00700000700000380000380000380
0003800001C00001C00001C00001C0000FE00001E000>
. 19 32 -3 31 21] 107 @dc
[<
8040202010080804043C3C3C3C1C>
. 6 14 -3 4 14] 44 @dc
@F14 @sf
[<
7FE3FE3FF00700700700070070070007007007000700700700070070070007007007000700
70070007007007000700700700070070070007007007000700700700070070070007007007
000700700700070070070007007007000700700700FFFFFFFF000700700000070070000007
007000000700700000070070000007007000000700F00F000300F00F000380F80F0001C07C
060000F04F0400001F81F800>
. 36 32 0 31 38] 14 @dc
@F14 @sf
[<
7FE7FE0700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E0FFFFE00700E00700E00700E00700E00700
E00700E00700E00700E00381E001C1E000E0E0003FE0>
. 23 32 0 31 25] 13 @dc
@F8 @sf
[<
01FCFC03FFFE07FFFC0F03E00E01E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E07E07E0FE0FE07E07E0>
. 23 20 0 19 24] 117 @dc

3 @eop0

0 0 3 @bop1 112 50 a @F10 @sf(1.1.)35 b(Purp)q(ose)1360 b @F14 @sf(3)-1651 
145 y(programmers)19 b(in)o(to)g(writing)f(p)q(ortably)l(,)i(to)f
(preclude)i(the)f(use)g(of)f(C)h(as)f(a)h(\\high-lev)o(el)f(as-)-1651 57 y
(sem)o(bler":)28 b(the)19 b(abilit)o(y)f(to)g(write)h(mac)o(hine-sp)q
(eci\014c)h(co)q(de)g(is)f(one)g(of)g(the)g(strengths)g(of)g(C.)-1651 56 y
(It)d(is)g(this)f(principle)h(whic)o(h)f(largely)g(motiv)m(ates)g(dra)o
(wing)f(the)i(distinction)f(b)q(et)o(w)o(een)h @F11 @sf(strictly)-1651 56 y
(c)n(onforming)g(pr)n(o)n(gr)n(am)j @F14 @sf(and)c @F11 @sf(c)n(onforming)h
(pr)n(o)n(gr)n(am)f @F14 @sf(\()p @F12 @sf(x)p @F14 @sf(1.7\).)-1044 72 y 
@F9 @sf(Av)o(oid)f(\\quiet)g(c)o(hanges.")19 b @F14 @sf(An)o(y)13 b(c)o
(hange)g(to)f(widespread)h(practice)f(altering)g(the)h(meaning)-1651 56 y
(of)i(existing)e(co)q(de)i(causes)g(problems.)k(Changes)c(that)e(cause)i
(co)q(de)g(to)f(b)q(e)i(so)e(ill-form)o(ed)g(as)g(to)-1651 57 y(require)g
(diagnostic)f(messages)g(are)h(at)g(least)f(easy)g(to)h(detect.)19 b(As)
14 b(m)o(uc)o(h)g(as)g(seemed)h(p)q(ossible)-1651 56 y(consisten)o(t)21 b
(with)f(its)g(other)g(goals,)h(the)g(Committee)e(has)i(a)o(v)o(oided)f(c)o
(hanges)h(that)f(quietly)-1651 57 y(alter)d(one)h(v)m(alid)f(program)g(to)g
(another)g(with)g(di\013eren)o(t)g(seman)o(tics,)g(that)g(cause)g(a)h(w)o
(orking)-1652 56 y(program)11 b(to)h(w)o(ork)f(di\013eren)o(tly)g(without)g
(notice.)18 b(In)13 b(imp)q(ortan)o(t)d(places)i(where)g(this)g(principle)
-1651 56 y(is)j(violated,)f(the)h(Rationale)f(p)q(oin)o(ts)h(out)g(a)g 
@F7 @sf(QUIET)g(CHANGE)p @F14 @sf(.)-1114 72 y @F9 @sf(A)j(standard)h(is)f
(a)g(treat)o(y)h(b)q(et)o(w)o(een)f(implem)o(en)o(tor)f(and)h(programmer.)j 
@F14 @sf(Some)16 b(n)o(u-)-1650 56 y(merical)21 b(limits)f(ha)o(v)o(e)h(b)q
(een)i(added)f(to)f(the)g(Standard)h(to)f(giv)o(e)f(b)q(oth)i(implemen)o
(tors)e(and)-1650 57 y(programmers)e(a)h(b)q(etter)g(understanding)g(of)g
(what)f(m)o(ust)h(b)q(e)h(pro)o(vided)e(b)o(y)h(an)g(implemen-)-1650 56 y
(tation,)j(of)f(what)g(can)h(b)q(e)g(exp)q(ected)h(and)f(dep)q(ended)h(up)q
(on)g(to)d(exist.)39 b(These)22 b(limits)e(are)-1651 57 y(presen)o(ted)15 b
(as)e @F11 @sf(minimum)j(maxima)i @F14 @sf(\(i.e.,)12 b(lo)o(w)o(er)h
(limits)f(placed)i(on)g(the)g(v)m(alues)g(of)f(upp)q(er)i(lim-)-1651 56 y
(its)e(sp)q(eci\014ed)h(b)o(y)f(an)g(implemen)o(tatio)o(n\))f(with)g(the)h
(understanding)g(that)f(an)o(y)h(implemen)o(tor)f(is)-1651 57 y(at)j(lib)q
(ert)o(y)f(to)h(pro)o(vide)g(higher)g(limits)o 14 x(than)g(the)g(Standard)g
(mandates.)20 b(An)o(y)15 b(program)f(that)-1651 56 y(tak)o(es)k(adv)m(an)o
(tage)g(of)g(these)h(more)f(toleran)o(t)f(limits)g(is)h(not)g(strictly)f
(conforming,)h(ho)o(w)o(ev)o(er,)-1652 56 y(since)e(other)f(implemen)o
(tatio)o(ns)f(are)h(at)g(lib)q(ert)o(y)f(to)g(enforce)i(the)f(mandated)g
(limits.)-1477 72 y @F9 @sf(Keep)25 b(the)g(spirit)f(of)h(C.)38 b @F14 @sf
(The)22 b(Committee)e(k)o(ept)i(as)f(a)g(ma)s(jor)f(goal)h(to)g(preserv)o
(e)g(the)-1650 56 y(traditional)14 b @F11 @sf(spirit)j(of)h(C)p @F14 @sf
(.)k(There)16 b(are)g(man)o(y)g(facets)f(of)h(the)g(spirit)f(of)h(C,)f
(but)i(the)f(essence)h(is)-1651 57 y(a)g(comm)o(unit)o(y)e(sen)o(timen)o
(t)h(of)g(the)h(underlying)f(principles)g(up)q(on)i(whic)o(h)e(the)h(C)f
(language)g(is)-1651 56 y(based.)21 b(Some)15 b(of)g(the)g(facets)g(of)f
(the)i(spirit)e(of)h(C)g(can)g(b)q(e)h(summarized)f(in)g(phrases)g(lik)o
(e)-1477 71 y @F12 @sf(\017)o @F11 @sf(T)m(rust)h(the)h(pr)n(o)n(gr)n
(ammer.)-471 66 y @F12 @sf(\017)o @F11 @sf(Don)-5 b('t)17 b(pr)n(event)f
(the)g(pr)n(o)n(gr)n(ammer)h(fr)n(om)g(doing)f(what)h(ne)n(e)n(ds)e(to)h
(b)n(e)g(done.)-1311 65 y @F12 @sf(\017)o @F11 @sf(Ke)n(ep)g(the)h
(language)f(smal)r(l)g(and)g(simple.)-748 66 y @F12 @sf(\017)o @F11 @sf
(Pr)n(ovide)h(only)e(one)h(way)h(to)g(do)f(an)g(op)n(er)n(ation.)-844 65 y 
@F12 @sf(\017)o @F11 @sf(Make)h(it)f(fast,)g(even)f(if)i(it)f(is)g(not)g
(guar)n(ante)n(e)n(d)g(to)g(b)n(e)g(p)n(ortable.)-1126 71 y @F14 @sf(The)
22 b(last)f(pro)o(v)o(erb)g(needs)i(a)f(littl)o(e)f(explanation.)39 b(The)
22 b(p)q(oten)o(tial)f(for)g(e\016cien)o(t)h(co)q(de)-1650 57 y
(generation)13 b(is)f(one)h(of)g(the)g(most)f(imp)q(ortan)o(t)g(strengths)g
(of)h(C.)19 b(T)l(o)13 b(help)g(ensure)h(that)e(no)h(co)q(de)-1650 56 y
(explosion)j(o)q(ccurs)h(for)f(what)g(app)q(ears)h(to)f(b)q(e)h(a)f(v)o
(ery)g(simple)g(op)q(eration,)g(man)o(y)g(op)q(erations)-1651 57 y(are)d
(de\014ned)h(to)e(b)q(e)h @F11 @sf(how)h(the)h(tar)n(get)e(machine's)h
(har)n(dwar)n(e)g(do)n(es)g(it)j @F14 @sf(rather)12 b(than)g(b)o(y)h(a)f
(general)-1651 56 y(abstract)g(rule.)19 b(An)13 b(example)f(of)g(this)g
(willingness)f(to)h(liv)o(e)g(with)g @F11 @sf(what)j(the)f(machine)f(do)n
(es)j @F14 @sf(can)-1650 57 y(b)q(e)f(seen)g(in)e(the)h(rules)g(that)f(go)o
(v)o(ern)h(the)g(widening)f(of)h @F8 @sf(char)f @F14 @sf(ob)s(jects)h(for)f
(use)h(in)g(expressions:)-1651 56 y(whether)h(the)g(v)m(alues)g(of)f @F8 @sf
(char)g @F14 @sf(ob)s(jects)g(widen)g(to)g(signed)h(or)f(unsigned)h(quan)o
(tities)e(t)o(ypically)-1652 56 y(dep)q(end)q(s)j(on)f(whic)o(h)g(b)o(yte)g
(op)q(eration)g(is)g(more)f(e\016cien)o(t)h(on)g(the)h(target)e(mac)o
(hine.)-1382 57 y(One)22 b(of)g(the)f(goals)g(of)g(the)h(Committ)o(ee)f(w)o
(as)g(to)g(a)o(v)o(oid)f(in)o(terfering)h(with)f(the)i(abilit)o(y)-1652 
56 y(of)17 b(translators)f(to)h(generate)g(compact,)g(e\016cien)o(t)g(co)q
(de.)27 b(In)18 b(sev)o(eral)f(cases)g(the)h(Committee)-1652 57 y(has)j
(in)o(tro)q(duced)f(features)g(to)g(impro)o(v)o(e)g(the)g(p)q(ossible)g
(e\016ciency)h(of)f(the)h(generated)f(co)q(de;)-1650 56 y(for)c(instance,)f
(\015oating)f(p)q(oin)o(t)i(op)q(erations)f(ma)o(y)g(b)q(e)h(p)q(erformed)g
(in)f(single-precision)g(if)g(b)q(oth)-1650 57 y(op)q(erands)h(are)f @F8 @sf
(float)f @F14 @sf(rather)h(than)g @F8 @sf(double.)584 133 y @F15 @sf(RA)m
(TIONALE)-1763 b
3 @eop1

4 @bop0
@F4 @sf
[<
FFFFFF80FFFFFF80FFFFFF807FFFFFC03FFFFFC01FFFFFC00FFFFFC0070001C0038001C001
C001C000E000E0007000E0003C00E0001E0000000F0000000780000003E0000003F0000001
F8000000FC000000FE0000007F0000007F8000003FC000003FC000003FE03C003FE07E001F
E0FF001FE0FF001FE0FF003FE0FF003FC0FE003FC07C007F803800FF001F03FE000FFFFC00
03FFF00000FF8000>
. 27 39 -3 38 34] 50 @dc
[<
C01FF000E0FFFE00F3FFFF00FFE01F80FF0007C0FC0003E0F80003F0F00001F0F00001F0E0
0001F8E00001F8E00001F8600001F8000003F8000007F800000FF800007FF00007FFF000FF
FFE003FFFFE007FFFFC00FFFFF801FFFFE003FFFFC007FFFE0007FFE0000FFC00000FF0000
00FE0000E0FE0000E0FC0000E0FC0001E0FC0001E07C0001E07C0003E03E0007E01F001FE0
0F807FE007FFF9E003FFF0E0007F8060>
. 29 41 -4 40 38] 83 @dc
[<
001FE00000FFFC0003F01E0007E007000FC003801F8001C03F8001C07F8000007F0000007F
000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000007F0000007F00
00007F800E003F801F001F803F800FC03F8007E03F8003F01F0000FFFE00001FF800>
. 26 27 -2 26 31] 99 @dc
@F4 @sf
[<
00FF800007FFF0001FFFFC003F01FE007C007F007E007F80FF007FC0FF003FC0FF003FE0FF
003FE07E003FE03C003FE000003FE000003FE000003FC000003FC000007F8000007F000000
7E000001FC0000FFF00000FFC0000007F0000001F8000001FC000000FE000000FF000000FF
000F007F801F807F803F807F803F807F803F807F803F80FF001F00FF000F81FE0007FFFC00
03FFF000007F8000>
. 27 39 -3 38 34] 51 @dc
[<
FFFFF0003FF0FFFFF001FFF8FFFFF003FE1C03FC0007F80E03FC000FF80703FC001FF80703
FC001FF00703FC001FF00003FC001FF00003FC001FF00003FC001FE00003FC001FE00003FC
001FE00003FC001FE00003FC001FE00003FC001FC00003FC003F800003FC003F800003FC00
7F000003FC00FC000003FFFFF0000003FFFFFE000003FC007FC00003FC001FE00003FC0007
F80003FC0007F80003FC0003FC0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE
0003FC0003FE0003FC0003FE0003FC0003FC0003FC0007FC0003FC0007F80003FC000FF000
03FC007FE000FFFFFFFF8000FFFFFFFE0000FFFFFFE00000>
. 48 41 -3 40 52] 82 @dc
[<
7FFF807FFF807FFF8007F00007F00007F00007F00007F00007F00007F00007F00007F00007
F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000FFFF
C0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F03E07F07F03F07F
03F87F01F87F00FE3E003FFC0007F0>
. 24 42 -2 41 21] 102 @dc
[<
FFFE3FFF80FFFE3FFF80FFFE3FFF800FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FF003F8000FF003F8000FD803F8000F
D803F0000FCE03F000FFC787E000FFC1FFC000FFC07F0000>
. 33 27 -3 26 38] 110 @dc
[<
007FFFF8007FFFF8007FFFF80000FE000000FE000000FE000000FE000000FE000000FE0000
00FE000000FE00FFFFFFF8FFFFFFF8FFFFFFF8E0007E0070007E0038007E001C007E000E00
7E000E007E0007007E0003807E0001C07E0000E07E0000E07E0000707E0000387E00001C7E
00000E7E00000E7E0000077E000003FE000001FE000000FE000000FE0000007E0000003E00
00001E0000000E00>
. 29 39 -2 38 34] 52 @dc
[<
0000FFE00000000FFFFE0000003FC07F800000FF001FE00001FC0007F00003F80003F80007
F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC000007F807FC0
00007FC07FC000007FC07F8000003FC0FF8000003FE0FF8000003FE0FF8000003FE0FF8000
003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF800000
3FE07F8000003FC07F8000003FC07F8000003FC07FC000007FC03FC000007F803FC000007F
801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F80001FC0007F000
007F001FC000003FC07F80000007FFFC00000000FFE00000>
. 43 41 -4 40 52] 79 @dc
[<
007FF00003FFFE000FC01F801F0007C03C0001E07C0001F0F80000F8F80000F8F80000F8F8
0000F87C0001F83E0007F01FFFFFF007FFFFE00FFFFFC01FFFFF801FFFFF003FFFF8003E00
00003C000000380000003800000018FF80001FFFE0000FC1F8001F80FC001F007C003F007E
007F007F007F007F007F007F007F007F007F007F007F007F003F007E101F007C381F80FC7C
0FC1FE7C03FFE7F800FF81F0>
. 30 40 -2 26 34] 103 @dc
[<
01FC03FC0FFF0FFC3F839FFC7F00DF807E007F80FE003F80FE003F80FE003F80FE003F807F
003F803F003F803F803F800FE03F8007FC3F8000FFFF80000FFF8000003F8000003F800000
3F8007003F800F803F801FC03F001FC07E001FC07E000F81F80007FFF00001FF8000>
. 30 27 -2 26 33] 97 @dc
[<
FFFEFFFEFFFE0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE0FFE0FFE0FFE0000000000000000000000000000007000F801FC0
3FE03FE03FE01FC00F800700>
. 15 43 -3 42 19] 105 @dc
[<
FFFFFF00FFFFFF007F007F003F801F003FC00F001FE007000FE007800FF0078007F8038003
F8038001FC038001FE038000FF0000007F0000007F8000003FC000001FC000700FE000700F
F0007007F8007803F8007803FC003801FE003C00FE003F007F003FFFFF803FFFFF80>
. 25 27 -2 26 31] 122 @dc
[<
001F8000FFC001F86003F87003F03807F03807F03807F03807F03807F03807F03807F00007
F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000FFFF
F0FFFFF01FFFF007F00003F00003F00001F00000F00000F00000F000007000007000007000
007000>
. 21 38 -1 37 27] 116 @dc
[<
FFFE3FFF80FFFE3FFF80FFFE3FFF800FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FF003F8000FF003F8000FF803F8000F
F803F0000FEE03F0000FE787E0000FE1FFC0000FE07F00000FE00000000FE00000000FE000
00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000
0FE00000000FE0000000FFE0000000FFE0000000FFE0000000>
. 33 42 -3 41 38] 104 @dc
[<
003FC3FF8000FFF3FF8003F03BFF8007C00FF8000F8007F8001F8003F8003F8003F8007F00
03F8007F0003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8
00FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8003F8003F8001F8003F8000F
C007F80007E00FF80003F03FF80000FFFBF800001FE3F800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800
000003F800000003F80000003FF80000003FF80000003FF800>
. 33 42 -2 41 38] 100 @dc
[<
FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF80FE001FC003F800FE001FC003F800FE0
01FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC
003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F
800FE001FC003F800FE001FC003F800FE001FC003F800FF001FE003F800FF001FE003F800F
D801FF003F800FCC01F9803F000FC603F8C07F00FFC383F0707E00FFC1FFE03FFC00FFC07F
800FF000>
. 53 27 -3 26 57] 109 @dc
@F14 @sf
[<
000400020000000C00030000000E00070000000E00070000001E00078000001F000F800000
1F000F8000001F000F8000003C801E4000003C801E4000003C801E40000078C03E20000078
403C20000078403C200000F0403C100000F02078100000F02078100001F02078080001E010
F0080001E010F0080003E010F00C0003C009E0040003C009E0040003C009E00400078007C0
0200078007C00200078007C002000F0007C001000F00078001000F00078003801F800FC007
C0FFF07FF81FF0>
. 44 32 -1 30 47] 87 @dc
@F11 @sf
[<
81F80000C6060000E80380007000C0006000E0006000600060007000200030002000380020
003800000038000000380000007800000078000001F800001FF000007FF00001FFE00001FF
800003F8000003C0000003C00000038000000380010003800100038001000180010001C001
8000C003800060038000300580001C18C00007E040>
. 26 33 -3 31 26] 83 @dc

4 @eop0

0 0 4 @bop1 112 50 a @F14 @sf(4)1026 b @F10 @sf(Section)16 b(1.)34 b(INTR)o
(ODUCTION)-1649 145 y @F4 @sf(1.2)70 b(Scop)r(e)-332 115 y @F14 @sf(This)
17 b(Rationale)f(fo)q(cuses)h(primarily)f(on)h(additions,)f(clari\014catio)o
(ns,)g(and)h(c)o(hanges)g(made)g(to)-1651 56 y(the)d(language)e(as)g
(describ)q(ed)i(in)f(the)g(Base)g(Do)q(cumen)o(ts)g(\(see)g @F12 @sf(x)p 
@F14 @sf(1.5\).)18 b(It)13 b(is)g @F11 @sf(not)k @F14 @sf(a)c(rational)o
(e)f(for)-1651 57 y(the)17 b(C)e(language)g(as)h(a)f(whole:)21 b(the)16 b
(Committee)f(w)o(as)g(c)o(harged)h(with)f(co)q(difying)h(an)f(existing)-1651 
56 y(language,)f(not)g(designing)g(a)g(new)h(one.)k(No)14 b(attempt)g(is)g
(made)g(in)g(this)g(Rationale)g(to)f(defend)-1649 56 y(the)19 b
(pre-existing)f(syn)o(tax)f(of)h(the)h(language,)f(suc)o(h)g(as)g(the)h
(syn)o(tax)e(of)h(declarations)f(or)h(the)-1650 57 y(binding)e(of)e(op)q
(erators.)-345 63 y(The)f(Standard)g(is)f(con)o(triv)o(ed)g(as)g
(carefully)g(as)h(p)q(ossible)f(to)h(p)q(ermit)f(a)g(broad)h(range)f(of)h
(im-)-1651 57 y(plemen)o(tations,)f(from)g(direct)g(in)o(terpreters)g(to)f
(highly)h(optimizing)f(compilers)h(with)g(separate)-1651 56 y(link)o(ers,)h
(from)h(R)o(OM-based)g(em)o(b)q(edded)i(micro)q(computers)d(to)h(m)o
(ulti-user)f(m)o(ulti-pro)q(cessing)-1652 56 y(host)j(systems.)21 b(A)16 b
(certain)f(amoun)o(t)g(of)g(sp)q(ecialized)h(terminology)e(has)i
(therefore)f(b)q(een)i(c)o(ho-)-1650 57 y(sen)f(to)f(minimize)f(the)h
(bias)g(to)o(w)o(ard)e(compiler)i(implemen)o(tatio)o(ns)f(sho)o(wn)h(in)g
(the)g(Base)g(Do)q(c-)-1650 56 y(umen)o(ts.)-85 64 y(The)27 b(Rationale)e
(discusses)i(some)f(language)g(or)g(library)g(features)g(whic)o(h)g(w)o
(ere)h @F11 @sf(not)-1651 56 y @F14 @sf(adopted)14 b(in)o(to)f(the)h
(Standard.)19 b(These)c(are)e(usually)g(features)h(whic)o(h)f(are)h(p)q
(opular)f(in)h(some)g(C)-1651 56 y(implemen)o(tations,)f(so)i(that)g(a)f
(user)i(of)e(those)h(implemen)o(tations)f(migh)o(t)g(question)g(wh)o(y)h
(they)-1650 57 y(do)h(not)e(app)q(ear)i(in)f(the)g(Standard.)-621 182 y 
@F4 @sf(1.3)70 b(Reference)o(s)-481 132 y(1.4)g(Organization)24 b(of)g
(the)e(do)r(cumen)n(t)-1060 115 y @F14 @sf(This)16 b(Rationale)e(is)h
(organized)g(to)g(parallel)f(the)i(Standard)f(as)g(closely)g(as)g(p)q
(ossible,)g(to)g(facil-)-1651 56 y(itate)h(\014nding)g(relev)m(an)o(t)g
(discussions.)23 b(Some)16 b(subsections)g(of)g(the)h(Rationale)e
(comprise)h(just)-1651 57 y(the)h(subsection)f(title)e(from)i(the)g
(Standard:)21 b(this)16 b(indicates)f(that)g(the)h(Committee)f(though)o(t)
-1651 56 y(no)21 b(sp)q(ecial)f(commen)o(t)f(w)o(as)h(necessary)l(.)35 b
(Where)20 b(a)g(giv)o(en)g(discussion)g(touc)o(hes)g(on)g(sev)o(eral)-1651 
57 y(areas,)e(attempts)f(ha)o(v)o(e)g(b)q(een)i(made)f(to)g(include)g
(cross-references)g(within)f(the)h(text.)28 b(Suc)o(h)-1650 56 y
(references,)18 b(unless)e(they)h(sp)q(ecify)g(the)f(Standard)h(or)f(the)g
(Rationale,)g(are)g(delib)q(erately)g(am-)-1651 57 y(biguous.)-94 63 y(As)f
(for)g(the)h(organizati)o(on)e(of)h(the)g(Standard)h(itself,)d(Base)j(Do)q
(cumen)o(ts)f(existed)g(only)g(for)-1651 56 y(Sections)k(3)f(\(Language\))g
(and)h(4)f(\(Library\))f(of)h(the)h(Standard.)30 b(Section)18 b(1)g(\(In)o
(tro)q(duction\))-1651 57 y(w)o(as)12 b(mo)q(deled)i(after)e(the)h(in)o
(tro)q(ductory)e(matter)h(in)h(sev)o(eral)f(other)g(standards)g(for)g(pro)q
(cedural)-1650 56 y(languages.)31 b(Section)18 b(2)h(\(En)o(vironmen)o(t\))e
(w)o(as)h(added)i(to)e(\014ll)g(a)h(need,)h(iden)o(ti\014ed)f(from)f(the)
-1650 57 y(start,)h(to)f(place)h(a)f(C)h(program)f(in)g(con)o(text)h(and)g
(describ)q(e)g(the)g(w)o(a)o(y)f(it)g(in)o(teracts)g(with)g(its)-1651 56 y
(surroundings.)23 b(The)16 b(App)q(endices)i(w)o(ere)d(added)i(as)f(a)g
(rep)q(ository)f(for)g(related)h(material)o 15 x(not)-1651 57 y(included)k
(in)e(the)g(Standard)h(itself,)e(or)h(to)g(bring)g(together)g(in)g(a)g
(single)g(place)g(information)-1652 56 y(ab)q(out)e(a)e(topic)h(whic)o(h)g
(w)o(as)f(scattered)h(throughout)g(the)g(Standard.)-1134 63 y(Just)20 b
(as)f(the)g(Standard)h(prop)q(er)g(excludes)g(all)e(examples,)i(fo)q
(otnotes,)f(references,)i(and)-1650 57 y(app)q(endices,)g @F11 @sf(this)e
(r)n(ationale)g(is)g(not)g(p)n(art)h(of)f(the)h(Standar)n(d)p @F14 @sf(.)
30 b(The)19 b(C)f(language)g(is)g(de\014ned)-1649 56 y(b)o(y)j(the)f
(Standard)h(alone.)35 b(If)21 b(an)o(y)f(part)f(of)h(this)g(Rationale)g
(is)g(not)g(in)g(accord)g(with)g(that)-1651 57 y(de\014nition,)15 b(the)g
(Committee)f(w)o(ould)h(v)o(ery)g(m)o(uc)o(h)g(lik)o(e)f(to)h(b)q(e)h(so)e
(informed.)-1439 124 y
4 @eop1

5 @bop0
@F10 @sf
[<
07C000187000201C00400E00400700800780E00380F003C0F803C07003C00001E00001E000
01E00001E00001C00801C00C0180060380058700047C000400000400000400000200000200
0002000003FC0003FF0003FFC001FFE0018030>
. 20 31 -3 29 23] 53 @dc
[<
FFFFF00007803E0007800F0003C00F8003C007C003C003C003C003E003C003E003C001E001
E001E001E001E001E001E001E003E001E003C001E007C000F00F0000FFFE0000F00F8000F0
03C000F001E000F001F0007800F0007800F8007800F8007800F8007800F8007800F8003C00
F0003C01E0007C01C007FFFF00>
. 29 31 -2 30 32] 66 @dc
[<
1F8780784F40F02E20F01E10F00E10F00E10F00E10780E003C0E001E070007C70000FF0000
07000007000007001C07001E07001E06000C0C0007F800>
. 20 20 -3 19 23] 97 @dc
[<
0F8FE0186F00301E00700F00E00700E00700E00700E00700E00700F00380F00380F00380F0
03807003807803803801C01C03C00E03C00305C000F9C00001C00000E00000E00000E00000
E00000E00000E00000700000700000F00003F0000070>
. 20 32 -4 31 25] 100 @dc
[<
FFCFFCFFC01E01E01E001C01C01C000E00E00E000E00E00E000E00E00E000E00E00E000E00
E00E000E00E00E000700700700070070070007007007000700700700070070070007807807
00038038030003C034030007A07207001F986186000387C07C00>
. 34 20 -2 19 38] 109 @dc
@F4 @sf
[<
00FF800003FFF0000FFFF8001F01FE003C007F0078003F8078003F80FC001FC0FE001FC0FE
001FE0FE001FE0FE001FE07C001FE018001FE000001FE000001FE000001FC000001FC00000
1F800C003F000E003E000F80FC000FFFF8000E7FC0000E0000000E0000000E0000000E0000
000E0000000E0000000FFE00000FFFC0000FFFE0000FFFF0000FFFF8000FFFFC000FFFFE00
0F803F000C000300>
. 27 39 -3 38 34] 53 @dc
[<
FFFFFFFE0000FFFFFFFFC000FFFFFFFFF00003F8001FF80003F80007FC0003F80003FE0003
F80001FF0003F80000FF0003F80000FF8003F80000FF8003F80000FF8003F80000FF8003F8
0000FF8003F80000FF8003F80000FF0003F80000FF0003F80001FE0003F80001FE0003F800
03FC0003F80007F00003FFFFFFE00003FFFFFE000003F800FFC00003F8001FE00003F8000F
F00003F80007F80003F80003FC0003F80003FC0003F80003FE0003F80001FE0003F80001FE
0003F80001FE0003F80003FE0003F80003FC0003F80003FC0003F80007FC0003F8000FF800
03F8001FF000FFFFFFFFC000FFFFFFFF8000FFFFFFF80000>
. 41 41 -3 40 49] 66 @dc
@F11 @sf
[<
FFF80780038003800380038001C001C001C001C000E000E000E000E0007000700070007000
38003800380038001C031C00DC003C000E000600020002>
. 15 30 -5 29 23] 49 @dc
[<
3E000043800080C000E06000F07000F03800601C00001C00000E00000E00000F0003C70006
37800C0F801C0F801C07C01C03C01C03C01C03C01E01C01E01E01E01E01E01E00F01E00F00
E00700E00380E00180C000C0C0007180001F00>
. 19 31 -5 29 23] 57 @dc
[<
1F8000306000403000C00800C00C00800600800600C00300C00300C0030060070020070030
0F00183F00047E0003FC0001F80003F80007E40007C3000F81800F00800E00C00600600600
600600600300600100600080C0006180001F00>
. 19 31 -5 29 23] 56 @dc
[<
006000007000007000003800003800003800003800001C00001C00801FC0607C003F8E0008
0E00040E00060E0003070001070000870000C700006300003000003000001800001800000C
00000E000006000007000007000003000003800003800001C00001C00001C00000E00000E0
0000E0000060>
. 19 39 -2 29 23] 52 @dc
[<
80000000C0000000C000000060000000300000003000000018000000180000000C0000000C
000000060000000300000003000000018000000180000000C0000000C00000006000000030
0000003000000018000000180000000C0000000C0000000600000003000000030000000180
00000180000000C0000000C000000060000000300000003000000018000000180000000C00
000006000000060000000300000003000000018000000180000000C000000040>
. 26 45 -1 33 23] 47 @dc
@F11 @sf
[<
FFC07FF8001F000FC0000700078000010007800001800F800000800F000000400F00000020
1F000000101E000000081E000000043E000000063C000000023C000000017C00000000F800
000000F800000000F800000000F000000001F800000001EC00000001E400000003E2000000
03C100000003C080000007C0400000078020000007803000000F801000000F001C00000F80
1F0000FFF07FE0>
. 35 31 -2 30 34] 88 @dc
@F4 @sf
[<
003FC00000FFF00003FFFC0007E07E000FC03F001F803F801F801FC03F001FC03F001FE07F
001FE07F001FE07F001FE07F001FE0FF001FE0FF001FE0FF001FE0FF001FC0FF801FC0FF80
1F80FFC03F00FFC03E00FF707C00FF3FF800FF0FC000FF0000007F0000007F0000007F0000
003F8000003F801F001F803F801FC03F800FC03F8007E03F8003F01F8001FC0F0000FFFE00
003FFC000007F000>
. 27 39 -3 38 34] 54 @dc
[<
FFFFFFFC0000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0003FC0003FC0001FE0003
FC00007F0003FC00007F8003FC00003FC003FC00001FC003FC00001FE003FC00001FE003FC
00000FF003FC00000FF003FC00000FF003FC00000FF803FC00000FF803FC00000FF803FC00
000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC0000
0FF803FC00000FF003FC00000FF003FC00000FF003FC00000FF003FC00001FE003FC00001F
E003FC00001FC003FC00003FC003FC00007F8003FC0000FF0003FC0001FE0003FC0007FC00
03FC001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFF80000>
. 45 41 -3 40 53] 68 @dc
[<
7FFF1FFFC07FFF1FFFC07FFF1FFFC007F001FC0007F001FC0007F001FC0007F001FC0007F0
01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007
F001FC0007F001FC00FFFFFFFC00FFFFFFFC00FFFFFFFC0007F000000007F000000007F000
000007F000000007F000F00007F001F80007F003FC0007F003FC0007F003FC0003F803FC00
01F801F80000FC00F800007F80F000001FFFC0000001FF0000>
. 34 42 -1 41 38] 12 @dc
@F11 @sf
[<
3C0000630000F1800079C00030E00000E00000E00000700000700000700000700000380000
3800003800003800001C00001C00001C00001C00000E00000E00000E00020E000107000107
00008700008700004600003C00000000000000000000000000000000000000000000000380
0003C00003C0000180>
. 18 40 2 30 14] 106 @dc
@F8 @sf
[<
FFFFF0FFFFF0FFFFF07800703C00701E00700F007007800003C00001F00000F800003C0000
1E00000F007007807003C07001E07FFFF07FFFF03FFFF0>
. 20 20 -1 19 24] 122 @dc

5 @eop0

0 0 5 @bop1 112 50 a @F10 @sf(1.5.)35 b(Base)15 b(do)q(cumen)o(ts)1201 b 
@F14 @sf(5)-1651 145 y @F4 @sf(1.5)70 b(Base)23 b(do)r(cumen)n(ts)-643 102 y 
@F14 @sf(The)18 b(Base)g(Do)q(cumen)o(t)g(for)f(Section)g(3)g(\(Language\))g
(w)o(as)g(\\The)h(C)f(Reference)i(Man)o(ual")d(b)o(y)-1650 56 y(Dennis)i
(M.)e(Ritc)o(hie,)i(whic)o(h)f(w)o(as)g(used)h(for)e(sev)o(eral)h(y)o
(ears)g(within)f(A)l(T&T)i(Bell)f(Lab)q(orato-)-1651 56 y(ries)i(and)g
(re\015ects)h(enhancemen)o(ts)g(to)e(C)h(within)f(the)i(UNIX)f(en)o
(vironmen)o(t.)31 b(A)19 b(v)o(ersion)g(of)-1651 57 y(this)i(man)o(ual)f
(w)o(as)h(published)g(as)g(App)q(endix)h(A)f(of)g @F11 @sf(The)g(C)h(Pr)n
(o)n(gr)n(amming)f(L)n(anguage)i @F14 @sf(b)o(y)-1650 56 y(Kernighan)13 b
(and)g(Ritc)o(hie)g(\(K&R\).)g(Sev)o(eral)f(deviations)g(in)g(the)h(Base)g
(Do)q(cumen)o(t)f(from)g(K&R)-1649 57 y(w)o(ere)i(c)o(hallenged)g(during)g
(Committee)f(delib)q(erations,)g(but)i(most)e(c)o(hanges)h(from)g(K&R)h
(ulti-)-1651 56 y(mately)d(included)i(in)e(the)h(Standard)f(w)o(ere)h
(readily)f(endorsed)h(b)o(y)f(the)h(Committee)f(since)g(they)-1650 57 y(w)o
(ere)j(widely)g(kno)o(wn)g(and)g(accepted)h(outside)f(the)g(UNIX)h(user)g
(comm)o(unit)o(y)l(.)-1293 56 y(The)f(Base)g(Do)q(cumen)o(t)g(for)f
(Section)h(4)f(\(Library\))g(w)o(as)g(the)h @F11 @sf(1984)i(/usr/gr)n(oup)g
(Standar)n(d)p @F14 @sf(.)-1651 57 y(\(/usr/group)d(is)g(a)g(UNIX)h
(system)f(users)g(group.\))19 b(In)c(de\014ning)g(what)f(a)g(UNIX-lik)o(e)h
(en)o(viron-)-1651 56 y(men)o(t)e(lo)q(oks)f(lik)o(e)g(to)g(an)h
(applications)e(programmer)h(writing)f(in)i(C,)f(/usr/group)g(w)o(as)g
(obliged)-1651 57 y(to)17 b(describ)q(e)h(library)e(functions)g(usable)h
(in)g @F11 @sf(any)k @F14 @sf(C)c(en)o(vironmen)o(t.)25 b(The)17 b
(Committee)f(found)-1650 56 y(/usr/group's)k(w)o(ork)g(to)g(b)q(e)h(an)g
(excellen)o(t)f(co)q(di\014cation)g(of)g(existing)g(practice)g(in)h
(de\014ning)-1650 56 y(C)15 b(libraries,)f(once)h(the)h(UNIX-sp)q(eci\014c)h
(functions)e(had)g(b)q(een)h(remo)o(v)o(ed.)-1209 57 y(The)d(w)o(ork)f(b)q
(egun)i(b)o(y)f(/usr/group)g(is)f(b)q(eing)i(con)o(tin)o(ued)e(b)o(y)h
(the)h(IEEE)f(Committee)f(1003)-1652 56 y(to)22 b(de\014ne)i(a)e(p)q
(ortable)g(op)q(erating)g(system)g(in)o(terface)g(\(\\POSIX"\))h(based)g
(on)f(the)h(UNIX)-1650 57 y(en)o(vironmen)o(t.)h(The)17 b(X3J11)f
(Committee)f(has)h(b)q(een)i(w)o(orking)d(with)h(IEEE)h(1003)e(to)h
(resolv)o(e)-1651 56 y(p)q(oten)o(tial)i(areas)g(of)g(o)o(v)o(erlap)g(or)g
(con\015ict)h(b)q(et)o(w)o(een)g(the)g(t)o(w)o(o)e(Committees.)30 b(The)
19 b(result)f(of)-1651 57 y(this)11 b(co)q(ordination)f(has)g(b)q(een)i
(to)f(divide)f(resp)q(onsibilit)o(y)g(for)g(standardizing)g(library)g
(functions)-1651 56 y(in)o(to)k(t)o(w)o(o)f(areas.)19 b(Those)14 b
(functions)g(needed)i(for)e(a)g(C)g(implemen)o(tation)f(in)h(an)o(y)g(en)o
(vironmen)o(t)-1651 57 y(are)f(the)f(resp)q(onsibilit)o(y)f(of)h(X3J11)g
(and)h(are)f(included)h(in)g(the)f(Standard.)19 b(IEEE)13 b(1003)e
(retains)-1651 56 y(resp)q(onsibilit)o(y)j(for)h(those)f(functions)h(whic)o
(h)g(are)g(op)q(erating-system-sp)q(eci\014c;)g(the)g(\(POSIX\))-1650 57 y
(standard)g(will)f(refer)h(to)g(the)g(ANSI)h(C)f(Standard)g(for)g(C)g
(library)f(function)h(de\014nitions.)-1476 56 y(Man)o(y)k(of)f(the)i
(discussions)f(in)g(this)g(Rationale)f(emplo)o(y)g(the)i(form)o(ula)e(\\)p 
@F11 @sf(fe)n(atur)n(e)h(X)27 b @F14 @sf(has)-1651 56 y(b)q(een)20 b(c)o
(hanged)e(\(added,)h(remo)o(v)o(ed\))f(b)q(ecause)h(...)28 b(.")h(The)18 b
(c)o(hanges)g(\(additions,)g(remo)o(v)m(als\))-1652 57 y(should)e(b)q(e)g
(understo)q(o)q(d)f(as)g(b)q(eing)h(with)e(resp)q(ect)i(to)e(the)i
(appropriate)e(Base)h(Do)q(cumen)o(t.)-1586 143 y @F4 @sf(1.6)70 b
(De\014nitions)23 b(of)g(terms)-754 102 y @F14 @sf(The)14 b(de\014nitions)e
(of)h @F11 @sf(obje)n(ct)p @F14 @sf(,)f @F11 @sf(bit)p @F14 @sf(,)h @F11 @sf
(byte)p @F14 @sf(,)g(and)g @F11 @sf(alignment)j @F14 @sf(re\015ect)d(a)g
(strong)f(consensus,)h(reac)o(hed)-1650 56 y(after)i(considerable)g
(discussion,)f(ab)q(out)h(the)g(fundamen)o(tal)g(nature)g(of)g(the)g
(memory)f(organi-)-1651 56 y(zation)h(of)g(a)g(C)f(en)o(vironmen)o(t:)-465 
94 y @F12 @sf(\017)22 b @F14 @sf(All)13 b(ob)s(jects)f(in)h(C)g(m)o(ust)g
(b)q(e)h(represen)o(table)f(as)g(a)g(con)o(tiguous)f(sequence)j(of)d(b)o
(ytes,)h(eac)o(h)-1536 56 y(of)i(whic)o(h)g(is)g(at)f(least)h(8)f(bits)h
(wide.)-665 94 y @F12 @sf(\017)22 b @F14 @sf(A)15 b @F8 @sf(char)g @F14 @sf
(\(or)f @F8 @sf(signed)23 b(char)15 b @F14 @sf(or)g @F8 @sf(unsigned)22 b
(char)p @F14 @sf(\))15 b(o)q(ccupies)h(exactly)e(one)h(b)o(yte.)-1543 94 y
(\(Th)o(us,)e(for)f(instance,)h(on)f(a)h(mac)o(hine)f(with)g(36-bit)g 
@F11 @sf(wor)n(ds)p @F14 @sf(,)h(a)g @F11 @sf(byte)j @F14 @sf(can)d(b)q(e)g
(de\014ned)h(to)e(consist)-1651 56 y(of)g(9,)g(12,)g(18,)g(or)g(36)f
(bits,)h(these)h(n)o(um)o(b)q(ers)g(b)q(eing)f(all)f(the)i(exact)f
(divisors)f(of)h(36)g(whic)o(h)g(are)g(not)-1651 57 y(less)18 b(than)g
(8.\))28 b(These)18 b(strictures)f(co)q(dify)h(the)g(widespread)g
(presumption)g(that)f(an)o(y)h(ob)s(ject)-1651 56 y(can)g(b)q(e)g(treated)f
(as)g(an)g(arra)o(y)f(of)h(c)o(haracters,)f(the)i(size)f(of)g(whic)o(h)g
(is)g(giv)o(en)g(b)o(y)g(the)g @F8 @sf(sizeof)-1651 57 y @F14 @sf(op)q
(erator)e(with)f(that)h(ob)s(ject's)f(t)o(yp)q(e)h(as)g(its)f(op)q(erand.)
451 124 y @F15 @sf(RA)m(TIONALE)-1763 b
5 @eop1

6 @bop0
@F11 @sf
[<
7FE0FFE07FF0>
. 12 3 -3 10 16] 45 @dc
@F11 @sf
[<
3C00000062000000F3000000798000003180000001C0000001C0000000C0000000E0000000
E0038000E0064000E00E2000700E2000700E2000700E200070071000700700003807000038
0700003803800038038000380380001C0380001C01C0001C01C0001C01C0001C01C0000E00
E000FFFFE0000E0000000E0000000E00000007000000070000000700000007003000030078
00038078000180380000E01000003FE0>
. 29 41 2 31 26] 12 @dc
@F11 @sf
[<
0FFE0000E00000E0000070000070000070000070000038000038000F380030B800705C0070
3C00F01C00F01C00F00E00F00E00F00E00F00E007807007807007807003807003C03801C03
800E03800705800388C000F040>
. 18 29 -4 19 21] 113 @dc
@F11 @sf
[<
07E000000C18000038040000300200007001000070008000F0004000F0004000F0002000F0
002000F0002000780010007800100078001000780010003C0008003C0008003C0008003C00
08001E0004001E0004001E0004001E0004000F0002000F0002000F0002000F000200078001
00078001000780010007C003C07FFC1FF8>
. 29 32 -9 30 34] 85 @dc
@F11 @sf
[<
FFF8000F800007800007800007800007800003C00003C00003C00003C00001E00001E00001
E00001E00000F00000F00000F00000F000007800007800007800007800003C00003C00003C
00003C00001E00001E00001E00001F0001FFF0>
. 20 31 -3 30 18] 73 @dc
@F4 @sf
[<
00380000007C000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000
FE0000007E0000007E0000007E0000007E0000003E0000003E0000003F0000001F0000001F
0000000F0000000F00000007800000078000000380000001C0000000E000E000E000E00070
00E000380070001C0070000E0070000E007FFFFF007FFFFF807FFFFFC07FFFFFE03FFFFFF0
3FFFFFF03FFFFFF03E00000038000000>
. 28 41 -4 40 34] 55 @dc
[<
00003FF800000003FFFF0000000FFFFFC000003FF007E00000FF8000F80001FE00003C0003
FC00001E0007F000000E000FF0000007001FE0000007001FE0000003803FC0000003803FC0
000003807FC0000003807F80000000007F8000000000FF8000000000FF8000000000FF8000
000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
00007F80000000007F80000003807FC0000003803FC0000003803FC0000007801FE0000007
801FE0000007800FF000000F8007F000001F8003FC00003F8001FE00007F8000FF8001FF80
003FF007DF80000FFFFF87800003FFFE038000003FF00180>
. 41 41 -4 40 50] 67 @dc
[<
FFFEFFFEFFFE0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE0FFE0FFE0FFE0>
. 15 42 -3 41 19] 108 @dc

6 @eop0

0 0 6 @bop1 112 50 a @F14 @sf(6)1026 b @F10 @sf(Section)16 b(1.)34 b(INTR)o
(ODUCTION)-1578 145 y @F14 @sf(These)16 b(de\014nitions)f(do)g(not)g
(preclude)h(\\holes")e(in)h @F8 @sf(struct)f @F14 @sf(ob)s(jects.)40 b
(Suc)o(h)16 b(holes)f(are)g(in)-1651 57 y(fact)h(often)g(mandated)h(b)o(y)f
(alignmen)o(t)f(and)i(pac)o(king)e(requiremen)o(ts.)23 b(The)17 b(holes)f
(simply)f(do)-1650 56 y(not)g(participate)f(in)h(represen)o(ting)g(the)g
(\(comp)q(osite\))f(v)m(alue)i(of)f(an)g(ob)s(ject.)-1246 56 y(The)g
(de\014nition)f(of)f @F11 @sf(obje)n(ct)18 b @F14 @sf(do)q(es)d(not)f
(emplo)o(y)f(the)i(notion)e(of)h(t)o(yp)q(e.)20 b(Th)o(us)14 b(an)g(ob)s
(ject)g(has)-1651 57 y(no)19 b(t)o(yp)q(e)g(in)f(and)h(of)f(itself.)29 b
(Ho)o(w)o(ev)o(er,)19 b(since)f(an)h(ob)s(ject)f(ma)o(y)g(only)g(b)q(e)h
(designated)g(b)o(y)f(an)-1650 56 y @F11 @sf(lvalue)h @F14 @sf(\(see)c 
@F12 @sf(x)p @F14 @sf(3.2.2.1\))o(,)f(the)h(phrase)g(\\the)g(t)o(yp)q(e)h
(of)f(an)g(ob)s(ject")f(is)h(tak)o(en)g(to)g(mean,)g(here)g(and)-1650 57 y
(in)h(the)f(Standard,)g(\\the)g(t)o(yp)q(e)g(of)g(the)g(lv)m(alue)g
(designating)f(this)h(ob)s(ject,")f(and)h(\\the)g(v)m(alue)h(of)-1651 56 y
(an)h(ob)s(ject")f(means)h(\\the)g(con)o(ten)o(ts)f(of)h(the)f(ob)s(ject)h
(in)o(terpreted)f(as)h(a)f(v)m(alue)h(of)g(the)g(t)o(yp)q(e)g(of)-1651 57 y
(the)f(lv)m(alue)f(designating)f(the)h(ob)s(ject.")-615 56 y(The)h
(concept)h(of)e @F11 @sf(multi-byte)j(char)n(acter)e @F14 @sf(has)g(b)q
(een)h(added)f(to)g(C)f(to)h(supp)q(ort)g(v)o(ery)f(large)-1651 57 y(c)o
(haracter)g(sets.)20 b(See)15 b @F12 @sf(x)q @F14 @sf(2.2.1)o(.2.)o -549 
101 a(The)h(terms)e @F11 @sf(unsp)n(e)n(ci\014e)m(d)h(b)n(ehavior)p @F14 @sf
(,)g @F11 @sf(unde\014ne)n(d)g(b)n(ehavior)p @F14 @sf(,)g(and)g @F11 @sf
(implementation-de\014ne)n(d)g(b)n(e-)-1651 56 y(havior)24 b @F14 @sf(are)
18 b(used)g(to)g(categorize)f(the)h(result)g(of)f(writing)g(programs)g
(whose)h(prop)q(erties)f(the)-1650 57 y(Standard)f(do)q(es)f(not,)g(or)g
(cannot,)g(completely)f(describ)q(e.)21 b(The)16 b(goal)e(of)h(adopting)g
(this)g(cate-)-1651 56 y(gorization)10 b(is)i(to)f(allo)o(w)f(a)i(certain)f
(v)m(ariet)o(y)g(among)g(implemen)o(tations)f(whic)o(h)i(p)q(ermits)f 
@F11 @sf(quality)-1650 57 y(of)j(implementation)h @F14 @sf(to)c(b)q(e)h
(an)g(activ)o(e)f(force)h(in)f(the)h(mark)o(etplace)f(as)h(w)o(ell)e(as)i
(to)f(allo)o(w)f(certain)-1651 56 y(p)q(opular)19 b(extensions,)f(without)f
(remo)o(ving)g(the)h(cac)o(het)g(of)g @F11 @sf(c)n(onformanc)n(e)g(to)i
(the)f(Standar)n(d)p @F14 @sf(.)-1651 57 y(App)q(end)q(ix)f(F)g(to)f(the)h
(Standard)f(catalogs)f(those)i(b)q(eha)o(viors)f(whic)o(h)h(fall)e(in)o
(to)h(one)h(of)f(these)-1650 56 y(three)f(categories.)-255 56 y @F11 @sf
(Unsp)n(e)n(ci\014)o(e)n(d)21 b(b)n(ehavior)27 b @F14 @sf(giv)o(es)21 b
(the)h(implemen)o(tor)f(some)g(latitude)g(in)h(translati)o(ng)f(pro-)-1651 
57 y(grams.)e(This)c(latitude)f(do)q(es)i(not)f(extend)g(as)g(far)g(as)g
(failing)e(to)i(translate)f(the)h(program.)-1509 56 y @F11 @sf(Unde\014ne)n
(d)h(b)n(ehavior)21 b @F14 @sf(giv)o(es)16 b(the)g(implemen)o(tor)f
(license)h(not)g(to)g(catc)o(h)g(certain)g(program)-1652 57 y(errors)h
(that)g(are)g(di\016cult)g(to)f(diagnose.)26 b(It)17 b(also)g(iden)o
(ti\014es)g(areas)f(of)h(p)q(ossible)g(conforming)-1651 56 y(language)j
(extension:)31 b(the)21 b(implemen)o(tor)e(ma)o(y)h(augmen)o(t)g(the)h
(language)f(b)o(y)g(pro)o(viding)g(a)-1651 57 y(de\014nition)c(of)e(the)i
(o\016ciall)o(y)e(unde\014ned)q 16 x(b)q(eha)o(vior.)-833 56 y @F11 @sf
(Implementation-de\014ne)n(d)20 b(b)n(ehavior)25 b @F14 @sf(giv)o(es)20 b
(an)g(implemen)o(tor)g(the)g(freedom)h(to)e(c)o(ho)q(ose)-1650 57 y(the)h
(appropriate)e(approac)o(h,)h(but)h(requires)f(that)f(this)h(c)o(hoice)g
(b)q(e)h(explained)f(to)f(the)i(user.)-1651 56 y(Beha)o(viors)14 b
(designated)g(as)f(implemen)o(tation-de\014ned)h(are)g(generally)f(those)h
(in)g(whic)o(h)g(a)f(user)-1650 57 y(could)21 b(mak)o(e)f(meaningful)g(co)q
(ding)h(decisions)g(based)g(on)f(the)h(implemen)o(tation)e(de\014nition.)
-1651 56 y(Implemen)o(tors)g(should)g(b)q(ear)g(in)g(mind)g(this)f
(criterion)g(when)h(deciding)g(ho)o(w)g(extensiv)o(e)f(an)-1650 56 y
(implemen)o(tation)13 b(de\014nition)h(ough)o(t)f(to)h(b)q(e.)20 b(As)14 b
(with)f(unsp)q(eci\014ed)q 15 x(b)q(eha)o(vior,)h(simply)f(failing)-1652 
57 y(to)20 b(translate)e(the)i(source)g(con)o(taining)f(the)h(implemen)o
(tati)o(on-de\014ned)g(b)q(eha)o(vior)g(is)f(not)g(an)-1650 56 y(adequate)d
(resp)q(onse.)-375 142 y @F4 @sf(1.7)70 b(Compliance)-508 102 y @F14 @sf
(The)19 b(three-fold)g(de\014nition)f(of)g(compliance)g(is)h(used)g(to)f
(broaden)g(the)h(p)q(opulation)f(of)g(con-)-1650 56 y(forming)d(programs)f
(and)i(distinguish)e(b)q(et)o(w)o(een)i(conforming)e(programs)h(using)g(a)g
(single)g(im-)-1651 57 y(plemen)o(tation)f(and)i(p)q(ortable)f(conforming)f
(programs.)-908 56 y(A)d @F11 @sf(strictly)g(c)n(onforming)h(pr)n(o)n(gr)n
(am)i @F14 @sf(is)c(another)g(term)h(for)f(a)g(maximally)f(p)q(ortable)h
(program.)-1652 57 y(The)15 b(goal)e(is)h(to)g(giv)o(e)f(the)i(programmer)e
(a)h @F11 @sf(\014ghting)g(chanc)n(e)j @F14 @sf(to)d(mak)o(e)g(p)q(o)o(w)o
(erful)g(C)g(programs)-1652 56 y(that)i(are)f(also)g(highly)g(p)q
(ortable,)g(without)g(demeaning)h(p)q(erfectly)g(useful)g(C)f(programs)g
(that)-1651 57 y(happ)q(en)i(not)e(to)f(b)q(e)i(p)q(ortable.)j(Th)o(us)d
(the)f(adv)o(erb)g @F11 @sf(strictly)p @F14 @sf(.)-1162 124 y
6 @eop1

7 @bop0
@F10 @sf
[<
3000007800007800007800003C00003C00003C00001C00001C00001E00000E00000E000006
00000700000300000300000180000080000040000040000020000010000008008004008002
00C002004001007FFF807FFFC03FFFE0200000>
. 19 31 -7 29 23] 55 @dc
[<
FFC01E001C000E000E000E000E000E000E0007000700070007000700070003800380038003
800380038001C001C001C001C001C001C000E000E001E007E000E0>
. 11 32 -1 31 13] 108 @dc
@F14 @sf
[<
FFFFFFFFFFF0>
. 44 1 0 12 45] 124 @dc

7 @eop0

0 0 7 @bop1 112 50 a @F10 @sf(1.7.)35 b(Compliance)1288 b @F14 @sf(7)-1580 
145 y(By)16 b(de\014ning)g(conforming)f(implemen)o(tations)f(in)i(terms)g
(of)f(the)h(programs)f(they)h(accept,)-1651 57 y(the)23 b(Standard)f(lea)o
(v)o(es)g(op)q(en)h(the)g(do)q(or)f(for)g(a)g(broad)g(class)g(of)g
(extensions)g(as)g(part)g(of)g(a)-1651 56 y(conforming)c(implemen)o
(tation.)o 29 x(By)g(de\014ning)h(b)q(oth)g @F11 @sf(c)n(onforming)f
(hoste)n(d)24 b @F14 @sf(and)18 b @F11 @sf(c)n(onforming)-1651 56 y(fr)n
(e)n(estanding)j @F14 @sf(implemen)o(tations,)o 18 x(the)d(Standard)g
(recognizes)g(the)g(use)h(of)e(C)h(to)g(write)f(suc)o(h)-1650 57 y
(programs)10 b(as)g(op)q(erating)g(systems)g(and)g(R)o(OM-based)i
(applications,)o 10 x(as)e(w)o(ell)g(as)g(more)g(con)o(v)o(en-)-1650 56 y
(tional)16 b(hosted)g(applications.)23 b(Bey)o(ond)17 b(this)f(t)o(w)o
(o-lev)o(el)f(sc)o(heme,)i(no)g(additional)e(subsetting)-1651 57 y(is)h
(de\014ned)g(for)f(C,)g(since)h(the)g(Committ)o(ee)f(felt)g(strongly)f
(that)h(to)q(o)f(man)o(y)i(lev)o(els)e(dilutes)h(the)-1650 56 y(e\013ectiv)o
(eness)g(of)g(a)g(standard.)-464 57 y @F11 @sf(Conforming)j(pr)n(o)n(gr)n
(am)j @F14 @sf(is)c(th)o(us)g(the)g(most)g(toleran)o(t)f(of)h(all)f
(categories,)h(since)g(only)g(one)-1650 56 y(conforming)f(implemen)o(tati)o
(on)f(need)i(accept)f(a)g(program)f(to)g(rule)h(it)g(conforming.)21 b(The)c
(pri-)-1651 57 y(mary)e(limitat)o(ion)f(on)h(this)f(license)i(is)e @F12 @sf
(x)p @F14 @sf(2.1.1.3.)o -761 56 a(Div)o(erse)19 b(sections)f(of)h(the)h
(Standard)f(comprise)g(the)g(\\treat)o(y")f(b)q(et)o(w)o(een)i
(programmers)-1652 57 y(and)d(implemen)o(tors)e(regarding)g(v)m(arious)g
(name)i(spaces)f(|)g(if)g(the)g(programmer)f(follo)o(ws)f(the)-1650 56 y
(rules)f(of)g(the)h(Standard)f(the)g(implemen)o(tation)f(will)f(not)i(imp)q
(ose)g(an)o(y)g(further)g(restrictions)f(or)-1651 56 y(surprises:)-117 91 y 
@F12 @sf(\017)22 b @F14 @sf(A)11 b(strictly)e(conforming)h(program)g(can)h
(use)g(only)g(a)f(restricted)g(subset)i(of)e(the)h(iden)o(ti\014ers)-1537 
56 y(that)22 b(b)q(egin)g(with)g(underscore)h(\()p @F12 @sf(x)p @F14 @sf
(4.1.2\).)o 40 x(Iden)o(ti\014ers)g(and)g(k)o(eyw)o(ords)e(are)h(distinct)
-1537 57 y(\()p @F12 @sf(x)p @F14 @sf(3.1.1\).)o 18 x(Otherwise,)13 b
(programmers)f(can)i(use)f(whatev)o(er)g(in)o(ternal)f(names)h(they)g
(wish;)-1537 56 y(a)20 b(conforming)f(implemen)o(tatio)o(n)g(is)h(guaran)o
(teed)f(not)h(to)f(use)h(con\015icting)g(names)g(of)-1537 56 y(the)c(form)f
(reserv)o(ed)h(to)f(the)g(programmer.)20 b(\(Note,)15 b(ho)o(w)o(ev)o(er,)g
(the)h(class)f(of)g(iden)o(ti\014ers)-1537 57 y(whic)o(h)g(are)g(iden)o
(ti\014ed)g(in)g @F12 @sf(x)q @F14 @sf(4.13)e(as)i(p)q(ossible)g(future)g
(library)f(names.\))-1283 92 y @F12 @sf(\017)22 b @F14 @sf(The)14 b
(external)f(functions)g(de\014ned)i(in,)e(or)g(called)g(within,)g(a)g(p)q
(ortable)g(program)f(can)i(b)q(e)-1536 57 y(named)j(whatev)o(er)f(the)g
(programmer)f(wishes,)h(as)g(long)g(as)g(these)h(names)f(are)g(distinct)
-1537 56 y(from)c(the)g(external)g(names)h(de\014ned)g(b)o(y)g(the)f
(Standard)g(library)g(\()p @F12 @sf(x)p @F14 @sf(4\).)18 b(External)11 b
(names)-1536 57 y(in)i(a)f(maximall)o(y)f(p)q(ortable)i(program)e(m)o(ust)h
(b)q(e)h(distinct)f(within)g(the)h(\014rst)f(6)g(c)o(haracters)-1537 56 y
(mapp)q(ed)k(in)o(to)e(one)i(case)f(\()p @F12 @sf(x)p @F14 @sf(3.1.2\))o
(.)-653 92 y @F12 @sf(\017)22 b @F14 @sf(A)c(maximal)o(ly)e(p)q(ortable)h
(program)f(cannot,)h(of)g(course,)h(assume)f(an)o(y)g(language)f(k)o(ey-)
-1536 57 y(w)o(ords)f(other)f(than)h(those)g(de\014ned)i(in)e(the)g
(Standard.)-1002 92 y @F12 @sf(\017)22 b @F14 @sf(Eac)o(h)g(function)f
(called)g(within)g(a)g(maximally)f(p)q(ortable)h(program)f(m)o(ust)h
(either)h(b)q(e)-1536 57 y(de\014ned)f(within)e(some)h(source)g(\014le)f
(of)h(the)g(program)e(or)i(else)f(b)q(e)i(a)e(function)h(in)f(the)-1536 
56 y(Standard)c(library)l(.)-383 90 y(One)g(prop)q(osal)f(long)g(en)o
(tertained)f(b)o(y)i(the)f(Committee)f(w)o(as)h(to)g(mandate)g(that)f(eac)o
(h)i(im-)-1651 57 y(plemen)o(tation)20 b(ha)o(v)o(e)g(a)g(translat)o
(e-time)f(switc)o(h)h(for)f(turning)h(o\013)g(extensions)g(and)g(making)
-1651 56 y(a)h(pure)h(Standard-conforming)e(implemen)o(tation.)36 b(It)21 b
(w)o(as)g(p)q(oin)o(ted)g(out,)h(ho)o(w)o(ev)o(er,)f(that)-1651 57 y
(virtually)d(ev)o(ery)h(translate-ti)o(me)f(switc)o(h)g(setting)g(e\013ectiv)o
(ely)g(creates)h(a)g(di\013eren)o(t)f(\\imple-)-1651 56 y(men)o(tation,")
12 b(ho)o(w)o(ev)o(er)h(close)g(ma)o(y)g(b)q(e)i(the)e(e\013ect)h(of)f
(translati)o(ng)f(with)h(t)o(w)o(o)f(di\013eren)o(t)h(switc)o(h)-1651 57 y
(settings.)29 b(Whether)18 b(an)h(implemen)o(tor)e(c)o(ho)q(oses)h(to)g
(o\013er)f(a)h(family)f(of)h(conforming)g(imple-)-1651 56 y(men)o
(tations,)11 b(or)h(to)f(o\013er)g(an)g(assortmen)o(t)g(of)g
(non-conforming)g(implemen)o(tations)f(along)h(with)-1651 57 y(one)17 b
(that)e(conforms,)g(w)o(as)h(not)f(the)h(business)h(of)f(the)g(Committee)e
(to)i(mandate.)22 b(The)16 b(Stan-)-1650 56 y(dard)h(therefore)e(con\014nes)i
(itself)e(to)g(describing)h(conformance,)g(and)g(merely)g(suggests)f
(areas)-1651 57 y(where)h(extensions)f(will)f(not)h(compromise)f
(conformance.)369 124 y @F15 @sf(RA)m(TIONALE)-1763 b
7 @eop1

8 @bop0
@F4 @sf
[<
007FC00003FFF8000FFFFC001FC03E003F000F007C0007807C0003C0F80003C0F80003E0F8
0003E0F80003E0F80007E0F80007E078001FE07C007FE03C01FFC01E03FFC00F0FFF8007FF
FF0001FFFE0001FFFC0003FFF80007FFE0000FFFF8001FFE3C001FFC1E003FF01F003FC00F
003F000F803F000F803E000F803E000F801E000F801E001F000F003F0007C07E0003FFFC00
01FFF000003FC000>
. 27 39 -3 38 34] 56 @dc
[<
FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC00000003FC
00000003FC00000003FC00000003FC00000003FC00000003FC03800003FC03800003FC0380
0003FC03800003FC07800003FC07800003FC1F800003FFFF800003FFFF800003FFFF800003
FC1F800003FC07800003FC07800003FC03800003FC03807003FC03807003FC03807003FC00
00F003FC0000E003FC0000E003FC0000E003FC0001E003FC0001E003FC0003E003FC000FE0
03FC003FC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0>
. 36 41 -3 40 43] 70 @dc

8 @eop0

0 0 8 @bop1 112 50 a @F14 @sf(8)1026 b @F10 @sf(Section)16 b(1.)34 b(INTR)o
(ODUCTION)-1578 145 y @F14 @sf(Other)14 b(prop)q(osals)f(rejected)i(more)e
(quic)o(kly)g(w)o(ere)h(to)f(pro)o(vide)g(a)h(v)m(alidation)f(suite,)g
(and)h(to)-1651 57 y(pro)o(vide)f(the)g(source)g(co)q(de)h(for)f(an)g
(acceptable)g(library)l(.)18 b(Both)13 b(w)o(ere)g(recognized)g(to)f(b)q
(e)i(ma)s(jor)-1652 56 y(undertakings,)j(and)h(b)q(oth)f(w)o(ere)g(seen)g
(to)g(compromise)f(the)h(in)o(tegrit)o(y)f(of)g(the)h(Standard)g(b)o(y)-1650 
56 y(giving)11 b(concrete)i(examples)e(that)h(migh)o(t)e(b)q(ear)j(more)e
(w)o(eigh)o(t)g(than)h(the)g(Standard)f(itself.)18 b(The)-1650 57 y(p)q
(oten)o(tial)c(legal)g(implications)g(w)o(ere)h(also)f(a)h(concern.)-881 
56 y(Standardization)22 b(of)g(suc)o(h)h(to)q(ols)f(as)g(program)g
(consistency)h(c)o(hec)o(k)o(ers)f(and)h(sym)o(b)q(olic)-1651 57 y
(debuggers)e(lies)e(outside)h(the)g(mandate)g(of)g(the)g(Committee.)34 b
(Ho)o(w)o(ev)o(er,)20 b(the)g(Committee)-1652 56 y(has)h(tak)o(en)g(pains)g
(to)f(allo)o(w)g(suc)o(h)h(programs)f(to)h(w)o(ork)f(with)g(conforming)g
(programs)g(and)-1650 57 y(implemen)o(tations.)-342 143 y @F4 @sf(1.8)70 b
(F)-6 b(uture)23 b(directions)-785 1963 y
8 @eop1

9 @bop0
@F1 @sf
[<
FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFF07FFFFFFFF03FFFFFFFF01FFFFFFFF00FFF
FFFFF007FFFFFFF003FFFFFFF001FFFFFFF800F00000F800780000F8003C000078001E0000
78000F0000780007C0003C0003E0003C0001F0003C0001F800000000FC000000007F000000
003F800000001FC00000000FF000000007F800000007FC00000003FE00000001FF00000001
FF80000000FFC0000000FFE00000007FF00000007FF00000007FF80000003FF80000003FFC
1F80003FFC3FC0003FFC7FE0003FFCFFF0003FFCFFF0003FFCFFF0003FFCFFF0003FFCFFF0
003FF8FFE0007FF87FC0007FF07F8000FFF03E0000FFE01F0001FFC00F8007FF8007F01FFF
0003FFFFFE0001FFFFF800007FFFE0000007FE0000>
. 38 56 -5 55 50] 50 @dc
@F2 @sf
[<
FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFC0FF
FFFFFFFFFFFFFFC0001FFFC00000FFFFC0001FFFC000000FFFC0001FFFC0000003FFC0001F
FFC0000000FFE0001FFFC00000007FE0001FFFC00000003FE0001FFFC00000001FE0001FFF
C00000000FE0001FFFC000000007E0001FFFC000000007F0001FFFC000000003F0001FFFC0
00000003F0001FFFC000000001F0001FFFC000000001F0001FFFC000000001F0001FFFC000
000001F8001FFFC000000000F8001FFFC0007C0000F8001FFFC0007C0000F8001FFFC0007C
0000F8001FFFC0007C00007C001FFFC0007C00007C001FFFC0007C00007C001FFFC000FC00
0000001FFFC000FC000000001FFFC000FC000000001FFFC001FC000000001FFFC003FC0000
00001FFFC01FFC000000001FFFFFFFFC000000001FFFFFFFFC000000001FFFFFFFFC000000
001FFFFFFFFC000000001FFFFFFFFC000000001FFFC01FFC000000001FFFC003FC00000000
1FFFC001FC000000001FFFC000FC000000001FFFC000FC000000001FFFC000FC000000001F
FFC0007C0007C0001FFFC0007C0007C0001FFFC0007C0007C0001FFFC0007C0007C0001FFF
C0007C000F80001FFFC0007C000F80001FFFC00000000F80001FFFC00000000F80001FFFC0
0000001F80001FFFC00000001F80001FFFC00000001F80001FFFC00000003F80001FFFC000
00003F00001FFFC00000007F00001FFFC00000007F00001FFFC0000000FF00001FFFC00000
03FF00001FFFC0000007FF00001FFFC000001FFF00001FFFC00001FFFF00FFFFFFFFFFFFFF
FF00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE
00>
. 70 70 -4 69 78] 69 @dc
[<
0000000001F000000000000000000003F800000000000000000003F8000000000000000000
07FC00000000000000000007FC0000000000000000000FFE0000000000000000000FFE0000
000000000000001FFF0000000000000000001FFF0000000000000000001FFF000000000000
0000003FFF8000000000000000003FFF8000000000000000007FFFC000000000000000007F
FFC00000000000000000FFFFE00000000000000000FFFFE00000000000000001FFFFF00000
000000000001FFFFF00000000000000001FFFDF00000000000000003FFFDF8000000000000
0003FFF8F80000000000000007FFF8FC0000000000000007FFF87C000000000000000FFFF0
7E000000000000000FFFF03E000000000000000FFFE03E000000000000001FFFE03F000000
000000001FFFC01F000000000000003FFFC01F800000000000003FFFC00F80000000000000
7FFF800FC00000000000007FFF8007C0000000000000FFFF0007E0000000000000FFFF0003
E0000000000000FFFE0003E0000000000001FFFE0003F0000000000001FFFC0001F0000000
000003FFFC0001F8000000000003FFFC0000F8000000000007FFF80000FC000000000007FF
F800007C00000000000FFFF000007E00000000000FFFF000007E00000000000FFFE000003E
00000000001FFFE000003F00000000001FFFC000001F00000000003FFFC000001F80000000
003FFFC000000F80000000007FFF8000000FC0000000007FFF80000007C0000000007FFF00
000007C000000000FFFF00000007E000000000FFFE00000003E000000001FFFE00000003F0
00000001FFFE00000001F000000003FFFC00000001F800000003FFFC00000000F800000007
FFF800000000FC00000007FFF8000000007C00000007FFF0000000007C0000000FFFF00000
00007E0000000FFFE0000000003E0000001FFFE0000000003F0000001FFFE0000000001F00
00003FFFC0000000001F8000003FFFC0000000000F8000007FFF80000000003FE000FFFFFF
FFE000001FFFFFE0FFFFFFFFE000001FFFFFE0FFFFFFFFE000001FFFFFE0FFFFFFFFE00000
1FFFFFE0FFFFFFFFE000001FFFFFE0>
. 83 72 -3 70 90] 86 @dc
[<
FFFFFFF00003C00007FFFFFFFFFFFFFFF00007E00007FFFFFFFFFFFFFFF00007E00007FFFF
FFFFFFFFFFF0000FF00007FFFFFFFFFFFFFFF0000FF00007FFFFFFFF007FE000000FF00000
00FFF800001F8000001FF8000000FFF800001F8000001FF8000000FFF800001F8000003FFC
000000FFF800001F8000003FFC000000FFF800001F8000007FFE000000FFF800001F800000
7FFE000000FFF800001F800000FFFF000000FFF800001F800000FFFF000000FFF800001F80
0001FFF7800000FFF800001F800001FFF7800000FFF800001F800001FFF7800000FFF80000
1F800003FFE3C00000FFF800001F800003FFE3C00000FFF800001F800007FFC1E00000FFF8
00001F800007FFC1E00000FFF800001F80000FFF80F00000FFF800001F80000FFF80F00000
FFF800001F80001FFF00780000FFF800001F80001FFF00780000FFF800001F80001FFF0078
0000FFF800001F80003FFE003C0000FFF800001F80003FFE003C0000FFF800001F80007FFC
001E0000FFF800001F80007FFC001E0000FFF800001F8000FFF8000F0000FFF800001F8000
FFF8000F0000FFF800001F8001FFF000078000FFF800001F8001FFF000078000FFF800001F
8003FFE00003C000FFF800001F8003FFE00003C000FFF800001F8003FFE00003C000FFF800
001F8007FFC00001E000FFF800001F8007FFC00001E000FFF800001F800FFF800000F000FF
F800001F800FFF800000F000FFF800001F801FFF0000007800FFF800001F801FFF00000078
00FFF800001F803FFE0000003C00FFF800001F803FFE0000003C00FFF800001F807FFC0000
001E00FFF800001F807FFC0000001E00FFF800001F807FFC0000001E00FFF800001F80FFF8
0000000F00FFF800001F80FFF80000000F00FFF800001F81FFF00000000780FFF800001F81
FFF00000000780FFF800001F83FFE000000003C0FFF800001F83FFE000000003C0FFF80000
1F87FFC000000001E0FFF800001F87FFC000000001E0FFF800001F87FFC000000001E0FFF8
00001F8FFF8000000000F0FFF800001F8FFF8000000000F0FFF800001F9FFF000000000078
FFF800001F9FFF000000000078FFF800001FBFFE00000000003CFFF800001FBFFE00000000
003CFFF800001FFFFC00000000001EFFF800001FFFFC00000000001EFFF800001FFFF80000
0000000FFFF800FFFFFFF800000000000FFFFFFFFFFFFFF800000000000FFFFFFFFFFFFFF0
000000000007FFFFFFFFFFFFF0000000000007FFFFFFFFFFFFE0000000000003FFFFFF>
. 104 71 -4 70 113] 77 @dc
@F8 @sf
[<
0C18001E3C001E3C001E3C001E3C001E3C001E3C007FFFC0FFFFE0FFFFE07FFFC00F1E000F
1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC0078F00078F00078F00078F
00078F00078F00030600>
. 19 28 -2 27 24] 35 @dc
/@F6 @newfont
@F6 @sf
[<
FFFFF0FFFFF07FFFF03FFFF01FFFF00FFFF00E003807001803801801C01800E01800700000
3800003E00001F00000F800007C00007E00003F00003F00003F83803F87C01F8FE01F8FE03
F8FE03F8FE03F07C07F07007E03C1FC00FFF0003FC00>
. 21 32 -3 31 28] 50 @dc
[<
387CFEFEFE7C38>
. 7 7 -4 6 16] 46 @dc
[<
7FFFE07FFFE001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F800FFF800FFF80001F800007800001800>
. 19 32 -4 31 28] 49 @dc
[<
03FFFFF80003FFFFF8000003F800000003F800000003F800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800
000003F800000003F800000003F800000003F800000003F800000003F800000003F80000C0
03F800C0C003F800C0C003F800C0C003F800C0E003F801C0E003F801C06003F801807003F8
03807803F807807E03F80F807FFFFFFF807FFFFFFF80>
. 34 34 -2 33 39] 84 @dc
[<
FFF000FFF0001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F83C01E87E01E87E01EC7E01E67E0FE3FC0FE1F00>
. 19 22 -2 21 23] 114 @dc
[<
07E03F1FF87F7E0CF87E02F0FC01F0FC01F0FC01F0FC01F07E01F03F01F01FC1F003FDF000
3FF00001F00001F01E01F03F01F03F01E03F03E03F07C01FFF8007FC00>
. 24 22 -2 21 27] 97 @dc
[<
FFE1FFC0FFE1FFC01F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
003E001F003E001F003E001F003E001F003E001F003E001F003E001F803E001F803E001F40
3C001F307C00FF1FF800FF07E000>
. 26 22 -2 21 31] 110 @dc
[<
C7F000EFFC00FC0E00F00700E00380E00380C00380C00780000F8001FF000FFF003FFE007F
F8007FE000FC0000F00300E00300E00300600700781F003FFF000FF300>
. 17 22 -2 21 22] 115 @dc
[<
FFE0FFE01F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FF00FF00>
. 11 35 -2 34 16] 108 @dc
[<
00F80003FE0007C3000F83000F81800F81800F81800F81800F81800F80000F80000F80000F
80000F80000F80000F80000F80000F80000F80000F8000FFFF00FFFF003F80000F80000780
00078000038000038000018000018000018000018000>
. 17 32 -1 31 22] 116 @dc
[<
FFE0FFE01F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F00FF00FF0000000000000000000000000000001C003E007F007F007F003E001C00>
. 11 36 -2 35 16] 105 @dc
[<
00FE0007FFC00F83E01F01F03E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC
007EFC007E7C007C7C007C7C007C3E00F81E00F00F83E007FFC000FE00>
. 23 22 -2 21 28] 111 @dc
[<
00FF0003FFC00FC0701F00303E00187E00007C00007C0000FC0000FC0000FC0000FFFFF8FF
FFF8FC00F8FC00F87C00F87C00F03E01F01E01E00F87C007FF8000FE00>
. 21 22 -2 21 26] 101 @dc
[<
000E0000000E0000001F0000001F0000003F8000003F8000007FC000007CC000007CC00000
F8600000F8600001F0300001F0300003E0180003E0180007E01C0007C00C000FC00E000F80
06000F800600FFE01FE0FFE01FE0>
. 27 22 -1 21 30] 118 @dc
[<
FFE0FFE0FFE0FFE0FFE0FFE01F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F801F801F001F801F801F001F403E
403E001F303E303E00FF1FFC1FFC00FF07F007F000>
. 43 22 -2 21 47] 109 @dc

9 @eop0

0 0 9 @bop1 112 506 a @F1 @sf(Section)32 b(2)-398 208 y @F2 @sf(ENVIR)m
(ONMENT)-941 222 y @F14 @sf(Because)15 b(C)e(has)g(seen)h(widespread)f
(use)h(as)f(a)g(cross-compiled)g(language,)g(a)g(clear)g(distinction)-1652 
57 y(m)o(ust)j(b)q(e)g(made)g(b)q(et)o(w)o(een)g(translatio)o(n)f(and)h
(execution)g(en)o(vironmen)o(ts.)21 b(The)16 b(prepro)q(cessor,)-1651 56 y
(for)i(instance,)f(is)g(p)q(ermitted)h(to)f(ev)m(aluate)g(the)h
(expression)f(in)h(a)f @F8 @sf(#if)g @F14 @sf(statemen)o(t)g(using)g(the)
-1650 57 y(long)g(in)o(teger)f(arithmetic)g(nativ)o(e)g(to)g(the)h
(translatio)o(n)f(en)o(vironmen)o(t:)23 b(these)17 b(in)o(tegers)f(m)o
(ust)-1651 56 y(comprise)h(at)f(least)g(32)g(bits,)h(but)g(need)g(not)g
(matc)o(h)f(the)h(n)o(um)o(b)q(er)g(of)f(bits)h(in)f(the)h(execution)-1650 
57 y(en)o(vironmen)o(t.)30 b(Other)18 b(translate-time)f(arithmetic,)h(ho)o
(w)o(ev)o(er,)g(suc)o(h)h(as)f(t)o(yp)q(e)h(casting)e(and)-1650 56 y
(\015oating)f(arithmeti)o(c,)f(m)o(ust)h(more)f(closely)h(mo)q(del)g(the)g
(execution)g(en)o(vironmen)o(t)f(regardless)-1651 57 y(of)g(translation)e
(en)o(vironmen)o(t.)-542 139 y @F4 @sf(2.1)70 b(Conceptual)23 b(mo)r(dels)
-729 101 y @F14 @sf(The)11 b @F11 @sf(as)g(if)20 b @F14 @sf(principle)10 b
(is)g(in)o(v)o(ok)o(ed)f(rep)q(eatedly)i(in)f(this)f(Rationale.)18 b(The)
10 b(Committee)f(has)h(found)-1650 57 y(that)i(describing)h(v)m(arious)f
(asp)q(ects)h(of)f(the)h(C)g(language,)f(library)l(,)g(and)g(en)o
(vironmen)o(t)g(in)h(terms)-1651 56 y(of)g(concrete)h(mo)q(dels)f(b)q(est)g
(serv)o(es)g(discussion)g(and)h(presen)o(tation.)k(Ev)o(ery)13 b(attempt)f
(has)h(b)q(een)-1649 57 y(made)i(to)f(craft)f(the)i(mo)q(dels)f(so)g(that)f
(implemen)o(tors)g(are)h(constrained)g(only)g(insofar)f(as)h(they)-1650 
56 y(m)o(ust)20 b(bring)h(ab)q(out)f(the)g(same)h(result,)f @F11 @sf(as)h
(if)30 b @F14 @sf(they)21 b(had)g(implemen)o(ted)f(the)g(presen)o(tation)
-1651 57 y(mo)q(del;)15 b(often)g(enough)h(the)f(clearest)f(mo)q(del)i(w)o
(ould)e(mak)o(e)h(for)f(the)i(w)o(orst)e(implemen)o(tati)o(on.)-1643 118 y 
@F6 @sf(2.1.1)56 b(T)-5 b(ranslation)18 b(en)n(vironmen)n(t)-774 85 y 
@F9 @sf(2.1.1.1)52 b(Program)16 b(structure)-628 86 y @F14 @sf(The)h
(terms)e @F11 @sf(sour)n(c)n(e)i(\014le)p @F14 @sf(,)e @F11 @sf(external)h
(linkage)p @F14 @sf(,)f @F11 @sf(linke)n(d)p @F14 @sf(,)g @F11 @sf(libr)n
(aries)p @F14 @sf(,)g(and)h @F11 @sf(exe)n(cutable)h(pr)n(o)n(gr)n(am)i 
@F14 @sf(all)-1651 57 y(imply)11 b(a)g(con)o(v)o(en)o(tional)f
(compiler-link)o(er)g(com)o(bination.)17 b(All)11 b(of)g(these)h(concepts)g
(ha)o(v)o(e)f(shap)q(ed)-1650 56 y(the)g(seman)o(tics)f(of)h(C,)f(ho)o(w)o
(ev)o(er,)h(and)g(are)f(inescapable)h(ev)o(en)g(in)g(an)g(in)o(terpreted)f
(en)o(vironmen)o(t.)-1651 57 y(Th)o(us,)16 b(while)e(implemen)o(tations)g
(are)h(not)g(required)g(to)g(supp)q(ort)h(separate)f(compilati)o(on)f(and)
-1650 56 y(linking)h(with)f(libraries,)g(in)h(some)g(w)o(a)o(ys)f(they)h
(m)o(ust)g(b)q(eha)o(v)o(e)g @F11 @sf(as)h(if)25 b @F14 @sf(they)15 b(do.)
-1359 116 y @F9 @sf(2.1.1.2)52 b(T)l(ranslation)17 b(phases)-626 86 y 
@F14 @sf(P)o(erhaps)12 b(the)g(greatest)f(undesirable)g(div)o(ersit)o(y)g
(among)g(existing)f(C)i(implemen)o(tatio)o(ns)f(can)h(b)q(e)-1650 57 y
(found)i(in)f(prepro)q(cessing.)19 b(Admittedly)12 b(a)h(distinct)f(and)h
(primitiv)o(e)e(language)i(sup)q(erimp)q(osed)-836 124 y(9)-949 b
9 @eop1

10 @bop0
@F10 @sf
[<
FFFF807FFF803FFFC010004008004006002003002001800000C000006000003800001C0000
0E000007000003800001C00001E00000F00000F80600780F00780F807C0F807C0F007C0400
780400780200780100F000C1E0003F80>
. 22 30 -2 29 23] 50 @dc
[<
0020000000700000007000000078000000780000007C000000FC000000F2000000F2000000
F1000000F1000001F0800001E0400001E0400001E0200001E0200003E0100003C0100003C0
080003C0080003C0040007C00400078002000780020007800100078001800F8000800F0000
400F0000400F0000601F8000F8FFF003FE>
. 31 32 -6 30 34] 86 @dc
[<
FFE0C1FFF8000F00C00F80000600E00F00000600E00780000200F00780000201D007800002
01C80780000201C80780000201C40780000101C403C0000101C203C00001038203C0000103
8103C00001038083C00001038083C00000838041E00000870041E00000870021E000008700
21E00000870011E00000870011E000004E0008F000004E0008F000004E0004F000004E0004
F000004E0002F000004E0002F000003C00017800003C00017800007C0000F80007FC0000FF
C0>
. 42 31 -2 30 42] 77 @dc
@F8 @sf
[<
007000F001F003C007800F001E001C00380038007000700070007000E000E000E000E000E0
00E000E000E0007000700070007000380038001C001E000F00078003C001E000F00070>
. 12 36 -7 31 24] 40 @dc
[<
60F87C1E0E071F3F7F7E3E1C>
. 8 12 -8 5 24] 44 @dc
[<
6000F00078003C001E000F000780038001C001C000E000E000E000E0007000700070007000
7000700070007000E000E000E000E001C001C0038007800F001E003C007800F0006000>
. 12 36 -4 31 24] 41 @dc
@F14 @sf
[<
07000F800F800F800700000000000000000000000200020002000200020002000300010001
80018000C000E000700038603CF03CF03CE03C4038403830700FC0>
. 14 32 -3 31 21] 63 @dc
@F14 @sf
[<
007FFE000007C0000003C0000003C0000003C0000003C0000003C0000003C0000003C00000
03C0000003C0000003C0000003C0000007C0000007A000000FB000001F1000001E0800003E
0800003C0400007C040000F8020000F0030001F0010001E0008003E0008007C00040078000
400F8000601F8000F8FFF003FF>
. 32 31 -1 30 34] 89 @dc
@F8 @sf
[<
7F8FF0FF8FF87F8FF00F0780070700038E00039E0001DC0000F80000F00000700000F80001
F80001DC00039E00078E000707007F8FF07F9FF07F8FF0>
. 21 20 -1 19 24] 120 @dc

10 @eop0

0 0 10 @bop1 112 50 a @F14 @sf(10)1018 b @F10 @sf(Section)15 b(2.)35 b
(ENVIR)o(ONMENT)-1650 145 y @F14 @sf(up)q(on)11 b(C,)f(the)g(prepro)q
(cessing)h(commands)f(accreted)g(o)o(v)o(er)g(time,)g(with)f(little)g(cen)o
(tral)g(direction,)-1651 57 y(and)16 b(with)e(ev)o(en)i(less)e(precision)h
(in)g(their)g(do)q(cumen)o(tation.)k(This)c(ev)o(olution)f(has)h(resulted)g
(in)-1651 56 y(a)e(v)m(ariet)o(y)f(of)h(lo)q(cal)f(features,)h(eac)o(h)g
(with)f(its)g(arden)o(t)h(adheren)o(ts:)18 b(the)13 b(Base)g(Do)q(cumen)o
(t)g(o\013ers)-1651 56 y(little)h(clear)h(basis)f(for)h(c)o(ho)q(osing)g
(one)g(o)o(v)o(er)f(the)i(other.)-889 59 y(The)21 b(consensus)h(of)f(the)g
(Committee)f(is)h(that)f(prepro)q(cessing)i(should)f(b)q(e)h(simple)e(and)
-1650 56 y @F11 @sf(overt)p @F14 @sf(,)d(that)e(it)h(should)g(sacri\014ce)g
(p)q(o)o(w)o(er)g(for)f(clarit)o(y)l(.)22 b(F)l(or)15 b(instance,)h(the)g
(macro)g(in)o(v)o(o)q(cation)-1652 57 y @F8 @sf(f\(a,)24 b(b\))18 b @F14 @sf
(should)g(assuredly)h(ha)o(v)o(e)f(t)o(w)o(o)f(actual)g(argumen)o(ts,)h
(ev)o(en)h(if)f @F8 @sf(b)h @F14 @sf(expands)g(to)e @F8 @sf(c,)24 b(d)p 
@F14 @sf(;)-1651 56 y(and)f(the)e(formal)g(de\014nition)h(of)f @F8 @sf(f)h 
@F14 @sf(m)o(ust)f(call)g(for)g(exactly)h(t)o(w)o(o)e(argumen)o(ts.)39 b
(Ab)q(o)o(v)o(e)22 b(all,)-1652 57 y(the)15 b(prepro)q(cessing)g
(sub-language)f(should)h(b)q(e)g(sp)q(eci\014ed)h(precisely)e(enough)h(to)f
(minimize)g(or)-1651 56 y(eliminate)g(dialect)h(formatio)o(n.)-480 58 y(T)l
(o)e(clarify)e(the)i(nature)g(of)f(prepro)q(cessing,)i(the)e(translation)f
(from)h(source)h(text)g(to)f(tok)o(ens)-1651 57 y(is)g(sp)q(elled)g(out)g
(as)g(a)f(n)o(um)o(b)q(er)i(of)e(separate)h(phases.)19 b(The)12 b
(separate)g(phases)g(need)h(not)f(actually)-1652 56 y(b)q(e)j(presen)o(t)f
(in)g(the)g(translator,)o 13 x(but)g(the)h(net)f(e\013ect)g(m)o(ust)f(b)q
(e)i @F11 @sf(as)g(if)23 b @F14 @sf(they)15 b(w)o(ere.)k(The)14 b(phases)
-1650 57 y(need)i(not)f(b)q(e)g(p)q(erformed)g(in)g(a)f(separate)g(prepro)q
(cessor,)h(although)f(the)h(de\014nition)f(certainly)-1651 56 y(p)q
(ermits)22 b(this)g(common)g(practice.)41 b(Since)23 b(the)f(prepro)q
(cessor)g(need)i(not)d(kno)o(w)h(an)o(ything)-1651 57 y(ab)q(out)17 b(the)f
(sp)q(eci\014c)h(prop)q(erties)f(of)g(the)g(target,)f(a)h(mac)o
(hine-indep)q(ende)q(n)o(t)h(implemen)o(tation)-1652 56 y(is)e(p)q
(ermissible.)-210 58 y(The)h(Committ)o(ee)f(deemed)h(that)f(it)f(w)o(as)h
(outside)g(the)g(scop)q(e)h(of)f(its)g(mandate)g(to)g(require)-1651 57 y
(the)h(output)f(of)f(the)i(prepro)q(cessing)f(phases)h(b)q(e)f(a)o(v)m
(ailable)f(as)h(a)g(separate)g(translat)o(or)f(output)-1651 56 y(\014le.)p 
59 w(The)23 b @F11 @sf(phases)f(of)h(tr)n(anslation)i @F14 @sf(are)d(sp)q
(elled)h(out)f(to)g(resolv)o(e)f(the)i(n)o(umerous)f(questions)-1651 56 y
(raised)16 b(ab)q(out)g(the)h(precedence)h(of)e(di\013eren)o(t)f(parses.)
23 b(Can)17 b(a)f @F8 @sf(#define)f @F14 @sf(b)q(egin)h(a)g(commen)o(t?)
-1650 56 y(\(No.\))25 b(Is)18 b(bac)o(kslash/new-line)e(p)q(ermitted)h
(within)f(a)h(trigraph?)26 b(\(No.\))e(Must)17 b(a)g(commen)o(t)-1651 57 y
(b)q(e)i(con)o(tained)e(within)g(one)h @F8 @sf(#include)e @F14 @sf(\014le?)
28 b(\(Y)l(es.\))f(And)18 b(so)f(on.)27 b(The)18 b(Rationale)f(section)-1651 
56 y(on)i(prepro)q(cessing)g(\()p @F12 @sf(x)p @F14 @sf(3.8\))e(discusses)i
(the)g(reasons)g(for)f(man)o(y)g(of)g(the)h(particular)f(decisions)-1651 
57 y(whic)o(h)e(shap)q(ed)g(the)f(sp)q(eci\014cation)g(of)g(the)g(phases)g
(of)g(translatio)o(n.)-1176 115 y(A)k(bac)o(kslash)g(immediately)e(b)q
(efore)i(a)g(new-line)g(has)f(long)g(b)q(een)i(used)g(to)e(con)o(tin)o(ue)g
(string)-1651 57 y(literals,)e(as)g(w)o(ell)g(as)g(prepro)q(cessing)h
(command)g(lines.)25 b(In)17 b(the)g(in)o(terest)f(of)g(easing)h(mac)o
(hine)-1651 56 y(generation)22 b(of)g(C,)g(and)h(of)f(transp)q(orting)g
(co)q(de)h(to)f(mac)o(hines)g(with)g(restrictiv)o(e)f(ph)o(ysical)-1651 
57 y(line)16 b(lengths,)f(the)g(Committee)g(generalized)g(this)g(mec)o
(hanism)g(to)g(p)q(ermit)g @F11 @sf(any)20 b @F14 @sf(tok)o(en)15 b(to)g
(b)q(e)-1650 56 y(con)o(tin)o(ued)h(b)o(y)f(in)o(terp)q(osing)f(a)h(bac)o
(kslash/new-line)f(sequence.)-1118 131 y @F9 @sf(2.1.1.3)52 b(Diagnostics)
-462 89 y @F14 @sf(By)13 b(mandating)e(some)g(form)h(of)f(diagnostic)g
(message)h(for)f(an)o(y)h(program)f(con)o(taining)f(a)i(syn)o(tax)-1651 
57 y(error)f(or)h(constrain)o(t)e(violati)o(on,)h(the)g(Standard)h(p)q
(erforms)f(t)o(w)o(o)g(imp)q(ortan)o(t)f(services.)19 b(First,)o 11 x(it)
-1651 56 y(giv)o(es)13 b(teeth)h(to)e(the)i(concept)g(of)f @F11 @sf(err)n
(one)n(ous)h(pr)n(o)n(gr)n(am)p @F14 @sf(,)g(since)f(a)h(conforming)e
(implemen)o(tation)-1652 56 y(m)o(ust)18 b(distinguish)g(suc)o(h)g(a)h
(program)e(from)g(a)h(v)m(alid)h(one.)29 b(Second,)20 b(it)d(sev)o(erely)h
(constrains)-1651 57 y(the)e(nature)f(of)g(extensions)g(p)q(ermissible)f
(to)h(a)g(conforming)f(implemen)o(tation.)o -1312 58 a(The)k(Standard)f
(sa)o(ys)g(nothing)g(ab)q(out)g(the)h(nature)f(of)g(the)h(diagnostic)e
(message,)i(whic)o(h)-1651 57 y(could)k(simply)f(b)q(e)h(\\)p @F8 @sf
(syntax)h(error)p @F14 @sf(",)f(with)f(no)h(hin)o(t)f(of)g(where)h(the)g
(error)f(o)q(ccurs.)39 b(\(An)-1650 56 y(implemen)o(tation)17 b(m)o(ust,)g
(of)g(course,)h(describ)q(e)h(what)e(translator)o 17 x(output)g
(constitutes)g(a)g(di-)-1650 57 y(agnostic)f(message,)h(so)f(that)g(the)h
(user)g(can)g(recognize)g(it)f(as)h(suc)o(h.\))25 b(The)17 b(Committ)o(ee)f
(ulti-)-1763 124 y
10 @eop1

11 @bop0
@F6 @sf
[<
FFFFFFFCFFFFFFFC07F001FC07F0003E07F0001E07F0000E07F0000E07F0000607F0000607
F0000607F0000307F0180307F0180307F0180007F0180007F0380007F0780007FFF80007FF
F80007F0780007F0380007F0180007F0180607F0180607F0180607F0000607F0000E07F000
0E07F0000C07F0001C07F0003C07F000FCFFFFFFFCFFFFFFFC>
. 32 34 -2 33 37] 69 @dc
[<
FF80FFE0FF80FFE00E003E0007007E000380FC0001C0F80000C1F0000063E0000037C00000
3FC000001F8000001F0000003F0000007F800000F9800001F8C00003F0600003E0700007C0
38000F801C00FFE07FC0FFE07FC0>
. 27 22 -1 21 30] 120 @dc
[<
00FE0007FF800FC0E01F00603E00307E00007E00007C0000FC0000FC0000FC0000FC0000FC
0000FC00007C00007C01E07E03F03E03F01F03F00F83F007FFE000FF80>
. 20 22 -2 21 25] 99 @dc
[<
01FC3FC007FF3FC00F81BE001F00FE001F007E001F003E001F003E001F003E001F003E001F
003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F00
3E001F003E00FF01FE00FF01FE00>
. 26 22 -2 21 31] 117 @dc
@F9 @sf
[<
FFFF8000FFFF800007E0000007E0000007E0000007E0000007E0000007E0000007E0000007
E0000007E0600007E0600007E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0
E00007E0600007E0603007E0603007E0003007E0003007E0007007E0006007E000E007E001
E007E007E0FFFFFFE0FFFFFFE0>
. 28 31 -2 30 33] 70 @dc
@F9 @sf
[<
FFFF0FFFF0FFFF0FFFF007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0
007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E
0007FFFFFE0007FFFFFE0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007
E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E00FFFF0F
FFF0FFFF0FFFF0>
. 36 31 -2 30 41] 72 @dc
@F8 @sf
[<
00700000F80000F80001DC0001DC0001DC00038E00038E00038E00038E0007070007070007
07000E03800E03800E03801E03C07F8FF0FF8FF87F8FF0>
. 21 20 -1 19 24] 118 @dc
@F8 @sf
[<
FFF8FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FFF8>
. 13 36 -9 31 24] 91 @dc
[<
FFF8FFF8FFF800380038003800380038003800380038003800380038003800380038003800
3800380038003800380038003800380038003800380038003800380038FFF8FFF8FFF8>
. 13 36 -1 31 24] 93 @dc

11 @eop0

0 0 11 @bop1 112 50 a @F10 @sf(2.1.)35 b(Conceptual)14 b(mo)q(dels)1121 b 
@F14 @sf(11)-1651 145 y(mately)12 b(decided)i(that)e(an)o(y)h(diagnostic)e
(activit)o(y)g(b)q(ey)o(ond)j(this)e(lev)o(el)g(is)g(an)h(issue)g(of)f 
@F11 @sf(quality)i(of)-1650 57 y(implementation)p @F14 @sf(,)19 b(and)f
(that)f(mark)o(et)h(forces)f(w)o(ould)h(encourage)g(more)g(useful)g
(diagnostics.)-1652 56 y(Nev)o(ertheless,)e(the)g(Committ)o(ee)f(felt)g
(that)g(at)g(least)g(some)h(signi\014can)o(t)f(class)g(of)g(errors)g(m)o
(ust)-1651 56 y(b)q(e)h(diagnosed,)f(and)g(the)g(class)g(sp)q(eci\014ed)h
(should)g(b)q(e)f(recognizable)g(b)o(y)g(all)f(translators.)o -1487 61 a
(The)19 b(Standard)f(do)q(es)g(not)g(forbid)g(extensions,)g(but)h(suc)o(h)f
(extensions)g(m)o(ust)g(not)g(in)o(v)m(al-)-1651 57 y(idate)f(strictly)f
(conforming)h(programs.)26 b(The)17 b(translator)f(m)o(ust)h(diagnose)g
(the)g(use)h(of)f(suc)o(h)-1650 56 y(extensions,)i(or)f(allo)o(w)e(them)j
(to)e(b)q(e)j(disabled)e(as)g(discussed)h(in)f(\(Rationale\))e @F12 @sf(x)q 
@F14 @sf(1.7.)28 b(Other-)-1650 57 y(wise,)19 b(extensions)g(to)f(a)h
(conforming)f(C)g(implemen)o(tation)f(lie)i(in)f(suc)o(h)h(realms)f(as)h
(de\014ning)-1650 56 y(seman)o(tics)e(for)f(syn)o(tax)g(to)g(whic)o(h)h
(no)g(seman)o(tics)f(is)g(ascrib)q(ed)h(b)o(y)g(the)g(Standard,)g(or)g
(giving)-1652 56 y(meaning)e(to)g @F11 @sf(unde\014ne)n(d)g(b)n(ehavior)p 
@F14 @sf(.)-617 147 y @F6 @sf(2.1.2)56 b(Execution)17 b(en)n(vironmen)n
(ts)-764 94 y @F14 @sf(The)12 b(de\014nition)g(of)f @F11 @sf(pr)n(o)n(gr)n
(am)i(startup)j @F14 @sf(in)11 b(the)h(Standard)g(is)f(designed)h(to)f(p)q
(ermit)g(initializat)o(ion)-1652 56 y(of)k(static)e(storage)g(b)o(y)i
(executable)f(co)q(de,)h(as)f(w)o(ell)g(as)g(b)o(y)g(data)g(translated)f
(in)o(to)h(the)h(program)-1652 57 y(image.)-130 145 y @F9 @sf(2.1.2.1)52 b
(F)l(reestanding)16 b(en)o(vironmen)n(t)-797 94 y @F14 @sf(As)e(little)e
(as)h(p)q(ossible)g(is)f(said)h(ab)q(out)h(freestanding)e(en)o(vironmen)o
(ts,)h(since)g(little)f(is)h(serv)o(ed)g(b)o(y)-1650 56 y(constraining)h
(them.)-372 145 y @F9 @sf(2.1.2.2)52 b(Hosted)17 b(en)o(vironmen)n(t)-666 
94 y @F14 @sf(The)e(prop)q(erties)f(required)g(of)g(a)g(hosted)g(en)o
(vironmen)o(t)g(are)g(sp)q(elled)g(out)g(in)g(a)g(fair)f(amoun)o(t)h(of)
-1651 57 y(detail)g(in)h(order)g(to)f(giv)o(e)g(programmers)f(a)i
(reasonable)f(c)o(hance)h(of)g(writing)e(programs)h(whic)o(h)-1651 56 y
(are)h(p)q(ortable)g(among)g(suc)o(h)g(en)o(vironmen)o(ts.)-713 61 y(The)k
(b)q(eha)o(vior)g(of)g(the)g(argumen)o(ts)f(to)h @F8 @sf(main)p @F14 @sf
(,)g(and)g(of)g(the)g(in)o(teractio)o(n)f(of)h @F8 @sf(exit)p @F14 @sf(,)g 
@F8 @sf(main)-1651 56 y @F14 @sf(and)d @F8 @sf(atexit)f @F14 @sf(\(see)h 
@F12 @sf(x)p @F14 @sf(4.10.4.)o(2\))e(has)h(b)q(een)i(co)q(di\014ed)f(to)f
(curb)h(some)g(un)o(w)o(an)o(ted)f(v)m(ariet)o(y)g(in)g(the)-1650 57 y
(represen)o(tation)g(of)f @F8 @sf(argv)h @F14 @sf(strings,)f(and)h(in)g
(the)g(meaning)g(of)g(v)m(alues)g(returned)h(b)o(y)f @F8 @sf(main)p @F14 @sf
(.)-1494 60 y(The)j(sp)q(eci\014cation)f(of)h @F8 @sf(argc)f @F14 @sf(and)g 
@F8 @sf(argv)g @F14 @sf(as)h(argumen)o(ts)e(to)h @F8 @sf(main)g @F14 @sf
(recognizes)h(extensiv)o(e)-1651 57 y(prior)e(practice.)21 b @F8 @sf
(argv[argc])15 b @F14 @sf(is)g(required)h(to)g(b)q(e)g(a)g(n)o(ull)f(p)q
(oin)o(ter)h(to)f(pro)o(vide)g(a)h(redundan)o(t)-1650 56 y(c)o(hec)o(k)g
(for)f(the)g(end)h(of)e(the)i(list,)d(also)i(on)g(the)g(basis)g(of)f
(common)h(practice.)-1252 61 y @F8 @sf(main)f @F14 @sf(is)g(the)g(only)g
(function)h(that)e(ma)o(y)h(p)q(ortably)g(b)q(e)h(declared)g(either)f
(with)g(zero)g(or)g(t)o(w)o(o)-1652 57 y(argumen)o(ts.)19 b(\(The)12 b(n)o
(um)o(b)q(er)g(of)g(argumen)o(ts)g(m)o(ust)f(ordinarily)g(matc)o(h)h
(exactly)g(b)q(et)o(w)o(een)g(in)o(v)o(o-)-1651 56 y(cation)k(and)g
(de\014nition.\))21 b(This)16 b(sp)q(ecial)g(case)g(simply)f(recognizes)h
(the)g(widespread)g(practice)-1651 56 y(of)d(lea)o(ving)f(o\013)h(the)g
(argumen)o(ts)f(to)h @F8 @sf(main)g @F14 @sf(when)g(the)g(program)g(do)q
(es)g(not)g(access)g(the)h(program)-1652 57 y(argumen)o(t)h(strings.)20 b
(While)15 b(man)o(y)g(implemen)o(tati)o(ons)f(supp)q(ort)i(more)f(than)g
(t)o(w)o(o)f(argumen)o(ts)-1651 56 y(to)g @F8 @sf(main,)g @F14 @sf(suc)o
(h)h(practice)f(is)g(neither)h(blessed)f(nor)h(forbidden)f(b)o(y)h(the)f
(Standard;)g(a)h(program)-1652 57 y(that)j(de\014nes)g @F8 @sf(main)f 
@F14 @sf(with)g(three)h(argumen)o(ts)f(is)g(not)h @F11 @sf(strictly)g(c)n
(onforming)t @F14 @sf(.)27 b(\(See)18 b(Standard)-1651 56 y(App)q(end)q
(ix)e(F.5.1.)o(\))-270 61 y(Command)10 b(line)g(I/O)g(redirection)g(is)g
(not)f(mandated)i(b)o(y)f(the)g(Standard;)h(this)f(w)o(as)f(deemed)-1649 
57 y(to)15 b(b)q(e)h(a)f(feature)g(of)f(the)i(underlying)f(op)q(erating)f
(system)h(rather)g(than)g(the)g(C)g(language.)-177 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
11 @eop1

12 @bop0
@F8 @sf
[<
7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC0>
. 19 12 -2 19 24] 61 @dc
[<
7FFCFFFE7FFC03800380038003800380038003800380038003800380038003800380038003
804380FB80FF803F800F800780038003800180>
. 15 28 -5 27 24] 49 @dc
[<
01F00007FC000FFE001F1F001C07003803807803C07001C07001C0F001E0E000E0E000E0E0
00E0E000E0E000E0E000E0E000E0E000E0E000E07001C07001C07803C03803801C07001F1F
000FFE0007FC0001F000>
. 19 28 -2 27 24] 48 @dc
@F8 @sf
[<
00600000F00000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000
F00000F00000F00000F00000F00000F00000F000006000>
. 19 20 -2 23 24] 43 @dc
@F8 @sf
[<
60F0783C1C0E1E3E7E7E3C180000000000000000183C7E7E3C18>
. 7 26 -8 19 24] 59 @dc
@F8 @sf
[<
7F03C0FF87C07F07C01C0DC01C0DC01C0DC01C1DC01C19C01C19C01C39C01C39C01C39C01C
31C01C71C01C71C01C61C01CE1C01CE1C01CE1C01CC1C01CC1C01DC1C01D81C01D81C01D81
C07F07F0FF0FF87E07F0>
. 21 28 -1 27 24] 78 @dc
@F8 @sf
[<
01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007F00007F0001FFC007F
FF00F9CF80F1C780C1C18001C00001C00001C00001C000>
. 17 20 -3 23 24] 42 @dc
@F8 @sf
[<
600000F00000F00000F800007800007C00003C00003C00003E00001E00001F00000F00000F
00000F800007800007C00003C00003C00003E00001E00001F00000F00000F8000078000078
00007C00003C00003E00001E00001E00001F00000F00000F80000780000780000300>
. 17 36 -3 31 24] 47 @dc
@F8 @sf
[<
FFC7F8FFC7F8FFC7F80E03C00E03800E07000E0F000F0E000F9C000FFC000FF8000EF0000E
78000E3C000E1E000E0F000E07800E3FF00E7FF00E3FF00E00000E00000E00000E00000E00
00FE0000FE0000FE0000>
. 21 28 -1 27 24] 107 @dc
[<
7FFFE0FFFFE07FFFE03C00E01E00E00F800007C00001E00000F000007800003C00001E0000
0F000007800003C00001C00001C00000E00000E06000E0F000E0F000E0E001C07003C07C0F
803FFF000FFE0003F000>
. 19 28 -2 27 24] 50 @dc
[<
0F03C03FCFE07FFFE070FC70E07870E07070E0F800E0F800E1DC0073DC007B8E003F0E001F
0E000F07000F87000FC7000FE3801CE3F01C73F01C73F01C38001C38001C38001C38000E70
000FF00007E00001C000>
. 20 28 -1 27 24] 38 @dc

12 @eop0

0 0 12 @bop1 112 50 a @F14 @sf(12)1018 b @F10 @sf(Section)15 b(2.)35 b
(ENVIR)o(ONMENT)-1650 145 y @F9 @sf(2.1.2.3)52 b(Program)16 b(execution)
-636 86 y @F14 @sf(Because)i(C)f(expressions)g(can)h(con)o(tain)e(side)h
(e\013ects,)g(issues)g(of)g @F11 @sf(se)n(quencin)o(g)j @F14 @sf(are)d
(imp)q(ortan)o(t)-1652 56 y(in)f(expression)f(ev)m(aluation.)k(\(See)c 
@F12 @sf(x)p @F14 @sf(3.3.\))k(Most)14 b(op)q(erators)g(imp)q(ose)i(no)f
(sequencing)g(require-)-1650 57 y(men)o(ts,)k(but)g(a)g(few)f(op)q
(erators)g(imp)q(ose)g @F11 @sf(se)n(quenc)n(e)g(p)n(oints)k @F14 @sf(up)q
(on)d(the)g(ev)m(aluation:)26 b(comma,)-1651 56 y(logical-AND,)14 b
(logical-OR,)h(and)h(conditional.)21 b(F)l(or)16 b(example,)g(in)f(the)i
(expression)e @F8 @sf(\(i)24 b(=)g(1,)-1651 57 y(a[i])g(=)g(0\))16 b 
@F14 @sf(the)i(side)f(e\013ect)g(\(alterat)o(ion)f(to)g(storage\))g(sp)q
(eci\014ed)i(b)o(y)f @F8 @sf(i)24 b(=)g(1)17 b @F14 @sf(m)o(ust)g(b)q(e)h
(com-)-1651 56 y(pleted)e(b)q(efore)f(the)h(expression)f @F8 @sf(a[i])23 b
(=)h(0)15 b @F14 @sf(is)f(ev)m(aluated.)-952 57 y(Other)19 b(sequence)h(p)q
(oin)o(ts)e(are)g(imp)q(osed)h(b)o(y)f(statemen)o(t)g(execution)g(and)h
(completion)f(of)-1651 56 y(ev)m(aluation)d(of)h(a)f @F11 @sf(ful)r(l)i
(expr)n(ession)p @F14 @sf(.)j(\(See)c @F12 @sf(x)p @F14 @sf(3.6\).)21 b
(Th)o(us)15 b(in)h @F8 @sf(fn\(++a\))p @F14 @sf(,)e(the)i(incremen)o
(tation)f(of)-1651 57 y @F8 @sf(a)k @F14 @sf(m)o(ust)f(b)q(e)h(completed)f
(b)q(efore)h @F8 @sf(fn)f @F14 @sf(is)g(called.)30 b(In)19 b @F8 @sf(i)24 b
(=)f(1;)h(a[i])f(=)h(0;)c @F14 @sf(the)e(side-e\013ect)h(of)-1651 56 y 
@F8 @sf(i)24 b(=)g(1)15 b @F14 @sf(m)o(ust)g(b)q(e)g(complete)g(b)q(efore)h 
@F8 @sf(a[i])23 b(=)h(0)15 b @F14 @sf(is)g(ev)m(aluated.)-1020 56 y(The)k
(notion)e(of)h @F11 @sf(agr)n(e)n(ement)k @F14 @sf(has)c(to)f(do)i(with)e
(the)i(relationship)e(b)q(et)o(w)o(een)h(the)h @F11 @sf(abstr)n(act)-1651 
57 y(machine)f @F14 @sf(de\014ning)c(the)g(seman)o(tics)f(and)h(an)f
(actual)g(implemen)o(tation.)18 b(An)c @F11 @sf(agr)n(e)n(ement)g(p)n
(oint)-1646 56 y @F14 @sf(for)20 b(some)f(ob)s(ject)g(or)g(class)g(of)h
(ob)s(jects)f(is)g(a)g(sequence)i(p)q(oin)o(t)f(at)f(whic)o(h)g(the)h(v)m
(alue)g(of)f(the)-1650 57 y(ob)s(ject\(s\))f(in)g(the)g(real)g(implemen)o
(tation)f(m)o(ust)h(agree)g(with)g(the)g(v)m(alue)h(prescrib)q(ed)g(b)o(y)f
(the)-1650 56 y(abstract)d(seman)o(tics.)-312 57 y(F)l(or)d(example,)h
(compilers)e(that)h(hold)g(v)m(ariables)g(in)h(registers)e(can)i
(sometimes)e(drastically)-1652 56 y(reduce)17 b(execution)e(times.)k(In)d
(a)f(lo)q(op)f(lik)o(e)-559 92 y @F8 @sf(sum)24 b(=)g(0;)-192 57 y(for)g
(\(i)f(=)h(0;)g(i)f(<)h(N;)g(++i\))-454 56 y(sum)f(+=)h(a[i];)-574 92 y 
@F14 @sf(b)q(oth)c @F8 @sf(sum)e @F14 @sf(and)h @F8 @sf(i)g @F14 @sf(migh)o
(t)f(b)q(e)i(pro\014tably)e(k)o(ept)h(in)g(registers)f(during)h(the)g
(execution)g(of)f(the)-1650 57 y(lo)q(op.)k(Th)o(us,)15 b(the)h(actual)f
(memory)g(ob)s(jects)g(designated)g(b)o(y)h @F8 @sf(sum)f @F14 @sf(and)h 
@F8 @sf(i)g @F14 @sf(w)o(ould)f(not)g(c)o(hange)-1650 56 y(state)g(during)g
(the)g(lo)q(op.)-361 57 y(Suc)o(h)g(b)q(eha)o(vior)f(is,)f(of)h(course,)g
(to)q(o)g(lo)q(ose)g(for)f(hardw)o(are-orien)o(ted)g(applications)g(suc)o
(h)i(as)-1651 56 y(device)h(driv)o(ers)f(and)h(memory-mapp)q(ed)f(I/O.)21 b
(The)16 b(follo)o(wi)o(ng)e(lo)q(op)h(lo)q(oks)g(almost)f(iden)o(tical)-1652 
57 y(to)f(the)f(previous)h(example,)g(but)g(the)f(sp)q(eci\014cation)h(of)f 
@F8 @sf(volatile)g @F14 @sf(ensures)h(that)f(eac)o(h)h(assign-)-1651 56 y
(men)o(t)k(to)f @F8 @sf(*ttyport)g @F14 @sf(tak)o(es)f(place)i(in)g(the)f
(same)h(sequence,)h(and)f(with)f(the)h(same)f(v)m(alues,)h(as)-1651 57 y
(the)f(\(h)o(yp)q(othetical\))d(abstract)i(mac)o(hine)g(w)o(ould)f(ha)o(v)o
(e)h(done.)-883 104 y @F8 @sf(volatile)23 b(short)g(*ttyport;)-574 56 y
(/*)h(...)f(*/)-215 57 y(for)h(\(i)f(=)h(0;)g(i)f(<)h(N;)g(++i\))-454 56 y
(*ttyport)f(=)g(a[i];)-598 104 y @F14 @sf(Another)c(common)h(optimizat)o
(ion)e(is)h(to)g(pre-compute)h(common)f(sub)q(expressions.)33 b(In)-1650 
57 y(this)15 b(lo)q(op:)4 92 y @F8 @sf(volatile)23 b(short)g(*ttyport;)-574 
56 y(short)h(mask1,)f(mask2;)-455 57 y(/*)h(...)f(*/)-215 56 y(for)h(\(i)f
(=)h(0;)g(i)f(<)h(N;)g(++i\))-454 57 y(*ttyport)f(=)g(a[i])h(&)f(mask1)h
(&)f(mask2;)-1163 124 y
12 @eop1

13 @bop0
@F10 @sf
[<
01000001800003800003C00003E00003A0000390000710000708000708000704000F04000E
02000E02000E01000E00801C00801C00C01E00E0FF83F8>
. 21 20 -4 19 24] 118 @dc
@F4 @sf
[<
FFFFFFFFF0FFFFFFFFF0FFFFFFFFF003FC001FF803FC0003F803FC0001F803FC0000F803FC
00007803FC00003803FC00003C03FC00001C03FC00001C03FC00001C03FC01C01C03FC01C0
0E03FC01C00E03FC01C00E03FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003
FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C03803FC01C03803FC01C03803FC01
C07803FC00007003FC00007003FC00007003FC0000F003FC0001F003FC0001F003FC0007F0
03FC001FE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0>
. 39 41 -3 40 45] 69 @dc
[<
0001C000000003E000000003E000000007F000000007F00000000FF80000000FF80000000F
F80000001FDC0000001FDC0000003FDE0000003F8E0000007F8F0000007F070000007F0700
0000FE03800000FE03800001FC01C00001FC01C00003FC01E00003F800E00007F800F00007
F000700007F0007000FFFE03FF80FFFE03FF80FFFE03FF80>
. 33 27 -1 26 36] 118 @dc
@F6 @sf
[<
0003FE0000001FFFC00000FF00F00001F800380003F0000C0007C00006000F800003001F80
0003003F000003803F000001807F000001807E000001807E00000000FE00000000FE000000
00FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007E000001807E
000001807F000001803F000003803F000003801F800007800F8000078007C0000F8003E000
1F8001F8003F8000FF01E380001FFF81800003FE0080>
. 33 34 -3 33 40] 67 @dc
[<
FFE1FFC0FFE1FFC01F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
003E001F003E001F003E001F003E001F003E001F003E001F003E001F803E001F803E001F40
3C001F307C001F1FF8001F07E0001F0000001F0000001F0000001F0000001F0000001F0000
001F0000001F0000001F0000001F0000001F000000FF000000FF000000>
. 26 35 -2 34 31] 104 @dc
@F14 @sf
[<
7FFFFFE0FFFFFFF00000000000000000000000000000000000000000000000000000000000
000000FFFFFFF07FFFFFE0>
. 28 12 -3 16 35] 61 @dc
@F8 @sf
[<
7070707070707070707070F87020>
. 5 14 -9 28 24] 13 @dc
[<
000300000780000780000F80000F00001F00001E00001E00003E00003C00007C0000780000
780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F00
001F00001E00003E00003C00003C00007C0000780000F80000F00000F00000600000>
. 17 36 -3 31 24] 92 @dc

13 @eop0

0 0 13 @bop1 112 50 a @F10 @sf(2.2.)35 b(En)o(vironmen)o(tal)o 14 x
(considerations)909 b @F14 @sf(13)-1651 145 y(ev)m(aluation)21 b(of)f(the)h
(sub)q(expression)g @F8 @sf(mask1)j(&)f(mask2)e @F14 @sf(could)f(b)q(e)i
(p)q(erformed)f(prior)f(to)g(the)-1650 57 y(lo)q(op)15 b(in)h(the)f(real)g
(implemen)o(tatio)o(n,)f(assuming)h(that)f(neither)i @F8 @sf(mask1)e 
@F14 @sf(nor)i @F8 @sf(mask2)e @F14 @sf(app)q(ear)i(as)-1651 56 y(an)e(op)q
(erand)h(of)e(the)h(address-of)g(\()p @F8 @sf(&)p @F14 @sf(\))f(op)q
(erator)f(an)o(ywhere)i(in)g(the)g(function.)19 b(In)c(the)e(abstract)-1651 
56 y(mac)o(hine,)21 b(of)e(course,)i(this)e(sub)q(expression)h(is)f(re-ev)m
(aluated)h(at)f(eac)o(h)h(lo)q(op)g(iterati)o(on,)f(but)-1650 57 y(the)h
(real)e(implemen)o(tation)g(is)g(not)h(required)g(to)g(mimic)f(this)h(rep)q
(etitiv)o(eness,)g(b)q(ecause)h(the)-1650 56 y(v)m(ariables)h @F8 @sf
(mask1)f @F14 @sf(and)h @F8 @sf(mask2)f @F14 @sf(are)h(not)f @F8 @sf
(volatile)g @F14 @sf(and)h(the)g(same)g(results)f(are)h(obtained)-1651 57 y
(either)15 b(w)o(a)o(y)l(.)-145 57 y(The)i(previous)g(example)g(sho)o(ws)g
(that)f(a)h(sub)q(expression)h(can)f(b)q(e)h(pre-computed)g(in)f(the)-1650 
57 y(real)k(implemen)o(tati)o(on.)35 b(A)21 b(question)f(sometimes)g(ask)o
(ed)h(regarding)e(optimization)g(is,)i(\\Is)-1650 56 y(the)h(rearrangemen)o
(t)e(still)f(conforming)h(if)h(the)g(pre-computed)h(expression)f(migh)o(t)e
(raise)i(a)-1651 56 y(signal)15 b(\(suc)o(h)g(as)g(division)f(b)o(y)h
(zero\)?")20 b(F)l(ortunately)14 b(for)h(optimizers,)e(the)j(answ)o(er)e
(is)h(\\Y)l(es,")-1651 57 y(b)q(ecause)d(an)o(y)e(ev)m(aluation)f(that)h
(raises)f(a)h(computational)f(signal)g(has)h(fallen)g(in)o(to)f(an)h 
@F11 @sf(unde\014ne)n(d)-1651 56 y(b)n(ehavior)21 b @F14 @sf(\()p @F12 @sf
(x)p @F14 @sf(3.3\),)13 b(for)i(whic)o(h)g(an)o(y)g(action)f(is)h(allo)o
(w)o -1 x(able.)-918 58 y(Beha)o(vior)d(is)h(describ)q(ed)h(in)f(terms)f
(of)h(an)g @F11 @sf(abstr)n(act)h(machine)i @F14 @sf(to)d(underscore,)g
(once)h(again,)-1652 56 y(that)21 b(the)g(Standard)g(mandates)g(results)f 
@F11 @sf(as)i(if)31 b @F14 @sf(certain)20 b(mec)o(hanisms)h(are)g(used,)h
(without)-1651 57 y(requiring)17 b(those)g(actual)g(mec)o(hanisms)g(in)g
(the)h(implemen)o(tatio)o(n.)26 b(The)17 b(Standard)h(sp)q(eci\014es)-1650 
56 y(agreemen)o(t)13 b(p)q(oin)o(ts)f(at)h(whic)o(h)g(the)g(v)m(alue)g(of)g
(an)g(ob)s(ject)f(or)h(class)f(of)h(ob)s(jects)f(in)h(an)g(implemen-)-1650 
57 y(tation)h(m)o(ust)h(agree)g(with)f(the)i(v)m(alue)f(ascrib)q(ed)g(b)o
(y)h(the)f(abstract)f(seman)o(tics.)-1296 57 y(App)q(endix)19 b(B)e(to)g
(the)h(Standard)f(lists)f(the)i(sequence)g(p)q(oin)o(ts)f(sp)q(eci\014ed)i
(in)e(the)h(b)q(o)q(dy)g(of)-1651 56 y(the)e(Standard.)-203 58 y(The)f
(class)f(of)h @F11 @sf(inter)n(active)g(devic)n(es)e @F14 @sf(is)i(in)o
(tended)g(to)f(include)h(at)f(least)g(async)o(hronous)h(ter-)-1651 56 y
(minals,)c(or)g(paired)g(displa)o(y)f(screens)i(and)g(k)o(eyb)q(oards.)18 b
(An)11 b(implemen)o(tation)f(ma)o(y)h(extend)g(the)-1650 57 y(de\014nition)j
(to)f(include)h(other)f(input)h(and)g(output)f(devices,)h(or)g(ev)o(en)g
(net)o(w)o(ork)e(in)o(ter-program)-1652 56 y(connections,)j(pro)o(vided)g
(they)h(ob)q(ey)f(the)g(Standard's)g(c)o(haracterization)e(of)i(in)o
(teractivit)o -1 x(y)l(.)-1599 148 y @F4 @sf(2.2)70 b(En)n(vironm)q(en)n
(tal)24 b(considerations)-1047 105 y @F6 @sf(2.2.1)56 b(Character)19 b
(sets)-527 87 y @F14 @sf(The)11 b(Committee)e(ultimately)f(came)j(to)e
(remark)m(able)h(unanimit)o(y)g(on)g(the)g(sub)s(ject)g(of)g(c)o(haracter)
-1651 57 y(set)16 b(requiremen)o(ts.)21 b(There)15 b(w)o(as)g(strong)g
(sen)o(timen)o(t)g(that)g(C)g(should)h(not)f(b)q(e)h(tied)g(to)f(ASCI)q
(I,)-1650 56 y(despite)c(its)f(heritage)f(and)i(despite)f(the)h(preceden)o
(t)g(of)f(Ada)g(b)q(eing)h(de\014ned)h(in)e(terms)g(of)g(ASCI)q(I.)-1650 
57 y(Rather,)16 b(an)g(implemen)o(tation)f(is)g(required)i(to)e(pro)o
(vide)h(a)f(unique)i(c)o(haracter)e(co)q(de)i(for)e(eac)o(h)-1650 56 y(of)g
(the)f(prin)o(table)g(graphics)g(used)h(b)o(y)g(C,)f(and)h(for)f(eac)o(h)g
(of)g(the)h(con)o(trol)e(co)q(des)j(represen)o(table)-1651 57 y(b)o(y)i
(an)g(escap)q(e)g(sequence.)28 b(\(No)18 b(particular)e(graphic)h
(represen)o(tation)g(for)g(an)o(y)g(c)o(haracter)g(is)-1651 56 y(prescrib)q
(ed)22 b(|)f(th)o(us)f(the)h(common)f(Japanese)h(practice)g(of)f(using)g
(the)h(glyph)t(Y)-35 b(=)s(for)20 b(the)h(C)-1651 56 y(c)o(haracter)13 b 
@F8 @sf(\015\\\015)h @F14 @sf(is)f(p)q(erfectly)h(legitim)o(ate.\))o 19 x
(T)l(ranslati)o(on)f(and)g(execution)h(en)o(vironmen)o(ts)f(ma)o(y)-1651 
57 y(ha)o(v)o(e)k(di\013eren)o(t)e(c)o(haracter)h(sets,)g(but)h(eac)o(h)g
(m)o(ust)f(meet)g(this)g(requiremen)o(t)g(in)h(its)f(o)o(wn)g(w)o(a)o(y)l
(.)-1652 56 y(The)d(goal)f(is)g(to)g(ensure)h(that)f(a)g(conforming)g
(implemen)o(tation)f(can)i(translate)e(a)h(C)h(translat)o(or)-1652 57 y
(written)i(in)g(C.)-188 57 y(F)l(or)j(this)h(reason,)g(and)g(econom)o(y)g
(of)f(description,)h(source)g(co)q(de)h(is)e(describ)q(ed)i @F11 @sf(as)g
(if)28 b @F14 @sf(it)-1651 57 y(undergo)q(es)13 b(the)e(same)g
(translation)f(as)h(text)g(that)g(is)g(input)g(b)o(y)h(the)f(standard)g
(library)g(I/O)h(rou-)-1651 56 y(tines:)21 b(eac)o(h)15 b(line)g(is)g
(terminated)g(b)o(y)g(some)h(new-line)f(c)o(haracter,)g(regardless)f(of)h
(its)g(external)-1651 57 y(represen)o(tation.)1103 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
13 @eop1

14 @bop0
@F12 @sf
[<
0C0001F000060003FE00070007E300078007C18003800F80E003800F806003C00F001001C0
1F000001C01F000001E03E000000E03E000000E07C000000F0FC00000071F800000070FC00
000078070000007800800000380060000038003000003C001800003C001C00003C001E0000
1C000E00001C000E00C01E000F00701E000F00701E000F00181E001F00081E007F00071E01
FE0001FFFFF800003FFFE000>
. 36 32 -1 30 39] 82 @dc
@F11 @sf
[<
000007C0FFF00C200F801C1007803C1007803C0807803C0807803C0003C01E0003C01E0003
C01E0003C01E0001E00F0001E00E0001E01E0001E01C0000F0380000FFF00000F01E0000F0
0700007801C0007801E0007800F0007800F0003C0078003C0078003C0078003C0078001E00
78001E0070001E00E0001E03C001FFFF00>
. 29 32 -3 30 33] 82 @dc
@F7 @sf
[<
F0003CF00078F00078F000F0F000F0F001E0F001C0F003C0F00780F00780F00F00F00F00F0
1E00F01E00F03C00FFF800FFFF00FFFF80F007C0F003E0F001E0F000F0F000F0F000F0F000
F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800>
. 22 32 -5 31 29] 82 @dc
@F12 @sf
[<
0780030008C00FC010E01E3020601E0820703C00E0703C0040781E0000783C0000783C0000
783C0000783C0000783C0038783C00447C3C00447C3C00467C3C00427C3C00027FFE00027C
0180027C0060067C0038047C003C0C780078187800F8307800F0207801F0407801E0407003
E0407807C060E4078020C60F8011810F000F00FF0000001E00>
. 30 34 -2 32 33] 60 @dc
@F8 @sf
[<
0007E0001FE0007FE000780000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00001E0007FC000FF8000FF80007FC00001E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00000E000007800007FE0001FE00007E0>
. 19 36 -2 31 24] 123 @dc
[<
7C0000FF0000FFC00003C00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000F000007FC0003FE0003FE0007FC000F00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00003C000FFC000FF00007C0000>
. 19 36 -2 31 24] 125 @dc
[<
60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F060>
. 4 36 -10 31 24] 124 @dc
[<
60C0F1F0FBF83FBE1F1E060C>
. 15 6 -4 27 24] 126 @dc
[<
E00EF83E7EFC1FF007C00180>
. 15 6 -4 27 24] 94 @dc

14 @eop0

0 0 14 @bop1 112 50 a @F14 @sf(14)1018 b @F10 @sf(Section)15 b(2.)35 b
(ENVIR)o(ONMENT)-1650 145 y @F9 @sf(2.2.1.1)52 b(T)l(rigraph)16 b
(sequences)-640 94 y @F11 @sf(T)m(rigr)n(aph)i(se)n(quenc)n(es)h @F14 @sf
(ha)o(v)o(e)e(b)q(een)h(in)o(tro)q(duced)g(as)f(alternate)f(sp)q(ellings)g
(of)h(some)g(c)o(haracters)-1651 56 y(to)d(allo)o(w)e(the)i(implemen)o
(tation)f(of)h(C)f(in)h(c)o(haracter)g(sets)g(whic)o(h)g(do)g(not)f(pro)o
(vide)h(a)g(su\016cien)o(t)-1651 57 y(n)o(um)o(b)q(er)i(of)f(non-alphab)q
(etic)g(graphics.)-634 60 y(Implemen)o(tations)j(are)h(required)h(to)e
(supp)q(ort)i(these)f(alternate)g(sp)q(ellings,)g(ev)o(en)h(if)e(the)-1650 
56 y(c)o(haracter)c(set)g(in)g(use)g(is)g(ASCI)q(I,)h(in)f(order)f(to)h
(allo)o(w)e(transp)q(ortatio)o(n)h(of)h(co)q(de)h(from)e(systems)-1651 57 y
(whic)o(h)j(m)o(ust)e(use)i(the)f(trigraphs.)-523 60 y(The)e(Committee)f
(faced)i(a)f(serious)f(problem)h(in)g(trying)f(to)h(de\014ne)h(a)f(c)o
(haracter)f(set)h(for)g(C.)-1651 57 y(Not)d(all)g(of)f(the)i(c)o(haracter)f
(sets)g(in)g(general)g(use)g(ha)o(v)o(e)g(the)h(righ)o(t)e(n)o(um)o(b)q
(er)h(of)g(c)o(haracters,)g(nor)g(do)-1650 56 y(they)16 b(supp)q(ort)f
(the)g(graphical)f(sym)o(b)q(ols)h(that)f(C)h(users)g(exp)q(ect)h(to)f
(see.)20 b(F)l(or)14 b(instance,)h(man)o(y)-1651 57 y(c)o(haracter)i(sets)g
(for)f(languages)h(other)g(than)g(English)f(resem)o(ble)h(ASCI)q(I)i
(except)e(that)g(co)q(des)-1650 56 y(used)c(for)e(graphic)g(c)o(haracters)g
(in)h(ASCI)q(I)h(are)e(instead)g(used)i(for)e(extra)g(alphab)q(etic)g(c)o
(haracters)-1651 57 y(or)h(diacritical)f(marks.)18 b(C)12 b(relies)g(up)q
(on)h(a)f(ric)o(her)g(set)g(of)g(graphic)g(c)o(haracters)f(than)h(most)g
(other)-1651 56 y(programming)k(languages,)h(so)g(the)g(represen)o(tation)g
(of)g(programs)f(in)h(c)o(haracter)g(sets)g(other)-1651 56 y(than)f(ASCI)q
(I)g(is)f(a)g(greater)f(problem)h(than)g(for)f(most)h(other)g(programmi)o
(ng)f(languages.)-1484 61 y(The)19 b(In)o(ternational)d(Standards)i
(Organization)f(\(ISO\))i(uses)f(three)h(tec)o(hnical)e(terms)h(to)-1651 
56 y(describ)q(e)c(c)o(haracter)f(sets:)18 b @F11 @sf(r)n(ep)n(ertoir)n(e)p 
@F14 @sf(,)13 b @F11 @sf(c)n(ol)r(lating)h(se)n(quenc)n(e)p @F14 @sf(,)o 
12 x(and)g @F11 @sf(c)n(o)n(deset)p @F14 @sf(.)k(The)c @F11 @sf(r)n(ep)n
(ertoir)n(e)i @F14 @sf(is)-1651 57 y(the)h(set)e(of)h(distinct)f(prin)o
(table)g(c)o(haracters.)21 b(The)16 b(term)g(abstracts)f(the)h(notion)f
(of)g(prin)o(table)-1651 56 y(c)o(haracter)d(from)g(an)o(y)g(particular)f
(represen)o(tation;)h(the)g(glyphs)g(R,)h @F12 @sf(R)p @F14 @sf(,)f @F11 @sf
(R)p @F14 @sf(,)g @F9 @sf(R)p @F14 @sf(,)g @F10 @sf(R)p @F14 @sf(,)g @F7 @sf
(R)p @F14 @sf(,)h(and)f @F12 @sf(<)g @F14 @sf(all)-1651 57 y(represen)o(t)
18 b(the)f(same)g(elemen)o(t)g(of)f(the)i(rep)q(ertoire,)e(upp)q
(er-case-R)q(,)i(whic)o(h)f(is)g(distinct)f(from)-1651 56 y(lo)o(w)o
(er-case-r.)23 b(Ha)o(ving)16 b(decided)h(on)g(the)g(rep)q(ertoire)f(to)g
(b)q(e)h(used)g(\(C)f(needs)h(a)g(rep)q(ertoire)f(of)-1651 57 y(96)f(c)o
(haracters\),)f(one)i(can)f(then)h(pic)o(k)f(a)g @F11 @sf(c)n(ol)r(lating)h
(se)n(quenc)n(e)h @F14 @sf(whic)o(h)e(corresp)q(onds)h(to)f(the)g(in-)-1650 
56 y(ternal)e(represen)o(tation)g(in)g(a)g(computer.)19 b(The)14 b(rep)q
(ertoire)f(and)g(collating)f(sequence)i(together)-1651 57 y(form)h(the)g 
@F11 @sf(c)n(o)n(deset)p @F14 @sf(.)-267 60 y(What)10 b(is)g(needed)h(for)f
(C)g(is)g(to)g(determine)h(the)f(necessary)h(rep)q(ertoire,)f(ignore)g
(the)g(collating)-1652 56 y(sequence)17 b(altogether)d(\(it)g(is)h(of)g
(no)g(imp)q(ortance)g(to)f(the)i(language\),)e(and)h(then)h(\014nd)g(w)o
(a)o(ys)e(of)-1651 57 y(expressing)23 b(the)f(rep)q(ertoire)f(in)h(a)g(w)o
(a)o(y)f(that)h(should)g(giv)o(e)g(no)g(problems)f(with)h(curren)o(tly)-1651 
56 y(p)q(opular)16 b(co)q(desets.)-274 61 y(C)11 b(deriv)o(ed)h(its)f(rep)q
(ertoire)g(from)g(the)h(ASCI)q(I)g(co)q(deset.)20 b(Unfortunately)10 b
(the)i(ASCI)q(I)h(rep)q(er-)-1650 56 y(toire)20 b(is)h(not)f(a)h(subset)g
(of)f(all)g(other)h(commonly)f(used)h(c)o(haracter)g(sets,)g(and)g
(widespread)-1650 57 y(practice)d(in)f(Europ)q(e)h(is)f(not)g(to)f
(implemen)o(t)h(all)g(of)g(ASCI)q(I)h(either,)g(but)f(use)h(some)f(parts)g
(of)-1651 56 y(its)e(collating)e(sequence)k(for)d(sp)q(ecial)h(national)f
(c)o(haracters.)-975 60 y(The)23 b(solution)e(is)g(an)i(in)o(ternational)o
(ly)e(agreed-up)q(on)i(rep)q(ertoire,)g(in)f(terms)g(of)g(whic)o(h)-1651 
57 y(an)d(in)o(ternational)e(represen)o(tation)g(of)i(C)f(can)h(b)q(e)h
(de\014ned.)31 b(The)19 b(ISO)h(has)f(de\014ned)h(suc)o(h)f(a)-1651 56 y
(standard:)h(ISO)c(646)e(describ)q(es)i(an)f @F11 @sf(invariant)h(subset)j 
@F14 @sf(of)c(ASCI)q(I.)-1094 61 y(The)g(c)o(haracters)f(in)h(the)g(ASCI)q
(I)h(rep)q(ertoire)f(used)g(b)o(y)g(C)g(and)g(absen)o(t)f(from)g(the)h
(ISO)h(646)-1651 56 y(rep)q(ertoire)f(are:)-92 114 y @F8 @sf(#)24 b([)g(])g
({)f(})h(\\)g(|)f(~)h(^)-597 110 y @F14 @sf(Giv)o(en)15 b(this)g(rep)q
(ertoire,)f(the)h(Committee)f(faced)h(the)g(problem)g(of)g(de\014ning)g
(represen)o(tations)-1651 56 y(for)20 b(the)h(absen)o(t)f(c)o(haracters.)
34 b(The)21 b(ob)o(vious)f(idea)g(of)g(de\014ning)h(t)o(w)o(o-c)o(hara)o
(cter)e(escap)q(e)i(se-)-1650 57 y(quences)16 b(fails)e(b)q(ecause)h(C)g
(uses)g(all)f(the)h(c)o(haracters)f(whic)o(h)g @F11 @sf(ar)n(e)k @F14 @sf
(in)d(the)g(ISO)g(646)f(rep)q(ertoire:)-1763 124 y
14 @eop1

15 @bop0
@F8 @sf
[<
03800007C00007C00007C00003800000000000000000000000000000000003800003C00003
C00003C00003C00003C00001E00001F000007C00003E00000F00600780F00380F00380700F
007FFF003FFC000FF000>
. 17 28 -3 27 24] 63 @dc
@F8 @sf
[<
70F8F8F870000000000070F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870>
. 5 28 -9 27 24] 33 @dc

15 @eop0

0 0 15 @bop1 112 50 a @F10 @sf(2.2.)35 b(En)o(vironmen)o(tal)o 14 x
(considerations)909 b @F14 @sf(15)-1651 145 y(no)13 b(single)e(escap)q(e)i
(c)o(haracter)e(is)h(a)o(v)m(ailable.)o 18 x(The)g(b)q(est)h(that)e(can)h
(b)q(e)h(done)g(is)e(to)h(use)g(a)g @F11 @sf(trigr)n(aph)-1650 57 y @F14 @sf
(|)k(an)f(escap)q(e)h(digraph)f(follo)o(w)n(ed)f(b)o(y)i(a)e
(distinguishing)g(c)o(haracter.)-1127 57 y @F8 @sf(??)39 b @F14 @sf(w)o
(as)20 b(selected)i(as)f(the)h(escap)q(e)g(digraph)f(b)q(ecause)h(it)f(is)g
(not)g(used)h(an)o(ywhere)f(else)-1650 56 y(in)16 b(C)g(\(except)g(as)g
(noted)g(b)q(elo)o(w\);)g(it)f(suggests)g(that)h(something)f(un)o(usual)h
(is)g(going)f(on.)22 b(The)-1650 57 y(third)13 b(c)o(haracter)e(w)o(as)h
(c)o(hosen)h(with)f(an)g(ey)o(e)h(to)f(graphical)f(similari)o(t)o(y)g(to)h
(the)g(c)o(haracter)g(b)q(eing)-1650 56 y(represen)o(ted.)-168 58 y(The)k
(sequence)h @F8 @sf(??)k @F14 @sf(cannot)16 b(curren)o(tly)f(o)q(ccur)h
(an)o(ywhere)g(in)f(a)g(legal)g(C)g(program)g(except)-1650 56 y(in)i
(strings,)f(c)o(haracter)g(constan)o(ts,)g(commen)o(ts,)g(or)g(header)h
(names.)25 b(The)17 b(c)o(haracter)f(escap)q(e)-1650 57 y(sequence)j @F8 @sf
(\015\\?\015)e @F14 @sf(\(see)g @F12 @sf(x)p @F14 @sf(3.1.3.4\))o 16 x(w)o
(as)g(in)o(tro)q(duced)g(to)g(allo)o(w)e(t)o(w)o(o)h(adjacen)o(t)h
(question-marks)-1651 56 y(in)e(suc)o(h)h(con)o(texts)e(to)h(b)q(e)g
(represen)o(ted)h(as)e @F8 @sf(?\\?)p @F14 @sf(,)h(a)f(form)h(distinct)f
(from)g(the)h(escap)q(e)h(digraph.)-1580 57 y(The)h(Committee)f(mak)o(es)g
(no)h(claims)f(that)g(a)h(program)f(written)g(using)g(trigraphs)g(lo)q
(oks)-1651 57 y(attractiv)o(e.)26 b(As)18 b(a)f(matter)g(of)g(st)o(yle,)g
(it)g(ma)o(y)g(b)q(e)h(wise)f(to)g(surround)h(trigraphs)f(with)g(white)-1651 
56 y(space,)c(so)g(that)e(they)i(stand)f(out)g(b)q(etter)h(in)f(program)g
(text.)18 b(Some)13 b(users)f(ma)o(y)g(wish)g(to)g(de\014ne)-1649 57 y
(prepro)q(cessing)k(macros)e(for)h(some)g(or)f(all)g(of)h(the)h(trigra)o
(ph)f(sequences.)-590 111 y @F7 @sf(QUIET)g(CHANGE)-876 77 y @F14 @sf
(Programs)21 b(with)g(c)o(haracter)h(sequences)h(suc)o(h)g(as)f @F8 @sf
(??!)41 b @F14 @sf(in)22 b(string)f(constan)o(ts,)-1424 56 y(c)o(haracter)
14 b(constan)o(ts,)f(or)h(header)h(names)g(will)e(no)o(w)h(pro)q(duce)h
(di\013eren)o(t)f(results.)-1538 125 y @F9 @sf(2.2.1.2)52 b(Multib)o(yte)
16 b(c)o(haracters)-679 88 y @F14 @sf(The)h(\\b)o(yte)e(=)i(c)o(haracter")e
(orien)o(tati)o(on)g(of)g(C)h(w)o(orks)f(w)o(ell)g(for)h(text)f(in)h(W)l
(estern)g(alphab)q(ets,)-1651 56 y(where)f(the)g(size)g(of)f(the)g(c)o
(haracter)g(set)h(is)f(under)h(256.)k(The)c(\014t)f(is)g(rather)g
(uncomfortable)g(for)-1651 57 y(languages)e(suc)o(h)g(as)g(Japanese)h(and)f
(Chinese,)h(where)f(the)h(rep)q(ertoire)e(of)h(ideograms)f(n)o(um)o(b)q
(ers)-1650 56 y(in)16 b(the)f(thousands)g(or)g(tens)g(of)g(thousands.)-693 
58 y(In)o(ternally)l(,)20 b(suc)o(h)g(c)o(haracter)f(sets)h(can)f(b)q(e)i
(represen)o(ted)f(as)f(n)o(umeric)h(co)q(des,)h(and)f(it)f(is)-1651 56 y
(merely)13 b(necessary)g(to)e(c)o(ho)q(ose)i(the)g(appropriate)e(in)o
(tegral)g(t)o(yp)q(e)i(to)f(hold)g(an)o(y)h(suc)o(h)g(c)o(haracter.)-1581 
58 y(Externally)l(,)h(whether)h(in)f(the)h(\014les)g(manipulated)g(b)o(y)f
(a)h(program,)e(or)i(in)g(the)f(text)h(of)f(the)-1650 56 y(source)h(\014les)f
(themselv)o(es,)f(a)h(con)o(v)o(ersion)f(b)q(et)o(w)o(een)h(these)g(large)f
(co)q(des)i(and)f(the)g(v)m(arious)g(b)o(yte)-1651 56 y(media)h(is)g
(necessary)l(.)-304 58 y(The)g(supp)q(ort)h(in)f(C)g(of)g(large)f(c)o
(haracter)g(sets)h(is)g(based)g(on)h(these)f(principles:)-1370 97 y @F12 @sf
(\017)22 b @F14 @sf(Multib)o(yte)17 b(enco)q(dings)h(of)g(large)f(c)o
(haracter)g(sets)h(are)f(necessary)h(in)g(I/O)h(op)q(erations,)-1538 57 y
(in)c(source)g(text)g(commen)o(ts,)f(and)i(in)f(source)g(text)g(string)f
(and)h(c)o(haracter)g(literals)o(.)-1498 97 y @F12 @sf(\017)22 b @F14 @sf
(No)e(existing)e(m)o(ultib)o(yte)h(enco)q(ding)h(is)f(mandated)h(in)f
(preference)i(to)e(an)o(y)g(other;)i(no)-1536 57 y(widespread)15 b
(existing)g(enco)q(ding)g(should)g(b)q(e)h(precluded.)-1049 97 y @F12 @sf
(\017)22 b @F14 @sf(The)c(n)o(ull)e(c)o(haracter)h(\()p @F8 @sf(\015\\0\015)p 
@F14 @sf(\))f(ma)o(y)g(not)h(b)q(e)h(used)g(as)e(part)h(of)g(a)g(m)o
(ultib)o(yt)o(e)f(enco)q(ding,)-1536 57 y(except)21 b(for)e(the)h(one-b)o
(yte)g(n)o(ull)g(c)o(haracter)f(itself.)33 b(This)20 b(allo)n(ws)f
(existing)g(functions)-1537 56 y(whic)o(h)c(manipulate)g(strings)f
(transparen)o(tly)f(to)i(w)o(ork)f(with)h(m)o(ultib)o(yte)f(sequences.)-1520 
98 y @F12 @sf(\017)22 b @F14 @sf(Shift)17 b(enco)q(dings)g(\(whic)o(h)f
(in)o(terpret)g(b)o(yte)h(sequences)h(in)e(part)g(on)h(the)g(basis)f(of)h
(some)-1537 56 y(state)11 b(informatio)o(n\))f(m)o(ust)h(start)g(out)g(in)g
(a)g(kno)o(wn)h(\(default\))e(shift)h(state)g(under)h(certain)-1537 57 y
(circumstances,)j(suc)o(h)g(as)g(the)g(start)f(of)h(string)f(literals.)306 
124 y @F15 @sf(RA)m(TIONALE)-1763 b
15 @eop1

16 @bop0
@F6 @sf
[<
01FC3FC007FF3FC00F83BE001E00FE003E007E007C003E007C003E00FC003E00FC003E00FC
003E00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007E003E003E003E001F00
7E000F81FE0007FFBE0001FC3E0000003E0000003E0000003E0000003E0000003E0000003E
0000003E0000003E0000003E0000003E0000003E000001FE000001FE00>
. 26 35 -2 34 31] 100 @dc
[<
FFE00000FFE000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F
0000001F0FC0001F3FF8001FE0FC001FC03E001F803F001F001F801F001F801F000FC01F00
0FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F801F001F801F001F
001F803E001FF07C00FF3FF800FF0FE000>
. 26 32 -2 21 31] 112 @dc
[<
1F0000007F80000069C00000FC600000FC300000FC3800007818000000180000000C000000
0C0000000E0000000E0000001F0000001F0000003F8000003F8000007FC000007CC000007C
C00000F8600000F8600001F0300001F0300003E0180003E0180007E01C0007C00C000FC00E
000F8006000F800600FFE01FE0FFE01FE0>
. 27 32 -1 21 30] 121 @dc
@F8 @sf
[<
03800003800003800003800003800003800003800003C00001C00001C00001C00001C00000
E00000E00000E000007000007000003800003800001C00001E00000E00000700E00780E003
C0FFFFE0FFFFE0FFFFE0E00000>
. 19 29 -2 28 24] 55 @dc
@F8 @sf
[<
03F8001FFE003FFF007C0780F003C0F001C0F000E0F000E00000E00000E00000E00001C000
03C000078003FF0003FE0003FF00000F000003800003C00001C03001C07801C07803C07807
803FFF001FFE0007F800>
. 19 28 -2 27 24] 51 @dc
@F6 @sf
[<
01FE000FFFC01E07F07801F87E01FCFF00FCFF00FEFF00FEFF00FE7E00FE3C00FE0000FC00
00FC0001F80001F00007C001FF0001FE00001F800007C00003E00003F01F03F01F03F83F81
F83F81F83F81F83F03F01E03F00F07E007FFC000FE00>
. 23 32 -2 31 28] 51 @dc
[<
80FF80C7FFE0FF00F8FC003CF0003CE0001EE0001EC0001FC0001FC0001F00003F00003F00
007F0003FF003FFE03FFFE0FFFFC1FFFF83FFFF07FFFC07FFF00FFE000FF0000FC0000FC00
0CF8000CF8000C78001C78001C7C003C3C007C1F03FC07FF8C01FC04>
. 24 34 -3 33 31] 83 @dc
[<
01FF000FFFE03F01F87C007C78003CF0001EF0001EF0001EF0001E70003E3800FC1FFFFC0F
FFF81FFFF03FFF8038000030000030000013FC001FFF001F0F803E07C03C03C07C03E07C03
E07C03E07C03E07C03E03C03C03E07CF1F0F8F0FFF7F03FC1E>
. 24 33 -2 21 28] 103 @dc

16 @eop0

0 0 16 @bop1 112 50 a @F14 @sf(16)1018 b @F10 @sf(Section)15 b(2.)35 b
(ENVIR)o(ONMENT)-1581 145 y @F12 @sf(\017)22 b @F14 @sf(The)14 b(minim)o
(um)g(n)o(um)o(b)q(er)g(of)g(absolutely)f(necessary)h(library)f(functions)h
(is)g(in)o(tro)q(duced.)-1537 57 y(\(See)i @F12 @sf(x)p @F14 @sf(4.10.7)o
(.\))-381 133 y @F6 @sf(2.2.2)56 b(Character)19 b(displa)n(y)f(seman)n
(tics)-860 89 y @F14 @sf(The)h(Standard)e(de\014nes)i(a)f(n)o(um)o(b)q(er)g
(of)g(in)o(ternal)e(c)o(haracter)i(co)q(des)g(for)f(sp)q(ecifying)h
(\\format)-1652 57 y(e\013ecting)h(actions)f(on)i(displa)o(y)e(devices,")i
(and)g(pro)o(vides)e(prin)o(table)h(escap)q(e)h(sequences)g(for)-1651 56 y
(eac)o(h)13 b(of)g(them.)19 b(These)13 b(c)o(haracter)f(co)q(des)h(are)g
(clearly)f(mo)q(delled)h(after)f(ASCI)q(I)i(con)o(trol)d(co)q(des,)-1650 
57 y(and)21 b(the)e(mnemonic)h(letters)f(used)i(to)e(sp)q(ecify)h(their)f
(escap)q(e)i(sequences)g(re\015ect)f(this)f(her-)-1650 56 y(itage.)27 b
(Nev)o(ertheless,)17 b(they)h(are)f @F11 @sf(internal)22 b @F14 @sf(co)q
(des)c(for)f(sp)q(ecifying)h(the)f(format)g(of)g(a)g(displa)o(y)-1651 57 y
(in)d(an)g(en)o(vironmen)o(t-indep)q(enden)o(t)h(manner;)f(they)g(m)o(ust)f
(b)q(e)h(written)f(to)g(a)h @F11 @sf(text)h(\014le)h @F14 @sf(to)e(e\013ect)
-1651 56 y(formatting)j(on)h(a)g(displa)o(y)f(device.)29 b(The)18 b
(Standard)g(states)g(quite)f(clearly)h(that)f(the)h(exter-)-1650 57 y(nal)f
(represen)o(tation)g(of)f(a)h(text)g(\014le)g(\(or)g(data)f(stream\))g(ma)o
(y)h(w)o(ell)f(di\013er)h(from)f(the)i(in)o(ternal)-1652 56 y(form,)13 b
(b)q(oth)g(in)g(c)o(haracter)g(co)q(des)g(and)h(n)o(um)o(b)q(er)f(of)g(c)o
(haracters)f(needed)j(to)d(represen)o(t)h(a)g(single)-1651 56 y(in)o
(ternal)i(co)q(de.)-200 59 y(The)i(distinction)e(b)q(et)o(w)o(een)i(in)o
(ternal)e(and)h(external)g(co)q(des)h(most)f(needs)h(emphasis)f(with)-1651 
56 y(resp)q(ect)i(to)f @F11 @sf(new-line)p @F14 @sf(.)26 b(ANSI)18 b(X3L2)f
(\(Co)q(des)g(and)h(Character)e(Sets\))h(uses)h(the)g(term)f(to)f(re-)-1650 
57 y(fer)j(to)g(an)g(external)f(co)q(de)i(used)f(for)g(informati)o(on)f
(in)o(terc)o(hange)g(whose)h(displa)o(y)f(seman)o(tics)-1651 56 y(sp)q
(ecify)e(a)f(mo)o(v)o(e)f(to)h(the)g(next)h(line.)j(Both)c(ANSI)h(X3L2)f
(and)h(ISO)g(646)e(deprecate)i(the)g(com-)-1651 57 y(bination)f(of)g(the)h
(motion)e(to)h(the)g(next)h(line)f(with)g(a)g(motion)f(to)h(the)h(initial)o 
14 x(p)q(osition)f(on)g(the)-1650 56 y(line.)20 b(The)14 b(C)g(Standard,)g
(on)g(the)g(other)g(hand,)g(uses)g @F11 @sf(new-line)j @F14 @sf(to)c
(designate)h(the)g(end-of-line)-1650 57 y(in)o(ternal)20 b(co)q(de)h
(represen)o(ted)g(b)o(y)f(the)h(escap)q(e)g(sequence)h @F8 @sf(\015\\n\015)p 
@F14 @sf(.)35 b(While)20 b(this)g(am)o(biguit)o(y)f(is)-1651 56 y(p)q
(erhaps)f(unfortunate,)f(use)h(of)f(the)g(term)g(in)g(the)g(latter)f
(sense)h(is)g(nearly)g(univ)o(ersal)f(within)-1651 57 y(the)21 b(C)g(comm)o
(unit)o(y)l(.)36 b(But)21 b(the)g(kno)o(wledge)f(that)g(this)g(in)o
(ternal)g(co)q(de)i(has)e(n)o(umerous)h(ex-)-1650 56 y(ternal)e(represen)o
(tations,)g(dep)q(end)q(ing)h(up)q(on)g(op)q(erating)f(system)g(and)h
(medium,)g(is)f(equally)-1651 56 y(widespread.)-162 59 y(The)f(alert)f
(sequence)h(\()p @F8 @sf(\015\\a\015)p @F14 @sf(\))f(has)g(b)q(een)i
(added)g(b)o(y)e(p)q(opular)h(demand,)g(to)f(replace,)h(for)-1651 56 y
(instance,)d(the)g(ASCI)q(I)i(BEL)f(co)q(de)f(explicitly)f(co)q(ded)i(as)f 
@F8 @sf(\015\\007\015)p @F14 @sf(.)-1090 59 y(Prop)q(osals)d(to)h(add)g 
@F8 @sf(\015\\e\015)g @F14 @sf(for)g(ASCI)q(I)h(ESC)f(\()p @F8 @sf(\015\\033\015)p
@F14 @sf(\))f(w)o(ere)h(not)g(adopted)h(b)q(ecause)g(other)-1651 56 y(p)q
(opular)h(c)o(haracter)g(sets)f(suc)o(h)h(as)g(EBCDIC)g(ha)o(v)o(e)f(no)h
(ob)o(vious)f(equiv)m(alen)o(t.)20 b(\(See)15 b @F12 @sf(x)p @F14 @sf
(3.1.3.4.)o(\))-1581 59 y(The)c(v)o(ertical)f(tab)g(sequence)i(\()p @F8 @sf
(\015\\v\015)p @F14 @sf(\))e(w)o(as)g(added)i(since)f(man)o(y)f(existing)g
(implemen)o(tations)-1652 56 y(supp)q(ort)16 b(it,)f(and)h(since)f(it)g
(is)g(con)o(v)o(enien)o(t)h(to)f(ha)o(v)o(e)g(a)g(designation)g(within)g
(the)g(language)g(for)-1651 57 y(all)g(the)g(de\014ned)h(white)f(space)h
(c)o(haracters.)-688 58 y(The)11 b(seman)o(tics)e(of)i(the)f(motion)g(con)o
(trol)f(escap)q(e)i(sequences)h(carefully)e(a)o(v)o(oid)f(the)h(W)l
(estern)-1650 56 y(language)15 b(assumptions)f(that)h(prin)o(ting)f(adv)m
(ances)i(left-to-rig)o(h)o(t)e(and)h(top-to-b)q(ottom.)-1469 59 y(T)l(o)g
(a)o(v)o(oid)e(the)i(issue)g(of)f(whether)h(an)g(implemen)o(tati)o(on)f
(conforms)g(if)g(it)g(cannot)h(prop)q(erly)-1651 56 y(e\013ect)c(v)o
(ertical)e(tabs)h(\(for)f(instance\),)i(the)f(Standard)g(emphasizes)h
(that)f(the)g(seman)o(tics)g(merely)-1651 57 y(describ)q(e)16 b @F11 @sf
(intent)t @F14 @sf(.)-310 133 y @F6 @sf(2.2.3)56 b(Signals)18 b(and)h(in)n
(terrupts)-714 90 y @F11 @sf(Signals)h @F14 @sf(are)d(di\016cult)f(to)h
(sp)q(ecify)g(in)g(a)g(system-indep)q(enden)q -1 x(t)h(w)o(a)o(y)l(.)25 b
(The)17 b(Committee)f(con-)-1650 56 y(cluded)i(that)d(ab)q(out)i(the)f
(only)g(thing)g(a)g(strictly)f(conforming)h(program)f(can)i(do)f(in)g(a)h
(signal)-1652 57 y(handler)i(is)e(to)h(assign)f(a)h(v)m(alue)g(to)g(a)g 
@F8 @sf(volatile)k(static)c @F14 @sf(v)m(ariable)f(whic)o(h)h(can)h(b)q(e)f
(written)-1763 124 y
16 @eop1

17 @bop0
@F6 @sf
[<
00FFFE00FFFE0007E00007E00007E00007E00007E00007E00007E0FFFFFEFFFFFEE007E070
07E03807E01807E00C07E00E07E00707E00307E00187E001C7E000E7E00077E00037E0001F
E0001FE0000FE00007E00003E00003E00001E00000E0>
. 23 32 -2 31 28] 52 @dc
@F9 @sf
[<
FFFFC0FFFFC07C03C03E01C03F00C01F80E00F806007C06003E06003F00001F80000F80060
7C00603E00603F00701F80380F803C07C03FFFE03FFFE0>
. 19 20 -1 19 23] 122 @dc

17 @eop0

0 0 17 @bop1 112 50 a @F10 @sf(2.2.)35 b(En)o(vironmen)o(tal)o 14 x
(considerations)909 b @F14 @sf(17)-1651 145 y(unin)o(terruptedly)22 b(and)f
(promptly)g(return.)38 b(\(The)21 b(header)h @F8 @sf(<signal.h>)e @F14 @sf
(sp)q(eci\014es)i(a)f(t)o(yp)q(e)-1650 57 y @F8 @sf(sig)s 14 -2 z 14 x
(atomic)s 14 -2 z 14 x(t)15 b @F14 @sf(whic)o(h)g(can)g(b)q(e)h(so)f
(written.\))k(It)c(is)g(further)g(guaran)o(teed)g(that)f(a)h(signal)f
(han-)-1650 56 y(dler)22 b(will)e(not)h(corrupt)f(the)i(automatic)e
(storage)g(of)h(an)g(instan)o(tia)o(tio)o(n)g(of)f(an)o(y)h(executing)-1650 
56 y(function,)15 b(ev)o(en)h(if)e(that)h(function)g(is)g(called)f(within)h
(the)g(signal)f(handler.)-1227 59 y(No)j(suc)o(h)h(guaran)o(tees)e(can)i
(b)q(e)g(extended)g(to)f(library)f(functions,)h(with)g(the)h(explicit)e
(ex-)-1650 56 y(ceptions)22 b(of)e @F8 @sf(longjmp)h @F14 @sf(\()p @F12 @sf
(x)p @F14 @sf(4.6.2)o(.1\))e(and)j @F8 @sf(signal)e @F14 @sf(\()p @F12 @sf
(x)p @F14 @sf(4.7.1.1)o(\),)h(since)g(the)h(library)e(functions)-1651 57 y
(ma)o(y)15 b(b)q(e)h(arbitraril)o(y)e(in)o(terrelated)g(and)h(since)h
(some)f(of)g(them)g(ha)o(v)o(e)g(profound)g(e\013ect)g(on)g(the)-1650 56 y
(en)o(vironmen)o(t.)-189 58 y(Calls)e(to)h @F8 @sf(longjmp)f @F14 @sf(are)i
(problematic,)e(despite)h(the)h(assurances)f(of)g @F12 @sf(x)q @F14 @sf
(4.6.2)o(.1.)o 19 x(The)h(signal)-1652 57 y(could)g(ha)o(v)o(e)f(o)q
(ccurred)g(during)g(the)h(execution)f(of)g(some)g(library)f(function)h
(whic)o(h)g(w)o(as)f(in)h(the)-1650 56 y(pro)q(cess)i(of)f(up)q(dating)g
(external)g(state)f(and/or)h(static)f(v)m(ariables.)-1083 58 y(A)k(second)f
(signal)g(for)g(the)g(same)g(handler)h(could)f(o)q(ccur)h(b)q(efore)g(the)f
(\014rst)g(is)g(pro)q(cessed,)-1650 57 y(and)f(the)f(Standard)g(mak)o(es)g
(no)g(guaran)o(tees)f(as)h(to)g(what)f(happ)q(ens)j(to)d(the)h(second)h
(signal.)-1602 131 y @F6 @sf(2.2.4)56 b(En)n(vironmen)n(tal)17 b(limits)
-689 89 y @F14 @sf(The)g(Committ)o(ee)e(agreed)h(that)f(the)h(Standard)g
(m)o(ust)f(sa)o(y)g(something)g(ab)q(out)h(certain)f(capa-)-1650 57 y
(cities)i(and)g(limit)o(atio)o(ns,)f(but)h(just)f(ho)o(w)h(to)f(enforce)h
(these)g(treat)o(y)e(p)q(oin)o(ts)i(w)o(as)f(the)h(topic)f(of)-1651 56 y
(considerable)f(debate.)-402 130 y @F9 @sf(2.2.4.1)52 b(T)l(ranslation)17 b
(limi)o(ts)-606 89 y @F14 @sf(The)k(Standard)g(requires)f(that)g(an)h
(implemen)o(tati)o(on)e(b)q(e)j(able)e(to)g(translate)f(and)i(compile)-1651 
56 y(some)c(program)f(that)g(meets)h(eac)o(h)g(of)f(the)h(stated)f
(limits.)23 b(This)17 b(criterion)f(w)o(as)g(felt)g(to)g(giv)o(e)-1651 57 y
(a)22 b(useful)g(latitude)f(to)g(the)h(implemen)o(tor)f(in)h(meeting)f
(these)h(limits.)o 39 x(While)f(a)h(de\014cien)o(t)-1650 56 y(implemen)o
(tation)12 b(could)h(probably)f(con)o(triv)o(e)g(a)h(program)f(that)g
(meets)h(this)f(requiremen)o(t,)h(y)o(et)-1651 57 y(still)e(succeed)i(in)f
(b)q(eing)g(useless,)g(the)g(Committee)f(felt)g(that)g(suc)o(h)i(ingen)o
(uit)o(y)e(w)o(ould)g(probably)-1651 56 y(require)18 b(more)f(w)o(ork)g
(than)g(making)g(something)g(useful.)28 b(The)17 b(sense)i(of)e(the)h
(Committ)o(ee)f(is)-1651 57 y(that)e(implemen)o(tors)f(should)h(not)g
(construe)g(the)g(translation)f(limit)o(s)g(as)h(the)g(v)m(alues)h(of)e
(hard-)-1650 56 y(wired)k(parameters,)f(but)h(rather)f(as)g(a)h(set)f(of)h
(criteria)e(b)o(y)i(whic)o(h)f(an)h(implemen)o(tatio)o(n)f(will)-1652 56 y
(b)q(e)f(judged.)-136 59 y(Some)i(of)f(the)h(limits)e(c)o(hosen)i
(represen)o(t)g(in)o(teresting)e(compromises.)27 b(The)18 b(goal)e(w)o(as)h
(to)-1651 56 y(allo)o(w)f(reasonably)h(large)f(p)q(ortable)h(programs)g
(to)f(b)q(e)i(written,)f(without)g(placing)f(excessiv)o(e)-1650 56 y
(burdens)h(on)e(reasonably)f(small)g(implemen)o(tations.)o -851 59 a(The)i
(minim)o(um)f(maxim)o(um)f(limit)g(of)h(257)g(cases)h(in)f(a)g(switc)o(h)g
(statemen)o(t)g(allo)o(w)o(s)f(co)q(ding)-1650 56 y(of)g(lexical)f
(routines)g(whic)o(h)h(can)g(branc)o(h)g(on)g(an)o(y)f(c)o(haracter)h
(\(one)f(of)h(at)f(least)g(256)g(v)m(alues\))h(or)-1651 57 y(on)i(the)f(v)m
(alue)g(EOF.)-368 129 y @F9 @sf(2.2.4.2)52 b(Numerical)16 b(limits)-585 
89 y @F14 @sf(In)g(addition)f(to)f(the)h(discussion)g(b)q(elo)o(w,)g(see)g 
@F12 @sf(x)p @F14 @sf(4.1.4.)-926 130 y @F9 @sf(2.2.4.2.1)52 b(Sizes)13 b
(of)g(in)o(tegral)g(t)o(yp)q(es)g @F8 @sf(<limits.h>)44 b @F14 @sf(Suc)o
(h)13 b(a)e(large)g(b)q(o)q(dy)i(of)e(C)h(co)q(de)h(has)-1651 57 y(b)q
(een)k(dev)o(elop)q(ed)g(for)e(8-bit)g(b)o(yte)g(mac)o(hines)h(that)f(the)g
(in)o(teger)g(sizes)h(in)f(suc)o(h)h(en)o(vironmen)o(ts)-252 124 y @F15 @sf
(RA)m(TIONALE)-1763 b
17 @eop1

18 @bop0
@F8 @sf
[<
01F80007FE000FFF001E07803C03C03801C07000E07000E07000E0F000E0E000E0F000E0F0
01C0F803C0FE0780FFFF00E7FE00E1F8007000007000003800003801801C03C01E03C00F83
C007FF8001FF00007E00>
. 19 28 -2 27 24] 54 @dc
[<
03F0001FFC003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C018
03C03C07803FFF003FFE003BF8003800003800003800003800003800003800003800003800
003FFF803FFF801FFF80>
. 19 28 -2 27 24] 53 @dc
@F8 @sf
[<
00F80003FE0007FF800F07C01E01C03C00E03800E07000E07000E0700000E00000E00000E0
0000E00000E00000E00000E00000E000007000007000E07000E03800E03C01E01E03E00F07
E007FFE003FEE000F8E0>
. 19 28 -2 27 24] 67 @dc
[<
7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C
01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01
C07F07F0FF8FF87F07F0>
. 21 28 -1 27 24] 72 @dc
[<
7F07F0FF8FF87F07F01C01C01C01C00E03800E03800FFF800FFF800FFF8007070007070007
0700070700030600038E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000D8
0000F80000F800007000>
. 21 28 -1 27 24] 65 @dc
[<
7F00F0FF81F87F01F81C039C1C039C1C039C1C03801C03801C03801C03801C03801C07001C
0F001FFE001FFE001FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F
807FFF00FFFE007FF800>
. 22 28 -1 27 24] 82 @dc
[<
FFFE00FFFF80FFFFC01C03E01C00E01C00F01C00701C00701C00701C00701C00F01C00E01C
03C01FFFC01FFF001FFF801C07C01C01C01C01E01C00E01C00E01C00E01C00E01C01C01C03
C0FFFF80FFFF00FFFC00>
. 20 28 -1 27 24] 66 @dc
[<
7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
007FFF00FFFF807FFF00>
. 17 28 -3 27 24] 73 @dc
[<
07FF0007FF0007FF0000700000700000700000700000700000700000700000700000700000
7000007000007000007000007000007000007000007000007000E07038E07038E07038E070
38FFFFF8FFFFF87FFFF8>
. 21 28 -1 27 24] 84 @dc
@F8 @sf
[<
E7F800FFFE00FFFF80F80780F001C0E001E0E000E06000E00000E00000E00001C00003C000
0F8000FF0007FE001FF0003F0000780000700000E00000E00380E00380E003807007807C0F
803FFF801FFF8003F380>
. 19 28 -2 27 24] 83 @dc
[<
FE03F8FE03F8FE03F83800E03800E03800E03800E03800E03800E03870E03870E038F8E038
D8E038D8E039DCE039DCE039DCE0398CE0398CE03B8EE03B8EE03B06E03B06E03B06E03B06
E0FE03F8FE03F8FC01F8>
. 21 28 -1 27 24] 77 @dc
@F8 @sf
[<
0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700780F
007FFF003FFE000FF800>
. 17 28 -3 27 24] 79 @dc
@F9 @sf
[<
3FF9FFC03FF9FFC007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007
C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E00FFFF
FE00FFFFFE0007C03E0007C03E0007C03E0007C03E0007C03E0007C07E0007C07E0003E0FE
0001E0FE0000F87E00007FFE00000FFE00>
. 26 32 0 31 29] 13 @dc
/@F22 @newfont
@F22 @sf
[<
7FF007000700070007000700070007000700070007000700070007000700070007000700FF
0007000300>
. 12 21 -2 20 18] 49 @dc
@F8 @sf
[<
FFC000FFC000FFC0001C00001C00001C00001C00001C00001C00001C00001C1C001C1C001C
1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00E01C00E01C00E01C00
E0FFFFE0FFFFE0FFFFE0>
. 19 28 -2 27 24] 70 @dc
[<
7FFFF0FFFFF07FFFF00E00700E00700E00700E00700E00700E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
007FE000FFE0007FE000>
. 20 28 -1 27 24] 76 @dc
[<
7FF800FFFE007FFF001C0F801C03C01C01C01C01E01C00E01C00E01C00F01C00701C00701C
00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C03C01C03C01C0F
807FFF00FFFE007FF800>
. 20 28 -1 27 24] 68 @dc
[<
01F1C003FDC00FFFC01F0FC01C07C03803C03803C07003C07001C07001C0E00FF0E01FF0E0
0FF0E00000E00000E00000E00000E000007000007001C07001C03801C03803C01C03C01F0F
C00FFFC003FDC001F1C0>
. 20 28 -2 27 24] 71 @dc
/@F23 @newfont
@F23 @sf
[<
FF800C000C000C000C000C000C000C000C000C000C000C000C00CC003C000C00>
. 9 16 -2 15 15] 49 @dc
/@F20 @newfont
@F20 @sf
[<
87E0D818E004C006C00280038003800300030007000E003E07FC1FF83FE07E007000E000C0
02C002C002C0066006200E18360FC2>
. 16 26 -2 25 21] 83 @dc
[<
07E00C18380830046000E000E000E000E000FFFCE00C600C701830181C3007C0>
. 14 16 -1 15 17] 101 @dc
[<
FF80FFC01E003E000C001C000400380002007800010070000100E0000081E0000041C00000
4380000027800000170000001E0000001E0000001C0000003C0000007A00000071000000E1
800001E0800001C040000380600007802000070030000F003C007FC0FF00>
. 26 26 -1 25 29] 88 @dc
[<
0F8030E040704038C03CE03CE03C003C003C0038007000E00F8000C0006000700070007820
3870386078207010E00F80>
. 14 24 -2 23 19] 51 @dc
[<
1E00618041C0E0E0E0E040E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E01FFC>
. 14 26 -3 25 20] 74 @dc
[<
010040000180C0000380E0000380E00003C1E0000741D000074190000F2398000E2388000E
2308001E170C001C1704001C160400380E06003C0E0700FF3F9F80>
. 25 16 -1 15 28] 119 @dc
[<
07E01C38381C700E6006E007E007E007E007E007E0076006700E300C1C3807E0>
. 16 16 -1 15 19] 111 @dc
[<
FFC01C001C001C001C001C001C001C001C001C001C001C001E201E701D70FCE0>
. 12 16 -1 15 15] 114 @dc
[<
FF3FC01C1F001C1E001C1C001C38001C78001C70001CE0001FE0001DC0001C40001C20001C
10001C18001C1E001C3F801C00001C00001C00001C00001C00001C00001C00001C00001C00
00FC0000>
. 18 26 -1 25 20] 107 @dc
[<
FF801C001C001C001C001C001C001C001C001C001C001C001C001C001C00FC000000000000
0000000000000018003C003C001800>
. 9 26 0 25 11] 105 @dc
[<
FF9FC01C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001E
0E001E0E001D0C00FCF800>
. 18 16 -1 15 21] 110 @dc
[<
07E0381C6006C003C003C003C003600F1FFE3FFC3FF07000600020002FC018603030703870
3870387038303018730FCE>
. 16 24 -1 15 19] 103 @dc
[<
07CFC01C2E00381E00700E00600E00E00E00E00E00E00E00E00E00E00E00E00E00700E0030
0E00380E000C3E0003CE00000E00000E00000E00000E00000E00000E00000E00000E00000E
00007E00>
. 18 26 -1 25 21] 100 @dc
[<
07E00C18380830047000E000E000E000E000E000E00070003008381C0C1C07F8>
. 14 16 -1 15 17] 99 @dc
[<
07CFC00C2E001C1E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C
0E001C0E001C0E00FC7E00>
. 18 16 -1 15 21] 117 @dc
[<
FF9FE7F81C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C
0701C01C0701C01C0701C01E0781C01E0781C01D8E6380FC7C1F00>
. 29 16 -1 15 32] 109 @dc
[<
03800E401C201C201C201C201C201C001C001C001C001C001C001C001C00FFC03C001C000C
000C00040004000400>
. 11 23 -1 22 15] 116 @dc
[<
0FC0186020106008C00CC00CC00CC00C401C603830F819F007C00F803E603C307010601860
1860182018303018600780>
. 14 24 -2 23 19] 56 @dc
[<
FFC0FFC0>
. 10 2 0 8 13] 45 @dc
[<
FFF00700070007000700070007000700070007000700070007000700070007000700070007
0007000700FF0007000300>
. 12 24 -3 23 19] 49 @dc
[<
FFF87FF83FF8300810040804040402000100018000C00060007000380038003C401CE01CC0
1C803C4038203010600F80>
. 14 24 -2 23 19] 50 @dc
[<
60F0F060>
. 4 4 -3 3 11] 46 @dc

18 @eop0

0 0 18 @bop1 112 50 a @F14 @sf(18)1018 b @F10 @sf(Section)15 b(2.)35 b
(ENVIR)o(ONMENT)-1650 145 y @F14 @sf(m)o(ust)16 b(b)q(e)h(considered)g
(normativ)o(e.)22 b(The)16 b(prescrib)q(ed)h(limits)e(are)h(minima:)21 b
(an)16 b(implemen)o(ta-)-1651 57 y(tion)i(on)g(a)g(mac)o(hine)g(with)g
(9-bit)g(b)o(ytes)g(can)g(b)q(e)h(conforming,)f(as)g(can)g(an)g(implemen)o
(tation)-1652 56 y(that)d(de\014nes)h @F8 @sf(int)f @F14 @sf(to)f(b)q(e)i
(the)g(same)e(width)h(as)g @F8 @sf(long)p @F14 @sf(.)k(The)d(negativ)o(e)e
(limits)f(ha)o(v)o(e)i(b)q(een)h(c)o(ho-)-1650 56 y(sen)i(to)e(accommo)q
(date)g(ones-complemen)o(t)g(or)g(sign-magnitude)g(implemen)o(tations,)f
(as)h(w)o(ell)-1651 57 y(as)f(the)g(more)g(usual)f(t)o(w)o(os-complemen)o
(t.)19 b(The)c(limits)e(for)h(the)h(maxima)f(and)h(minima)f(of)h(un-)-1650 
56 y(signed)j(t)o(yp)q(es)f(are)g(sp)q(eci\014ed)i(as)e(unsigned)g
(constan)o(ts)g(\(e.g.,)f @F8 @sf(65535u)p @F14 @sf(\))g(to)h(a)o(v)o(oid)f
(surprising)-1651 57 y(widenings)f(of)g(expressions)g(in)o(v)o(olving)f
(these)h(extrema.)-913 56 y(The)h(macro)f @F8 @sf(CHAR)s 14 -2 z 14 x(BIT)g 
@F14 @sf(mak)o(es)g(a)o(v)m(ailable)f(the)i(n)o(um)o(b)q(er)g(of)f(bits)g
(in)h(a)f @F8 @sf(char)g @F14 @sf(ob)s(ject.)21 b(The)-1650 57 y
(Committee)14 b(sa)o(w)h(littl)o(e)f(utilit)o(y)g(in)h(adding)g(suc)o(h)g
(macros)g(for)f(other)h(data)g(t)o(yp)q(es.)-1366 56 y(The)20 b(names)f
(asso)q(ciated)g(with)f(the)i @F8 @sf(short)j(int)c @F14 @sf(t)o(yp)q(es)g
(\()p @F8 @sf(SHRT)s 14 -2 z 14 x(MIN)p @F14 @sf(,)f(etc.,)i(rather)f
(than)-1651 57 y @F8 @sf(SHORT)s 14 -2 z 14 x(MIN)p @F14 @sf(,)f(etc.\))g
(re\015ect)h(prior)f(art)g(rather)h(than)f(obsessiv)o(e)h(abbreviation)e
(on)i(the)g(Com-)-1651 56 y(mittee's)14 b(part.)-269 120 y @F9 @sf
(2.2.4.2.2)52 b(Characteristics)14 b(of)i(\015oating)h(t)o(yp)q(es)e @F8 @sf
(<float.h>)44 b @F14 @sf(The)14 b(c)o(haracterization)-1652 57 y(of)j
(\015oating)f(p)q(oin)o(t)h(follo)n(ws,)f(with)g(minor)g(c)o(hanges,)h
(that)g(of)f(the)h(F)o(OR)l(TRAN)h(standardiza-)-1651 56 y(tion)e
(committee)f(\(X3J3\).)p -16 w @F22 @sf(1)24 16 y @F14 @sf(The)i
(Committee)e(c)o(hose)h(to)g(follo)n(w)f(the)h(F)o(OR)l(TRAN)h(mo)q(del)g
(in)-1651 57 y(some)g(part)g(out)f(of)h(a)g(concern)g(for)g(F)o(OR)l
(TRAN-to-C)g(translatio)o(n,)f(and)h(in)g(large)f(part)h(out)-1651 56 y
(of)h(deference)h(to)f(the)g(F)o(OR)l(TRAN)h(committee's)d(greater)h(exp)q
(erience)i(with)f(\014ne)g(p)q(oin)o(ts)g(of)-1651 56 y(\015oating)e(p)q
(oin)o(t)g(usage.)25 b(Note)16 b(that)g(the)h(\015oating)f(p)q(oin)o(t)g
(mo)q(del)h(adopted)f(p)q(ermits)h(all)f(com-)-1651 57 y(mon)c(represen)o
(tations,)g(including)f(sign-magnitude)h(and)g(t)o(w)o(os-complemen)o(t,)o 
12 x(but)g(precludes)-1650 56 y(a)j(logarithmic)e(implemen)o(tation.)-531 
57 y(Single)i(precision)g(\(32-bit\))e(\015oating)h(p)q(oin)o(t)h(is)g
(considered)g(adequate)g(to)g(supp)q(ort)g(a)g(con-)-1650 56 y(forming)f
(C)g(implemen)o(tation.)k(Th)o(us)d(the)f(minim)o(um)g(maxima)g
(constraining)f(\015oating)g(t)o(yp)q(es)-1650 57 y(are)i(extremely)g(p)q
(ermissiv)o(e.)-435 56 y(The)22 b(Committee)e(has)i(also)f(endea)o(v)o
(ored)h(to)f(accommo)q(date)g(the)h(IEEE)g(754)e(\015oating)-1651 57 y(p)q
(oin)o(t)13 b(standard)f(b)o(y)h(not)g(adopting)f(an)o(y)g(constrain)o(ts)f
(on)i(\015oating)f(p)q(oin)o(t)g(whic)o(h)h(are)g(con)o(trary)-1652 56 y
(to)i(this)g(standard.)-262 56 y(The)j(term)f @F8 @sf(FLT)s 14 -2 z 14 x
(MANT)s 14 -2 z 13 x(DIG)g @F14 @sf(stands)h(for)f(\\\015oat)f(man)o
(tissa)g(digits.")26 b(The)17 b(Standard)h(no)o(w)-1651 57 y(uses)e(the)f
(more)g(precise)g(term)g @F11 @sf(signi\014c)n(an)o(d)f @F14 @sf(rather)h
(than)g @F11 @sf(mantissa)p @F14 @sf(.)-1203 803 y 660 -2 z 52 27 a @F23 @sf
(1)3 16 y @F20 @sf(See)e(X3J3)g(w)o(orking)g(do)q(cumen)o(t)h(S8-112.)-793 
124 y
18 @eop1

19 @bop0
@F1 @sf
[<
0007FF8000003FFFF00001FFFFFE0003FFFFFF0007FC03FFC01FE000FFE01F80007FF03FC0
003FF87FE0003FFC7FF0003FFCFFF0001FFEFFF8001FFEFFF8001FFEFFF8001FFFFFF8001F
FF7FF0001FFF7FF0001FFF3FE0001FFF1FC0001FFF0200001FFF0000001FFE0000001FFE00
00001FFC0000003FFC0000003FF80000003FF00000007FE0000000FF80000003FE00000FFF
F800000FFF8000000FFFC00000001FF000000007FC00000003FE00000001FF00000001FF80
000000FFC0000000FFE003F0007FF007F8007FF00FFC007FF01FFE007FF81FFE007FF81FFE
007FF81FFE007FF81FFE007FF81FFC007FF80FF8007FF00FF0007FF00780007FE003C000FF
C001F000FF8000FE03FF00007FFFFE00001FFFF0000003FF8000>
. 40 57 -4 55 50] 51 @dc
@F2 @sf
[<
FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFF
FFFFC0001FFFC0007FFFE0001FFFC0000FFFE0001FFFC00003FFE0001FFFC00000FFE0001F
FFC000007FE0001FFFC000003FE0001FFFC000001FE0001FFFC000001FE0001FFFC000000F
E0001FFFC0000007F0001FFFC0000007F0001FFFC0000003F0001FFFC0000003F0001FFFC0
000003F0001FFFC0000001F0001FFFC0000001F0001FFFC0000001F0001FFFC0000001F000
1FFFC0000001F0001FFFC0000000F8001FFFC0000000F8001FFFC0000000F8001FFFC00000
00F8001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFF
C000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000
001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000
000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001F
FFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC0000000
00001FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC0
00000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC00000000000
1FFFC000000000001FFFC000000000001FFFC000000000001FFFC000000000001FFFC00000
0000001FFFC000000000FFFFFFFFFF000000FFFFFFFFFF000000FFFFFFFFFF000000FFFFFF
FFFF000000FFFFFFFFFF000000>
. 61 71 -4 70 71] 76 @dc
[<
FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC0
0007FFFFFFFF80FFFFFFC00007FFFFFFFF80007FC000000001FFFC0000001F0000000003FF
FC0000001F8000000003FFFC0000000F8000000003FFF80000000FC000000007FFF8000000
07C000000007FFF000000007C00000000FFFF000000007E00000000FFFF000000003E00000
000FFFE000000003F00000001FFFE000000001F00000001FFFC000000001F00000003FFFC0
00000001F80000003FFFC000000000F80000003FFF8000000000FC0000007FFF8000000000
7FFFFFFFFFFF00000000007FFFFFFFFFFF00000000007FFFFFFFFFFF00000000003FFFFFFF
FFFE00000000003FFFFFFFFFFE00000000001F000001FFFC00000000001F800003FFFC0000
0000000F800003FFF800000000000F800007FFF800000000000FC00007FFF8000000000007
C00007FFF0000000000007E0000FFFF0000000000003E0000FFFE0000000000003E0001FFF
E0000000000003F0001FFFE0000000000001F0001FFFC0000000000001F8003FFFC0000000
000000F8003FFF80000000000000F8007FFF80000000000000FC007FFF800000000000007C
007FFF000000000000007E00FFFF000000000000003E00FFFE000000000000003F01FFFE00
0000000000001F01FFFC000000000000001F03FFFC000000000000001F83FFFC0000000000
00000F83FFF8000000000000000FC7FFF80000000000000007C7FFF00000000000000007CF
FFF00000000000000007EFFFF00000000000000003EFFFE00000000000000003FFFFE00000
000000000001FFFFC00000000000000001FFFFC00000000000000001FFFFC0000000000000
0000FFFF800000000000000000FFFF8000000000000000007FFF0000000000000000007FFF
0000000000000000007FFF0000000000000000003FFE0000000000000000003FFE00000000
00000000001FFC0000000000000000001FFC0000000000000000000FF80000000000000000
000FF80000000000000000000FF800000000000000000007F000000000000000000007F000
000000000000000003E00000000000>
. 81 72 -4 71 90] 65 @dc
[<
000000003FFE000000000000000FFFFFE0000E000000007FFFFFF8003E00000003FFFFFFFE
00FE0000000FFFFFFFFF83FE0000003FFFFC00FFC7FE000000FFFF80001FFFFE000001FFFC
000007FFFE000007FFF0000003FFFE00000FFFE0000001FFFE00001FFF80000000FFFE0000
3FFF00000000FFFE00007FFE00000000FFFE0000FFFC00000000FFFE0001FFF800000000FF
FE0003FFF800000000FFFE0003FFF000000000FFFE0007FFE000000000FFFE0007FFE00000
0000FFFE000FFFC000000000FFFE000FFFC000000000FFFE001FFFC000000000FFFE001FFF
8000000000FFFE003FFF8000000000FFFE003FFF8000000000FFFE003FFF8000000000FFFE
007FFF8000007FFFFFFFFE7FFF8000007FFFFFFFFE7FFF0000007FFFFFFFFE7FFF0000007F
FFFFFFFEFFFF0000007FFFFFFFFEFFFF0000000000000000FFFF0000000000000000FFFF00
00000000000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000
FFFF0000000000000000FFFF0000000000000000FFFF0000000000000000FFFF0000000000
000000FFFF0000000000000000FFFF00000000000000007FFF00000000000000007FFF0000
0000000000007FFF0000000000003E007FFF8000000000003E003FFF8000000000003E003F
FF8000000000003E003FFF8000000000007E001FFF8000000000007E001FFFC00000000000
7E000FFFC000000000007E000FFFC00000000000FE0007FFE00000000000FE0007FFE00000
000001FE0003FFF00000000001FE0003FFF00000000003FE0001FFF80000000007FE0000FF
FC0000000007FE00007FFE000000000FFE00003FFF000000001FFE00001FFF800000003FFE
00000FFFC00000007FFE000007FFF0000001FFFE000001FFFC000003FFFE000000FFFF8000
0FF7FE0000003FFFF800FFC3FE0000000FFFFFFFFF81FE00000003FFFFFFFE00FE00000000
7FFFFFF8003E000000000FFFFFC0001E00000000003FFE00000E00>
. 79 73 -7 71 93] 71 @dc
@F4 @sf
[<
FFFFFFFF00FFFFFFFF00FFFFFFFF0003FC01FF0003FC007F8003FC001F8003FC000F8003FC
000F8003FC00078003FC00078003FC00038003FC00038003FC0003C003FC0001C003FC0001
C003FC0001C003FC0001C003FC00000003FC00000003FC00000003FC00000003FC00000003
FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
03FC000000FFFFFC0000FFFFFC0000FFFFFC0000>
. 34 41 -3 40 41] 76 @dc
[<
FFF01FFF80FFF01FFF80FFF01FFF8003C007F00001C00FE00001E01FE00000F01FC0000078
3F8000003C7F0000001EFE0000001FFE0000000FFC00000007F800000007F00000000FF000
00000FF00000001FF00000003FF80000007F3C000000FF1E000000FE0F000001FC07800003
F807800007F003C000FFFC0FFF00FFFC0FFF00FFFC0FFF00>
. 33 27 -1 26 36] 120 @dc
@F6 @sf
[<
FFFF83FFFCFFFF83FFFC07F0003FC007F0007F8007F0007F0007F000FF0007F001FE0007F0
01FC0007F003F80007F007F80007F007F00007F00FE00007F01FE00007F01FC00007F83F80
0007FE7F800007F77F000007F3FE000007F1FE000007F0FC000007F038000007F018000007
F00E000007F007000007F003800007F001C00007F000E00007F000300007F000180007F000
0E0007F000070007F0000380FFFF803FFCFFFF803FFC>
. 38 34 -2 33 44] 75 @dc
[<
001800C000003800E000003C01E000007C01F000007E03F000007E03F00000FE03D80000FB
07D80001FB079C0001F38F8C0001F18F0C0003E18F060003E0DF060007E0DE070007C0DE03
0007C07E03000F807C01800F807C01800F807801801F007800C0FFE7FF07F8FFE7FF07F8>
. 37 22 -1 21 40] 119 @dc
@F6 @sf
[<
FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
0003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE0>
. 19 34 -1 33 21] 73 @dc
[<
7FF0FFE07FF0FFE00F801F000F801F000F801F000F801F000F801F000F801F000F801F000F
801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F80
1F000F801F00FFFFFF00FFFFFF000F8000000F8000000F8000000F8000000F800C000F801E
000F803F000F803F0007C03F0003E01F0001F80E00007FFC00000FF000>
. 27 35 -1 34 31] 12 @dc

19 @eop0

0 0 19 @bop1 112 507 a @F1 @sf(Section)32 b(3)-398 208 y @F2 @sf(LANGUA)m
(GE)-696 223 y @F14 @sf(While)19 b(more)f(formal)f(metho)q(ds)i(of)f
(language)g(de\014nition)g(w)o(ere)h(explored,)g(the)g(Committee)-1652 57 y
(decided)d(early)e(on)h(to)f(emplo)o(y)g(the)h(st)o(yle)e(of)i(the)f(Base)h
(Do)q(cumen)o(t:)k(Bac)o(kus-Naur)c(F)l(orm)f(for)-1651 56 y(the)j(syn)o
(tax)f(and)h(prose)g(for)f(the)g(constrain)o(ts)f(and)i(seman)o(tics.)24 b
(An)o(ything)16 b(more)g(am)o(bitious)-1652 57 y(w)o(as)f(considered)h(to)f
(b)q(e)h(lik)o(ely)e(to)h(dela)o(y)f(the)i(Standard,)f(and)g(to)g(mak)o(e)g
(it)g(less)g(accessible)g(to)-1651 56 y(its)g(audience.)-248 147 y @F4 @sf
(3.1)70 b(Lexical)23 b(Elemen)n(ts)-666 102 y @F14 @sf(The)13 b(Standard)f
(endea)o(v)o(ors)g(to)g(bring)g(prepro)q(cessing)h(more)f(closely)f(in)o
(to)h(line)g(with)f(the)i(tok)o(en)-1651 57 y(orien)o(tation)f(of)g(the)h
(language)g(prop)q(er.)19 b(T)l(o)13 b(do)g(so)g(requires)f(that)h(at)f
(least)g(some)h(information)-1652 56 y(ab)q(out)h(white)e(space)i(b)q(e)g
(retained)f(through)g(the)g(early)f(phases)i(of)f(translati)o(on)f(\(see)h 
@F12 @sf(x)p @F14 @sf(2.1.1.2\))o(.)-1652 56 y(It)22 b(also)f(requires)h
(that)f(an)h(in)o(v)o(erse)f(mapping)g(b)q(e)i(de\014ned)g(from)e(tok)o
(ens)g(bac)o(k)h(to)f(source)-1650 57 y(c)o(haracters)15 b(\(see)g @F12 @sf
(x)p @F14 @sf(3.8.3\).)-454 125 y @F6 @sf(3.1.1)56 b(Keyw)n(ords)-414 87 y 
@F14 @sf(Sev)o(eral)15 b(k)o(eyw)o(ords)g(ha)o(v)o(e)f(b)q(een)j(added:)j 
@F8 @sf(const)p @F14 @sf(,)14 b @F8 @sf(enum)p @F14 @sf(,)g @F8 @sf
(signed)p @F14 @sf(,)g @F8 @sf(void)p @F14 @sf(,)h(and)g @F8 @sf(volatile)p 
@F14 @sf(.)-1505 57 y(As)f(m)o(uc)o(h)h(as)f(p)q(ossible,)g(ho)o(w)o(ev)o
(er,)f(new)i(features)f(ha)o(v)o(e)g(b)q(een)h(added)g(b)o(y)g(o)o(v)o
(erloa)o(ding)e(ex-)-1650 56 y(isting)f(k)o(eyw)o(ords,)g(as,)g(for)g
(example,)h @F8 @sf(long)23 b(double)12 b @F14 @sf(instead)g(of)h @F8 @sf
(extended)p @F14 @sf(.)k(It)c(is)f(recognized)-1650 57 y(that)k(eac)o(h)h
(added)g(k)o(eyw)o(ord)e(will)g(require)h(some)g(existing)g(co)q(de)h
(that)e(used)i(it)f(as)g(an)g(iden)o(ti-)-1651 56 y(\014er)h(to)f(b)q(e)i
(rewritten.)23 b(No)16 b(meaningful)g(programs)g(are)g(kno)o(wn)g(to)g(b)q
(e)i(quietly)e(c)o(hanged)g(b)o(y)-1650 57 y(adding)f(the)h(new)f(k)o(eyw)o
(ords.)-446 57 y(The)g(k)o(eyw)o(ords)f @F8 @sf(entry)p @F14 @sf(,)f @F8 @sf
(fortran)p @F14 @sf(,)h(and)h @F8 @sf(asm)f @F14 @sf(ha)o(v)o(e)g(not)g(b)q
(een)i(included)f(since)g(they)g(w)o(ere)-1651 56 y(either)j(nev)o(er)g
(used,)h(or)e(are)h(not)g(p)q(ortable.)27 b(Uses)18 b(of)g @F8 @sf
(fortran)f @F14 @sf(and)h @F8 @sf(asm)f @F14 @sf(as)h(k)o(eyw)o(ords)f
(are)-1651 57 y(noted)f(as)f @F11 @sf(c)n(ommon)h(extensions)p @F14 @sf(.)o 
-581 125 a @F6 @sf(3.1.2)56 b(Iden)n(ti\014ers)-419 87 y @F14 @sf(While)
14 b(an)g(implemen)o(tatio)o(n)f(is)g(not)h(obliged)f(to)g(remem)o(b)q(er)i
(more)e(than)h(the)g(\014rst)f(31)h(c)o(harac-)-1651 56 y(ters)f(of)g(an)g
(iden)o(ti\014er)g(for)f(the)i(purp)q(ose)f(of)g(name)g(matc)o(hing,)g
(the)g(programmer)f(is)g(e\013ectiv)o(ely)-1651 57 y(prohibited)k(from)f
(in)o(ten)o(tional)o(ly)f(creating)h(t)o(w)o(o)g(di\013eren)o(t)g(iden)o
(ti\014ers)g(that)g(are)g(the)h(same)g(in)-848 124 y(19)-961 b
19 @eop1

20 @bop0
@F10 @sf
[<
07E000187800201C00400E00800F00F00780F807C0F807C07807C03007C00007C00003C000
07C0000780000700000E0000F800000E000007000003800003C00001E00001E00F01F00F01
F00F00F00700F00400F00201E00183C0007F00>
. 20 31 -3 29 23] 51 @dc
[<
FFFFFC0007807C0007801E0003C0060003C0060003C0020003C0030003C0010003C0010001
E0010001E0008001E0000001E0000001E0000001E0000000F0000000F0000000F0000000F0
000000F0000000F00000007800000078000000780000007800000078000000780000003C00
00003C0000007E000007FFF000>
. 25 31 -2 30 28] 76 @dc
[<
FF807FFC3E0007C00C0007C0040007800400078002000780020007800100078001000F8000
800F0000FFFF0000400F0000400F0000200F0000201E0000101E0000101E0000081E000008
1E0000043E0000063C0000023C0000033C0000013C000001BC000000FC0000007800000078
0000003800000038000000180000001000>
. 30 32 -2 31 34] 65 @dc
[<
003F800001E060800380118007000B800E0007C01C0003C03C0003C03C0003C0780003C078
0003C0780001E0780001E0F80003E0F8007FFCF8000000F80000007C0000007C0000007C00
00007C0000003C0000003E0000101E0000181F0000180F000018078000180380001801C000
3800E0003C0070007C003C009C000F030C0001FC04>
. 30 33 -5 31 36] 71 @dc
@F11 @sf
[<
1F800020E000403800401C00401E00800F00F00F0078078078078030078000078000078000
0780000700000600001C0000FE000003000001C00000E00380600460700420700410380420
380420380200380100300080700060E0001F80>
. 21 31 -4 29 23] 51 @dc

20 @eop0

0 0 20 @bop1 112 50 a @F14 @sf(20)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F14 @sf(the)15 b(\014rst)e(31)h(c)o(haracters.)k
(Implemen)o(tations)13 b(ma)o(y)g(therefore)h(store)f(the)h(full)g(iden)o
(ti\014er;)f(they)-1650 57 y(are)i(not)g(obliged)g(to)f(truncate)h(to)g
(31.)-595 56 y(The)e(decision)f(to)g(extend)h(signi\014cance)f(to)g(31)g
(c)o(haracters)g(for)g(in)o(ternal)f(names)i(w)o(as)e(made)-1650 57 y
(with)g(little)f(opp)q(osition,)h(but)h(the)f(decision)h(to)e(retain)h
(the)h(old)f(six-c)o(haracter)f(case-insensitiv)o(e)-1651 56 y
(restriction)15 b(on)h(signi\014cance)h(of)e(external)h(names)g(w)o(as)g
(most)f(painful.)23 b(While)16 b(strong)f(sen)o(ti-)-1651 57 y(men)o(t)e
(w)o(as)e(expressed)i(for)f(making)f(C)h(\\righ)o(t")f(b)o(y)h(requiring)g
(longer)f(names)i(ev)o(erywhere,)f(the)-1650 56 y(Committee)g(recognized)h
(that)f(the)h(language)f(m)o(ust,)g(for)g(y)o(ears)g(to)g(come,)h(co)q
(exist)g(with)f(other)-1651 57 y(languages)17 b(and)h(with)e(older)h
(assem)o(blers)g(and)g(link)o(ers.)26 b(Rather)17 b(than)g(undermine)h
(supp)q(ort)-1650 56 y(for)d(the)g(Standard,)g(the)g(sev)o(ere)h
(restrictio)o(ns)e(ha)o(v)o(e)h(b)q(een)h(retained.)-1122 57 y(The)21 b
(Committee)e(has)i(decided)g(to)f(lab)q(el)g(as)g @F11 @sf(obsolesc)n(ent)j 
@F14 @sf(the)e(practice)f(of)g(pro)o(viding)-1651 56 y(di\013eren)o(t)12 b
(iden)o(ti\014er)g(signi\014cance)h(for)f(in)o(ternal)f(and)i(external)f
(iden)o(tifers,)g(thereb)o(y)g(signalling)-1652 57 y(its)21 b(in)o(ten)o
(t)f(that)g(some)h(future)g(v)o(ersion)f(of)h(the)g(C)g(Standard)f
(require)h(31-c)o(haracter)f(case-)-1650 56 y(sensitiv)o(e)14 b(external)f
(name)i(signi\014cance,)f(and)g(thereb)o(y)g(encouraging)g(new)g(implemen)o
(tations)-1652 57 y(to)h(supp)q(ort)g(suc)o(h)h(signi\014cance.)-494 56 y
(Three)21 b(solutions)f(to)h(the)g(external)f(iden)o(ti\014er)h
(length/case)f(problem)h(w)o(ere)g(explored,)-1651 57 y(eac)o(h)16 b(with)e
(its)h(o)o(wn)f(set)h(of)g(problems:)-624 108 y(1.)22 b @F11 @sf(L)n(ab)n
(el)16 b(any)i(C)f(implementation)g(without)i(at)f(le)n(ast)f(31-char)n
(acter,)i(c)n(ase-sensitive)d(sig-)-1537 56 y(ni\014c)n(anc)n(e)f(in)i
(external)g(identi\014ers)f(as)h(non-standar)n(d.)47 b @F14 @sf(This)16 b
(is)f(unacceptable)i(since)-1536 56 y(the)c(whole)f(reason)h(for)f(a)g
(standard)g(is)h(p)q(ortabilit)o -1 x(y)l(,)f(and)h(man)o(y)f(systems)g
(to)q(da)o(y)g(simply)-1537 57 y(do)j(not)g(pro)o(vide)g(suc)o(h)g(a)g
(name)g(space.)-744 95 y(2.)22 b @F11 @sf(R)n(e)n(quir)n(e)14 b(a)h(C)f
(implementation)g(which)h(c)n(annot)f(pr)n(ovide)g(31-char)n(acter,)i(c)n
(ase-sensitive)-1538 56 y(signi\014c)n(an)o(c)n(e)g(to)i(map)h(long)e
(identi\014ers)g(into)g(the)h(identi\014er)f(name)h(sp)n(ac)n(e)f(that)h
(it)g(c)n(an)-1537 57 y(pr)n(ovide.)58 b @F14 @sf(This)18 b(option)f(quic)o
(kly)h(b)q(ecomes)h(v)o(ery)e(complex)h(for)g(large,)f(m)o(ulti-source)-1537 
56 y(programs,)11 b(since)h(a)g(program-wide)f(database)h(has)g(to)f(b)q
(e)i(main)o(tained)e(for)g(all)g(mo)q(dules)-1536 57 y(to)i(a)o(v)o(oid)g
(giving)f(t)o(w)o(o)h(di\013eren)o(t)g(iden)o(ti\014ers)g(the)h(same)f
(actual)g(external)g(name.)20 b(It)13 b(also)-1537 56 y(reduces)i(the)f
(usefulness)g(of)g(source)g(co)q(de)g(debuggers)h(and)f(cross)f(reference)i
(programs,)-1538 57 y(whic)o(h)21 b(generally)f(w)o(ork)g(with)h(the)g
(short)f(mapp)q(ed)i(names,)g(since)f(the)h(source-co)q(de)-1536 56 y
(name)g(used)h(b)o(y)f(the)g(programmer)f(w)o(ould)g(lik)o(ely)g(b)q(ear)h
(little)f(resem)o(blance)h(to)f(the)-1536 56 y(name)15 b(actually)f
(generated.)-557 95 y(3.)22 b @F11 @sf(R)n(e)n(quir)n(e)14 b(a)h(C)f
(implementation)g(which)h(c)n(annot)f(pr)n(ovide)g(31-char)n(acter,)i(c)n
(ase-sensitive)-1538 57 y(signi\014c)n(an)o(c)n(e)22 b(to)i(r)n(ewrite)f
(the)h(linker,)g(assembler,)h(debugger,)g(any)f(other)g(language)-1537 56 y
(tr)n(anslators)d(which)i(use)f(the)g(linker,)h(etc.)78 b @F14 @sf(This)
21 b(is)g(not)g(alw)o(a)o(ys)f(practical,)h(since)-1536 57 y(the)d(C)g
(implemen)o(tor)f(migh)o(t)g(not)g(b)q(e)i(pro)o(viding)e(the)h(link)o
(er,)g(etc.)28 b(Indeed,)20 b(on)e(some)-1537 56 y(systems)13 b(only)g
(the)h(man)o(ufacturer's)e(link)o(er)h(can)h(b)q(e)g(used,)g(either)g(b)q
(ecause)g(the)g(format)-1538 57 y(of)d(the)h(resulting)e(program)g(\014le)i
(is)f(not)g(do)q(cumen)o(ted,)h(or)f(b)q(ecause)i(the)e(abilit)o(y)f(to)h
(create)-1537 56 y(program)j(\014les)h(is)g(restricted)g(to)f(secure)i
(programs.)-956 108 y(Because)f(of)g(the)f(decision)h(to)f(restrict)f
(signi\014cance)i(of)f(external)g(iden)o(ti\014ers)g(to)g(six)g(case-)-1650 
56 y(insensitiv)o(e)20 b(c)o(haracters,)g(C)g(programmers)e(are)i(faced)h
(with)e(these)h(c)o(hoices)g(when)h(writing)-1652 57 y(p)q(ortable)15 b
(programs:)-324 108 y(1.)22 b(Mak)o(e)16 b(sure)g(that)g(external)g(iden)o
(ti\014ers)g(are)g(unique)h(within)f(the)h(\014rst)f(six)g(c)o(haracters,)
-1764 124 y
20 @eop1

21 @bop0
@F10 @sf
[<
FF07FC3E03E00C01C0060380020380010700008700004E00002E00001C00003C00003C0000
760000730000E18000E08001C04001C06003C0781FF0FF>
. 24 20 -1 19 24] 120 @dc
@F8 @sf
[<
7FFF00FFFF80FFFF807FFF00>
. 17 4 -3 -1 24] 95 @dc
[<
0707000F8F800F8F800D8D800DDD800DDD800DDD801CD9C01CD9C01CF9C01CF9C01C71C01C
01C01C01C03800E03800E03800E0FF8FF8FF8FF8FF8FF8>
. 21 20 -1 19 24] 119 @dc
@F9 @sf
[<
3FF9FFC03FF9FFC007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007
C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E00FFFF
FE00FFFFFE0007C1FE0007C0000007C0000007C0000007C0380007C07C0007C07C0003E07C
0001E07C0000F81C00007FF800000FE000>
. 26 32 0 31 29] 12 @dc

21 @eop0

0 0 21 @bop1 112 50 a @F10 @sf(3.1.)30 b(Lexical)14 b(Elemen)o(ts)1166 b 
@F14 @sf(21)-1537 145 y(and)13 b(use)g(only)g(one)g(case)g(within)f(the)g
(name.)20 b(A)12 b(unique)i(six-c)o(haracter)e(pre\014x)h(could)g(b)q(e)
-1536 57 y(used,)i(follo)o(w)n(ed)f(b)o(y)g(an)g(underscore,)h(follo)o(w)o
(ed)e(b)o(y)h(a)g(longer,)g(more)g(descriptiv)o(e)g(name:)-1346 99 y @F8 @sf
(extern)23 b(int)h(a_xvz_real_l)o(ong_nam)o(e;)-765 56 y(extern)f(int)h
(a_rwt_real_l)o(ong_nam)o(e2)p(;)-1038 100 y @F14 @sf(2.)e(Use)17 b(the)f
(pre\014x)h(metho)q(d)f(describ)q(ed)i(ab)q(o)o(v)o(e,)e(and)g(then)h(use)g 
@F8 @sf(#define)e @F14 @sf(statemen)o(ts)g(to)-1537 56 y(pro)o(vide)g(a)g
(longer,)f(more)h(descriptiv)o(e)f(name)h(for)g(the)g(unique)h(name,)f
(suc)o(h)g(as:)-1206 108 y @F8 @sf(#define)23 b(real_long_name)46 b
(a_xvz_real_lo)o(ng_name)o -1051 56 a(#define)23 b(real_long_name2)o 23 x
(a_rwt_real_lo)o(ng_name)o(2)-1266 108 y @F14 @sf(Note)14 b(that)g(o)o(v)o
(eruse)h(of)f(this)g(tec)o(hnique)h(migh)o(t)f(result)g(in)g(exceeding)i
(the)f(limit)e(on)h(the)-1536 57 y(n)o(um)o(b)q(er)i(of)e(allo)o(w)o(ed)g 
@F8 @sf(#define)g @F14 @sf(macros,)g(or)h(some)g(other)g(implemen)o(tatio)o
(n)f(limit.)-1507 89 y(3.)22 b(Use)16 b(longer)e(and/or)h(m)o(ulti-case)f
(external)h(names,)g(and)g(limit)f(the)h(p)q(ortabilit)o(y)e(of)i(the)-1536 
56 y(programs)f(to)h(systems)f(that)h(supp)q(ort)g(the)g(longer)g(names.)
-1101 90 y(4.)22 b(Declare)g(all)f(exp)q(orted)h(items)f(\(or)h(p)q(oin)o
(ters)f(thereto\))g(in)h(a)g(single)f(data)h(structure)-1537 56 y(and)16 b
(exp)q(ort)g(that)g(structure.)22 b(The)16 b(tec)o(hnique)h(can)f(reduce)h
(the)f(n)o(um)o(b)q(er)g(of)g(external)-1537 57 y(iden)o(ti\014ers)d(to)g
(one)h(p)q(er)f(translation)f(unit;)h(mem)o(b)q(er)h(names)f(within)g(the)h
(structure)f(are)-1537 56 y(in)o(ternal)j(iden)o(ti\014ers,)h(hence)i(can)e
(ha)o(v)o(e)g(full)g(signi\014cance.)26 b(The)18 b(principal)e(dra)o(wbac)o
(k)-1537 57 y(of)h(this)f(tec)o(hnique)h(is)f(that)g(functions)h(can)g
(only)f(b)q(e)i(exp)q(orted)f(b)o(y)g(reference,)g(not)f(b)o(y)-1536 56 y
(name;)e(on)f(man)o(y)f(systems)h(this)f(en)o(tails)g(a)h(run-time)g(o)o
(v)o(erhead)g(on)g(eac)o(h)g(function)g(call.)-992 91 y @F7 @sf(QUIET)i
(CHANGE)-876 73 y @F14 @sf(A)i(program)e(that)g(dep)q(end)q(s)i(up)q(on)g
(in)o(ternal)e(iden)o(ti\014ers)h(matc)o(hing)g(only)g(in)g(the)-1423 57 y
(\014rst)h(\(sa)o(y\))f(eigh)o(t)g(c)o(haracters)g(ma)o(y)h(c)o(hange)g
(to)f(one)h(with)g(distinct)f(ob)s(jects)g(for)-1423 56 y(eac)o(h)f(v)m
(arian)o(t)g(sp)q(elling)f(of)h(the)g(iden)o(ti\014er.)-855 118 y @F9 @sf
(3.1.2.1)52 b(Scop)q(es)18 b(of)f(iden)o(ti\014ers)-658 86 y @F14 @sf(The)i
(Standard)e(has)h(separated)g(from)f(the)h(o)o(v)o(erloaded)f(k)o(eyw)o
(ords)g(for)g(storage)g(classes)g(the)-1650 56 y(v)m(arious)f(concepts)g
(of)f @F11 @sf(sc)n(op)n(e)p @F14 @sf(,)g @F11 @sf(linkage)p @F14 @sf(,)g 
@F11 @sf(name)h(sp)n(ac)n(e)p @F14 @sf(,)f(and)h @F11 @sf(stor)n(age)h
(dur)n(ation)p @F14 @sf(.)22 b(\(See)16 b @F12 @sf(x)p @F14 @sf(3.1.2.2)o
(,)-1652 57 y @F12 @sf(x)q @F14 @sf(3.1.2.)o(3,)d @F12 @sf(x)p @F14 @sf
(3.1.2.4.)o(\))19 b(This)c(has)g(traditi)o(onall)o(y)f(b)q(een)i(a)f(ma)s
(jor)f(area)h(of)f(confusion.)-1379 56 y(One)i(source)f(of)f(dispute)h(w)o
(as)f(whether)h(iden)o(ti\014ers)g(with)f(external)g(link)m(age)h(should)g
(ha)o(v)o(e)-1651 57 y(\014le)k(scop)q(e)g(ev)o(en)f(when)h(in)o(tro)q
(duced)f(within)g(a)g(blo)q(c)o(k.)28 b(The)19 b(Base)f(Do)q(cumen)o(t)g
(is)g(v)m(ague)g(on)-1650 56 y(this)g(p)q(oin)o(t,)g(and)g(has)g(b)q(een)h
(in)o(terpreted)f(di\013eren)o(tly)e(b)o(y)i(di\013eren)o(t)g(implemen)o
(tati)o(ons.)27 b(F)l(or)-1651 57 y(example,)12 b(the)f(follo)o(wi)o(ng)f
(fragmen)o(t)g(w)o(ould)g(b)q(e)i(v)m(alid)e(in)h(the)g(\014le)g(scop)q(e)h
(sc)o(heme,)g(while)e(in)o(v)m(alid)-1651 56 y(in)16 b(the)f(blo)q(c)o(k)g
(scop)q(e)g(sc)o(heme:)-336 83 y @F8 @sf(typedef)23 b(struct)g(data)h
(d_struct)e(;)-716 91 y(first\(\){)-1 57 y(extern)h(d_struct)g(func\(\);)
-550 56 y(/*)h(...)47 b(*/)-430 57 y(})1184 124 y @F15 @sf(RA)m(TIONALE)
-1763 b
21 @eop1

22 @bop0

22 @eop0
0 0 22 @bop1 112 50 a @F14 @sf(22)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1460 145 y @F8 @sf(second\(\){)-25 57 y(d_struct)23 b(n)h(=)g
(func\(\);)-670 56 y(})-215 130 y @F14 @sf(While)11 b(it)f(w)o(as)g
(generally)g(agreed)h(that)f(it)g(is)g(p)q(o)q(or)h(practice)g(to)f(tak)o
(e)g(adv)m(an)o(tage)h(of)f(an)h(external)-1651 57 y(declaration)19 b
(once)h(it)f(had)h(gone)g(out)f(of)h(scop)q(e,)h(some)e(argued)h(that)f(a)g
(translator)f(had)i(to)-1651 56 y(remem)o(b)q(er)d(the)f(declaration)f
(for)g(c)o(hec)o(king)i(an)o(yw)o(a)o(y)l(,)d(so)i(wh)o(y)g(not)g(ac)o
(kno)o(wledge)f(this?)23 b(The)-1650 57 y(compromise)13 b(adopted)g(w)o
(as)f(to)h(decree)h(essen)o(tially)d(that)h(blo)q(c)o(k)h(scop)q(e)h
(rules)f(apply)l(,)g(but)g(that)-1651 56 y(a)18 b(conforming)f(implemen)o
(tation)f(need)j(not)f(diagnose)f(a)h(failure)f(to)g(redeclare)h(an)g
(external)-1651 57 y(iden)o(ti\014er)d(that)g(had)g(gone)g(out)g(of)g
(scop)q(e)g(\()p @F11 @sf(unde\014ne)n(d)g(b)n(ehavior)p @F14 @sf(\).)-494 
130 y @F7 @sf(QUIET)g(CHANGE)-876 85 y @F14 @sf(A)k(program)f(relying)g
(on)h(\014le)g(scop)q(e)h(rules)f(ma)o(y)f(b)q(e)i(v)m(alid)f(under)g(blo)q
(c)o(k)g(scop)q(e)-1422 56 y(rules)c(but)g(b)q(eha)o(v)o(e)h(di\013eren)o
(tly)e(|)i(for)e(instance,)h(if)f @F8 @sf(d)s 14 -2 z 14 x(struct)h @F14 @sf
(w)o(ere)g(de\014ned)h(as)-1423 57 y(t)o(yp)q(e)f @F8 @sf(float)g @F14 @sf
(rather)f(than)i @F8 @sf(struct)23 b(data)14 b @F14 @sf(in)h(the)g
(example)h(ab)q(o)o(v)o(e.)-1308 199 y(Although)e(the)g(scop)q(e)h(of)f
(an)g(iden)o(ti\014er)f(in)h(a)g(function)g(protot)o(yp)q(e)g(b)q(egins)g
(at)f(its)h(declaration)-1652 57 y(and)h(ends)h(at)e(the)h(end)g(of)g
(that)f(function's)g(declarator,)f(this)h(scop)q(e)i(is)e(of)g(course)h
(ignored)f(b)o(y)-1650 56 y(the)j(prepro)q(cessor.)25 b(Th)o(us)17 b(an)g
(iden)o(ti\014er)f(in)h(a)f(protot)o(yp)q(e)g(ha)o(ving)g(the)h(same)g
(name)g(as)f(that)-1651 56 y(of)f(an)g(existing)g(macro)f(is)h(treated)f
(as)h(an)g(in)o(v)o(o)q(cation)f(of)h(that)f(macro.)19 b(F)l(or)c
(example:)-1332 118 y @F8 @sf(#define)23 b(status)g(23)-406 57 y(void)h
(exit\(int)e(status\);)-717 113 y @F14 @sf(generates)15 b(an)g(error,)g
(since)g(the)g(protot)o(yp)q(e)g(after)f(prepro)q(cessing)h(b)q(ecomes)-1149 
118 y @F8 @sf(void)24 b(exit\(int)e(23\);)-621 113 y @F14 @sf(P)o(erhaps)
15 b(more)g(surprising)g(is)f(what)h(happ)q(ens)h(if)f @F8 @sf(status)f 
@F14 @sf(is)h(de\014ned)-1031 118 y @F8 @sf(#define)23 b(status)g([])-597 
113 y @F14 @sf(Then)16 b(the)f(resulting)g(protot)o(yp)q(e)f(is)-433 118 y 
@F8 @sf(void)24 b(exit\(int)e([]\);)-621 113 y @F14 @sf(whic)o(h)16 b(is)e
(syn)o(tactically)f(correct)i(but)g(seman)o(tically)f(quite)h(di\013eren)o
(t)f(from)h(the)g(in)o(ten)o(t.)-1475 61 y(T)l(o)g(protect)g(an)g
(implemen)o(tati)o(on's)f(header)h(protot)o(yp)q(es)f(from)h(suc)o(h)g
(misin)o(terpretati)o(on,)-1652 57 y(the)d(implemen)o(tor)e(m)o(ust)h
(write)f(them)h(to)g(a)o(v)o(oid)f(these)i(surprises.)18 b(P)o(ossible)10 b
(solutions)g(include)-1650 56 y(not)k(using)f(iden)o(ti\014ers)g(in)h
(protot)o(yp)q(es,)f(or)g(using)g(names)h(\(suc)o(h)f(as)k 14 -2 z 17 x 
14 -2 z 14 x @F8 @sf(status)c @F14 @sf(or)j 14 -2 z 14 x @F8 @sf(Status)p 
@F14 @sf(\))d(in)-1651 57 y(the)j(reserv)o(ed)f(name)g(space.)-608 124 y
22 @eop1

23 @bop0
@F9 @sf
[<
FFC3FFFFC3FF1E00F81E01F01E01E01E03C01E07C01E0F801F0F001F9E001FFC001F7C001F
18001F0C001F07001F03801F00C01F00F01F01FE1F01FE1F00001F00001F00001F00001F00
001F00001F00001F00001F00001F0000FF0000FF0000>
. 24 32 -2 31 28] 107 @dc
@F9 @sf
[<
C00000E00000E000007000007000003800003800003800001C00001C00001C00000E00000E
000007000007000007000003800003800003800001C00001C00000E00000E00000E0000070
00007000003800003800003800001C00001C00001C00000E00000E00000700000700000700
0003800003800003800001C00001C00000E00000E0000060>
. 19 45 -3 33 26] 47 @dc

23 @eop0

0 0 23 @bop1 112 50 a @F10 @sf(3.1.)35 b(Lexical)14 b(Elemen)o(ts)1161 b 
@F14 @sf(23)-1651 145 y @F9 @sf(3.1.2.2)52 b(Link)m(ages)17 b(of)h(iden)o
(ti\014ers)o -700 86 a @F14 @sf(The)d(Standard)e(requires)h(that)f(the)h
(\014rst)g(declaration,)o 13 x(implicit)e(or)i(explicit,)f(of)g(an)h(iden)o
(ti\014er)-1651 56 y(sp)q(ecify)k(\(b)o(y)e(the)i(presence)g(or)e(absence)i
(of)e(the)h(k)o(eyw)o(ord)g @F8 @sf(static)p @F14 @sf(\))f(whether)h(the)g
(iden)o(ti\014er)-1651 57 y(has)g(in)o(ternal)f(or)h(external)g(link)m
(age.)25 b(This)16 b(requiremen)o(t)h(allo)o(ws)e(for)i(one-pass)g
(compilation)-1652 56 y(in)h(an)g(implemen)o(tation)f(whic)o(h)h(m)o(ust)f
(treat)g(in)o(ternal)g(link)m(age)h(items)f(di\013eren)o(tly)g(than)h(ex-)
-1650 57 y(ternal)d(link)m(age)f(items.)19 b(An)d(example)e(of)h(suc)o(h)g
(an)g(implemen)o(tation)e(is)i(one)g(whic)o(h)g(pro)q(duces)-1650 56 y(in)o
(termediate)d(assem)o(bler)h(co)q(de,)g(and)g(whic)o(h)g(therefore)g(m)o
(ust)g(construct)f(names)h(for)g(in)o(ternal)-1652 57 y(link)m(age)k
(items)g(to)g(circum)o(v)o(en)o(t)g(iden)o(ti\014er)g(length)g(and/or)g
(case)g(restrictions)f(in)h(the)h(target)-1652 56 y(assem)o(bler.)-134 57 y
(Existing)9 b(practice)i(in)f(this)g(area)g(is)g(inconsisten)o(t.)18 b
(Some)10 b(implemen)o(tations)f(ha)o(v)o(e)h(a)o(v)o(oided)-1651 56 y(the)i
(renaming)g(problem)f(simply)g(b)o(y)h(restricting)e(in)o(ternal)h(link)m
(age)h(names)f(b)o(y)h(the)g(same)g(rules)-1651 56 y(as)i(for)e(external)h
(link)m(age.)19 b(Others)14 b(ha)o(v)o(e)f(disallo)o(w)o -1 x(ed)g(a)g
(static)f(declaration)g(follo)o(w)o(ed)g(later)g(b)o(y)-1650 57 y(a)k
(de\014ning)h(instance,)e(ev)o(en)i(though)f(suc)o(h)g(constructs)f(are)h
(necessary)g(to)g(declare)g(m)o(utually)-1652 56 y(recursiv)o(e)h(static)e
(functions.)24 b(The)17 b(requiremen)o(ts)g(adopted)f(in)h(the)g(Standard)f
(ma)o(y)g(call)g(for)-1651 57 y(c)o(hanges)g(in)f(some)g(existing)f
(programs,)f(but)j(allo)o(w)o 14 x(for)f(maxim)o(um)f(\015exibilit)o(y)l
(.)-1395 98 y(The)23 b(de\014nition)g(mo)q(del)g(to)f(b)q(e)h(used)h(for)e
(ob)s(jects)g(with)g(external)g(link)m(age)h(w)o(as)e(a)i(ma)s(jor)-1652 
57 y(standardization)18 b(issue.)32 b(The)19 b(basic)g(problem)f(w)o(as)h
(to)f(decide)i(whic)o(h)f(declarations)f(of)g(an)-1650 56 y(ob)s(ject)d
(de\014ne)i(storage)d(for)h(the)g(ob)s(ject,)g(and)g(whic)o(h)h(merely)f
(reference)h(an)f(existing)f(ob)s(ject.)-1651 57 y(A)j(related)f(problem)g
(w)o(as)f(whether)h(m)o(ultiple)g(de\014nitions)g(of)f(storage)h(are)f
(allo)o(w)o(ed,)g(or)h(only)-1651 56 y(one)22 b(is)g(acceptable.)40 b
(Existing)20 b(implemen)o(tations)g(of)i(C)f(exhibit)h(at)f(least)g(four)g
(di\013eren)o(t)-1651 57 y(mo)q(dels,)15 b(listed)g(here)g(in)g(order)g
(of)g(increasing)f(restrictiv)o(eness:)-1115 93 y @F9 @sf(Common)22 b 
@F14 @sf(Ev)o(ery)15 b(ob)s(ject)f(declaration)g(with)g(external)g(link)m
(age)h(\(whether)g(or)f(not)g(the)h(k)o(ey-)-1536 56 y(w)o(ord)d @F8 @sf
(extern)h @F14 @sf(app)q(ears)g(in)g(the)g(declaration\))e(creates)i(a)g
(de\014nition)g(of)f(storage.)18 b(When)-1536 57 y(all)13 b(of)h(the)g(mo)q
(dules)g(are)g(com)o(bined)g(together,)g(eac)o(h)g(de\014nition)g(with)f
(the)i(same)e(name)-1536 56 y(is)f(lo)q(cated)h(at)f(the)h(same)f(address)h
(in)g(memory)l(.)19 b(\(The)12 b(name)h(is)g(deriv)o(ed)f(from)h @F11 @sf
(c)n(ommon)-1537 57 y(stor)n(age)19 b @F14 @sf(in)d(F)o(OR)l(TRAN.\))g
(This)g(mo)q(del)f(w)o(as)g(the)h(in)o(ten)o(t)g(of)f(the)h(original)e
(designer)i(of)-1537 56 y(C,)f(Dennis)g(Ritc)o(hie.)-480 90 y @F9 @sf
(Relaxed)j(Ref/Def)23 b @F14 @sf(The)12 b(app)q(earance)h(of)f(the)h(k)o
(eyw)o(ord)f @F8 @sf(extern)f @F14 @sf(\(whether)i(it)f(is)g(used)h(out-)
-1537 57 y(side)e(of)g(the)g(scop)q(e)g(of)g(a)g(function)g(or)f(not\))h
(in)f(a)h(declaration)f(indicates)g(a)h(pure)h(reference)-1536 56 y(\(ref)t
(\),)g(whic)o(h)g(do)q(es)i(not)e(de\014ne)i(storage.)k(Somewhere)13 b(in)f
(all)g(of)g(the)h(translation)e(units,)-1537 56 y(at)17 b(least)g(one)g
(de\014nition)h(\(def)t(\))f(of)g(the)g(ob)s(ject)g(m)o(ust)g(exist.)27 b
(An)18 b(external)f(de\014nition)-1537 57 y(is)f(indicated)g(b)o(y)g(an)h
(ob)s(ject)e(declaration)g(in)h(\014le)h(scop)q(e)g(con)o(taining)e(no)h
(storage)f(class)-1537 56 y(indication.)23 b(A)17 b(reference)h(without)d
(a)i(corresp)q(onding)f(de\014nition)h(is)f(an)h(error.)23 b(Some)-1536 
57 y(implemen)o(tations)10 b(also)h(will)g(not)g(generate)h(a)g(reference)g
(for)g(items)f(whic)o(h)h(are)f(declared)-1536 56 y(with)f(the)h @F8 @sf
(extern)f @F14 @sf(k)o(eyw)o(ord,)h(but)g(are)g(nev)o(er)g(used)g(within)f
(the)h(co)q(de.)19 b(The)12 b(UNIX)f(op)q(er-)-1536 57 y(ating)h(system)h
(C)g(compiler)g(and)g(link)o(er)g(implemen)o(t)f(this)h(mo)q(del,)g(whic)o
(h)g(is)g(recognized)-1536 56 y(as)i(a)g @F11 @sf(c)n(ommon)h(extension)h 
@F14 @sf(to)e(the)g(C)g(language)f(\(F.4.1)o(1\).)o 19 x(UNIX)i(C)f
(programs)f(whic)o(h)-1537 57 y(tak)o(e)j(adv)m(an)o(tage)g(of)h(this)f
(mo)q(del)g(are)h(standard)f(conforming)g(in)g(their)g(en)o(vironmen)o(t,)
-1537 56 y(but)e(are)g(not)g(maximally)e(p)q(ortable.)-755 90 y @F9 @sf
(Strict)18 b(Ref/Def)23 b @F14 @sf(This)15 b(is)g(the)g(same)g(as)g(the)g
(relaxed)g(ref/def)g(mo)q(del,)g(sa)o(v)o(e)g(that)f(only)h(one)-1536 57 y
(de\014nition)f(is)f(allo)o(w)n(ed.)19 b(Again,)13 b(some)g(implemen)o
(tations)f(ma)o(y)h(decide)i(not)e(to)g(put)h(out)-252 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
23 @eop1

24 @bop0
@F9 @sf
[<
1FC03FF07878FC7CFC3C783E303E003E003E003E003E003E003E003E003E003E003E003E00
3E003E003E003E003E003E003E003E003E01FE01FE0000000000000000000000000038007C
00FE00FE00FE007C0038>
. 15 42 3 32 16] 106 @dc

24 @eop0

0 0 24 @bop1 112 50 a @F14 @sf(24)1114 b @F10 @sf(Section)15 b(3.)30 b
(LANGUA)o(GE)-1537 145 y @F14 @sf(references)15 b(to)e(items)g(that)g(are)h
(not)f(used.)20 b(This)14 b(is)f(the)h(mo)q(del)g(sp)q(eci\014ed)h(in)e
(K&R)i(and)-1536 57 y(in)g(the)g(Base)h(Do)q(cumen)o(t.)-571 93 y @F9 @sf
(Initialization)23 b @F14 @sf(This)16 b(mo)q(del)g(requires)h(an)g
(explicit)e(initializat)o(ion)g(to)h(de\014ne)i(storage.)23 b(All)-1537 
57 y(other)15 b(declarations)f(are)h(references.)-768 105 y(Figure)g(3.1)f
(demonstrates)h(the)g(di\013erences)g(b)q(et)o(w)o(een)h(the)f(mo)q(dels.)
-1129 56 y(The)k(mo)q(del)g(adopted)g(in)g(the)g(Standard)g(is)f(a)h(com)o
(bination)f(of)g(features)h(of)f(the)i(strict)-1652 57 y(ref/def)f(mo)q
(del)f(and)g(the)g(initiali)o(zatio)o(n)f(mo)q(del.)29 b(As)18 b(in)g(the)g
(strict)f(ref/def)h(mo)q(del,)g(only)g(a)-1651 56 y(single)h(translati)o
(on)f(unit)h(con)o(tains)f(the)h(de\014nition)g(of)g(a)g(giv)o(en)f(ob)s
(ject)h(|)g(man)o(y)g(en)o(viron-)-1651 57 y(men)o(ts)d(cannot)g(e\013ectiv)o
(ely)e(or)i(e\016cien)o(tly)f(supp)q(ort)h(the)g(\\distributed)f
(de\014nition")g(inheren)o(t)-1650 56 y(in)i(the)f(common)g(or)g(relaxed)g
(ref/def)h(approac)o(hes.)23 b(Ho)o(w)o(ev)o(er,)15 b(either)h(an)h
(initial)o(izati)o(on,)e(or)-1651 57 y(an)k(appropriate)e(declaration)f
(without)h(storage)g(class)h(sp)q(eci\014er)g(\(see)h @F12 @sf(x)p @F14 @sf
(3.7\),)e(serv)o(es)h(as)f(the)-1650 56 y(external)g(de\014nition.)24 b
(This)17 b(comp)q(osite)f(approac)o(h)h(w)o(as)f(c)o(hosen)h(to)f(accommo)q
(date)g(as)h(wide)-1651 56 y(a)e(range)g(of)g(en)o(vironmen)o(ts)f(and)i
(existing)e(implemen)o(tations)f(as)i(p)q(ossible.)-1317 120 y @F9 @sf
(3.1.2.3)52 b(Name)17 b(spaces)g(of)h(iden)o(ti\014ers)-799 86 y @F14 @sf
(Implemen)o(tations)g(ha)o(v)o(e)f(v)m(aried)h(considerably)g(in)g(the)g
(n)o(um)o(b)q(er)g(of)g(separate)f(name)h(spaces)-1650 57 y(main)o
(tained.)27 b(The)17 b(p)q(osition)g(adopted)h(in)f(the)h(Standard)f(is)g
(to)g(p)q(ermit)h(as)f(man)o(y)g(separate)-1651 56 y(name)12 b(spaces)g
(as)f(can)h(b)q(e)g(distinguished)f(b)o(y)h(con)o(text,)f(except)h(that)f
(all)f(tags)h(\()p @F8 @sf(struct)p @F14 @sf(,)g @F8 @sf(union)p @F14 @sf
(,)-1652 57 y(and)16 b @F8 @sf(enum)p @F14 @sf(\))e(comprise)h(a)g(single)f
(name)i(space.)-812 120 y @F9 @sf(3.1.2.4)52 b(Storage)18 b(durations)f
(of)g(ob)s(jects)-845 85 y @F14 @sf(It)g(w)o(as)f(necessary)h(to)f
(clarify)f(the)i(e\013ect)f(on)h(automatic)e(storage)g(of)h(jumping)h(in)o
(to)e(a)i(blo)q(c)o(k)-1651 57 y(that)k(declares)h(lo)q(cal)f(storage.)37 b
(\(See)22 b @F12 @sf(x)q @F14 @sf(3.6.2)o(.\))38 b(While)21 b(man)o(y)g
(implemen)o(tatio)o(ns)g(allo)q(cate)-1652 56 y(the)15 b(maxim)o(um)f
(depth)h(of)f(automatic)g(storage)f(up)q(on)i(en)o(try)g(to)f(a)g
(function,)g(some)h(explicitly)-1652 57 y(allo)q(cate)10 b(and)g(deallo)q
(cate)g(on)g(blo)q(c)o(k)g(en)o(try)g(and)h(exit.)17 b(The)11 b(latter)e
(are)h(required)g(to)g(assure)g(that)-1651 56 y(lo)q(cal)15 b(storage)e
(is)i(allo)q(cated)f(regardless)g(of)h(the)g(path)g(in)o(to)f(the)h(blo)q
(c)o(k)g(\(although)f(initial)o(izers)-1652 57 y(in)f(automatic)e
(declarations)g(are)h(not)g(executed)h(unless)g(the)f(blo)q(c)o(k)h(is)f
(en)o(tered)g(from)g(the)h(top\).)-1581 56 y(T)l(o)20 b(e\013ect)f(true)h
(reen)o(trancy)g(for)f(functions)h(in)g(the)g(presence)h(of)e(signals)g
(raised)g(asyn-)-1650 56 y(c)o(hronously)f(\(see)g @F12 @sf(x)p @F14 @sf
(2.2.3\),)o 18 x(an)g(implemen)o(tati)o(on)f(m)o(ust)g(assure)h(that)f
(the)i(storage)d(for)i(func-)-1650 57 y(tion)13 b(return)g(v)m(alues)h
(has)f(automati)o(c)f(duration.)19 b(This)13 b(means)g(that)f(the)i
(caller)e(m)o(ust)h(allo)q(cate)-1652 56 y(automatic)j(storage)g(for)h
(the)g(return)h(v)m(alue)f(and)h(comm)o(unicate)e(its)h(lo)q(cation)f(to)g
(the)i(called)-1651 57 y(function.)26 b(\(The)17 b(t)o(ypical)e(case)i(of)g
(return)g(registers)f(for)g(small)g(t)o(yp)q(es)h(conforms)f(to)h(this)f
(re-)-1650 56 y(quiremen)o(t:)27 b(the)19 b(calling)e(con)o(v)o(en)o(tion)h
(of)g(the)h(implemen)o(tati)o(on)e(implicitly)g(comm)o(unicates)-1651 57 y
(the)f(return)f(lo)q(cation)f(to)g(the)i(called)f(function.\))-848 120 y 
@F9 @sf(3.1.2.5)52 b(T)o(yp)q(es)-339 85 y @F14 @sf(Sev)o(eral)15 b(new)h
(t)o(yp)q(es)f(ha)o(v)o(e)g(b)q(een)h(added:)-618 94 y @F8 @sf(void)-96 
56 y(void)23 b(*)-143 57 y(signed)g(char)-471 124 y
24 @eop1

25 @bop0
@F12 @sf
[<
000F0038006000E001C001C001C001C001C001C001C001C001C001C001C001C001C001C001
C0038007001E00F8001E000700038001C001C001C001C001C001C001C001C001C001C001C0
01C001C001C001C000E000600038000F>
. 16 45 -3 33 23] 102 @dc
@F12 @sf
[<
F8001E000700038001C001C001C001C001C001C001C001C001C001C001C001C001C001C001
C000E000600038000F0038006000E001C001C001C001C001C001C001C001C001C001C001C0
01C001C001C001C0038007001E00F800>
. 16 45 -3 33 23] 103 @dc

25 @eop0

0 0 25 @bop1 112 50 a @F10 @sf(3.1.)30 b(Lexical)14 b(Elemen)o(ts)1166 b 
@F14 @sf(25)-1336 440 y(Figure)15 b(3.1:)k(Comparison)13 b(of)i(iden)o
(ti\014er)g(link)m(age)g(mo)q(dels)-1066 65 y 1111 -2 z -1 56 a 2 -56 z 
26 -17 a(Mo)q(del)233 17 y 2 -56 z 9 x 2 -56 z 25 -17 a(File)f(1)221 17 y 
2 -56 z 26 -17 a(File)g(2)221 17 y 2 -56 z -1110 2 a 1111 -2 z 10 w 1111 
-2 z -1 421 a 2 -421 z 26 -382 a(common)190 382 y 2 -421 z 9 x 2 -421 z 
25 -292 a @F8 @sf(extern)23 b(int)g(i;)-310 56 y(main\(\))g @F12 @sf(f)-95 
57 y @F8 @sf(i)h(=)g(1;)-144 56 y(second\(\);)-311 56 y @F12 @sf(g)311 67 y 
2 -421 z 26 -292 a @F8 @sf(extern)f(int)g(i;)-310 56 y(second\(\))g @F12 @sf
(f)-143 57 y @F8 @sf(third\(i\);)-311 56 y @F12 @sf(g)311 123 y 2 -421 z 
-1110 2 a 1111 -2 z -1 421 a 2 -421 z 26 -382 a @F14 @sf(Relaxed)16 b
(Ref/Def)24 382 y 2 -421 z 9 x 2 -421 z 25 -292 a @F8 @sf(int)23 b(i;)-143 
56 y(main\(\))g @F12 @sf(f)-95 57 y @F8 @sf(i)h(=)g(1;)-144 56 y
(second\(\);)-311 57 y @F12 @sf(g)311 66 y 2 -421 z 26 -292 a @F8 @sf(int)f
(i;)-143 56 y(second\(\))g @F12 @sf(f)-143 57 y @F8 @sf(third\(i\);)-311 
56 y @F12 @sf(g)311 123 y 2 -421 z -1110 2 a 1111 -2 z -1 421 a 2 -421 z 
26 -382 a @F14 @sf(Strict)14 b(Ref/Def)72 382 y 2 -421 z 9 x 2 -421 z 25 
-292 a @F8 @sf(int)23 b(i;)-143 56 y(main\(\))g @F12 @sf(f)-95 57 y @F8 @sf
(i)h(=)g(1;)-144 56 y(second\(\);)-311 57 y @F12 @sf(g)311 66 y 2 -421 z 
26 -292 a @F8 @sf(extern)f(int)g(i;)-310 56 y(second\(\))g @F12 @sf(f)-143 
57 y @F8 @sf(third\(i\);)-311 56 y @F12 @sf(g)311 123 y 2 -421 z -1110 2 a 
1111 -2 z -1 421 a 2 -421 z 26 -381 a @F14 @sf(Initializer)165 381 y 2 -421 z 
9 x 2 -421 z 25 -292 a @F8 @sf(int)g(i)h(=)g(0;)-239 56 y(main\(\))f 
@F12 @sf(f)-95 57 y @F8 @sf(i)h(=)g(1;)-144 56 y(second\(\);)-311 57 y 
@F12 @sf(g)311 66 y 2 -421 z 26 -292 a @F8 @sf(int)f(i;)-143 56 y
(second\(\))g @F12 @sf(f)-143 57 y @F8 @sf(third\(i\);)-311 56 y @F12 @sf
(g)311 123 y 2 -421 z -1110 2 a 1111 -2 z 1129 438 a @F15 @sf(RA)m
(TIONALE)-1763 b
25 @eop1

26 @bop0

26 @eop0
0 0 26 @bop1 112 50 a @F14 @sf(26)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1555 145 y @F8 @sf(unsigned)23 b(char)-311 57 y(unsigned)g
(short)-335 56 y(unsigned)g(long)-311 56 y(long)g(double)-359 96 y @F14 @sf
(New)16 b(designations)e(for)g(existing)h(t)o(yp)q(es)g(ha)o(v)o(e)g(b)q
(een)h(added:)-966 96 y @F8 @sf(signed)23 b(short)14 b @F14 @sf(for)h 
@F8 @sf(short)-491 56 y(signed)23 b(int)62 b @F14 @sf(for)15 b @F8 @sf
(int)-443 57 y(signed)23 b(long)38 b @F14 @sf(for)15 b @F8 @sf(long)-492 
95 y(void)d @F14 @sf(is)h(used)g(primarily)e(as)h(the)h(t)o(yp)q(emark)g
(for)f(a)g(function)h(whic)o(h)f(returns)h(no)g(result.)18 b(It)-1650 56 y
(ma)o(y)12 b(also)g(b)q(e)h(used,)g(in)g(an)o(y)f(con)o(text)g(where)g
(the)h(v)m(alue)g(of)f(an)g(expression)h(is)f(to)f(b)q(e)j(discarded,)-1651 
57 y(to)i(indicate)f(explicitly)g(that)g(a)g(v)m(alue)h(is)g(ignored)f(b)o
(y)h(writing)e(the)i(cast)f @F8 @sf(\(void\))p @F14 @sf(.)21 b(Finally)l
(,)15 b(a)-1651 56 y(function)j(protot)o(yp)q(e)f(list)f(that)h(has)g(no)g
(argumen)o(ts)g(is)g(written)g(as)g @F8 @sf(f\(void\))p @F14 @sf(,)f(b)q
(ecause)j @F8 @sf(f\(\))-1651 57 y @F14 @sf(retains)c(its)f(old)h(meaning)g
(that)f(nothing)h(is)g(said)f(ab)q(out)h(the)h(argumen)o(ts.)-1233 57 y(A)k
(\\p)q(oin)o(ter)f(to)g(v)o(oid,")g @F8 @sf(void)24 b(*)p @F14 @sf(,)c(is)f
(a)g(generic)h(p)q(oin)o(ter,)g(capable)g(of)f(p)q(oin)o(ting)g(to)g(an)o
(y)-1651 56 y(\(data\))c(ob)s(ject)h(without)f(truncation.)23 b(A)16 b(p)q
(oin)o(ter)g(to)f(v)o(oid)h(m)o(ust)g(ha)o(v)o(e)f(the)i(same)f(represen-)
-1650 57 y(tation)i(and)h(alignmen)o(t)e(as)i(a)f(p)q(oin)o(ter)g(to)g(c)o
(haracter;)i(the)f(in)o(ten)o(t)f(of)g(this)g(rule)h(is)f(to)g(allo)o(w)
-1652 56 y(existing)g(programs)e(whic)o(h)i(call)g(library)e(functions)i
(\(suc)o(h)g(as)g @F8 @sf(memcpy)f @F14 @sf(and)i @F8 @sf(free)p @F14 @sf
(\))e(to)g(con-)-1650 56 y(tin)o(ue)f(to)e(w)o(ork.)20 b(A)c(p)q(oin)o
(ter)e(to)h(v)o(oid)g(ma)o(y)g(not)g(b)q(e)h(dereferenced,)g(although)f
(suc)o(h)h(a)f(p)q(oin)o(ter)-1651 57 y(ma)o(y)f(b)q(e)h(con)o(v)o(erted)f
(to)g(a)g(normal)f(p)q(oin)o(ter)h(t)o(yp)q(e)g(whic)o(h)h(ma)o(y)e(b)q(e)i
(dereferenced.)21 b(P)o(oin)o(ters)13 b(to)-1651 56 y(other)h(t)o(yp)q(es)g
(co)q(erce)h(silen)o(tly)d(to)i(and)g(from)f @F8 @sf(void)23 b(*)14 b 
@F14 @sf(in)g(assignmen)o(ts,)f(function)h(protot)o(yp)q(es,)-1652 57 y
(comparisons,)20 b(and)g(conditional)e(expressions,)j(whereas)f(other)f(p)q
(oin)o(ter)g(t)o(yp)q(e)h(clashes)g(are)-1651 56 y(in)o(v)m(alid.)25 b(It)
16 b(is)h(unde\014ned)h(what)f(will)e(happ)q(en)j(if)e(a)h(p)q(oin)o(ter)f
(of)h(some)f(t)o(yp)q(e)h(is)f(con)o(v)o(erted)h(to)-1651 57 y @F8 @sf
(void)24 b(*)p @F14 @sf(,)12 b(and)g(then)g(the)g @F8 @sf(void)23 b(*)11 b 
@F14 @sf(p)q(oin)o(ter)h(is)f(con)o(v)o(erted)g(to)g(a)h(t)o(yp)q(e)g
(with)f(a)g(stricter)g(alignmen)o(t)-1652 56 y(requiremen)o(t.)-180 57 y
(Three)17 b(t)o(yp)q(es)f(of)h @F8 @sf(char)e @F14 @sf(are)i(sp)q(eci\014ed:)
23 b @F8 @sf(signed)p @F14 @sf(,)16 b(plain,)g(and)h @F8 @sf(unsigned)p 
@F14 @sf(.)22 b(A)17 b(plain)f @F8 @sf(char)-1651 56 y @F14 @sf(ma)o(y)g
(b)q(e)g(represen)o(ted)h(as)e(either)h(signed)g(or)f(unsigned,)h(dep)q
(end)q(ing)h(up)q(on)f(the)g(implemen)o(ta-)-1651 57 y(tion,)f(as)f(in)h
(prior)g(practice.)k(The)d(t)o(yp)q(e)f @F8 @sf(signed)23 b(char)15 b 
@F14 @sf(w)o(as)f(in)o(tro)q(duced)h(to)g(mak)o(e)g(a)o(v)m(ailable)-1652 
56 y(a)21 b(one-b)o(yte)g(signed)g(in)o(teger)e(t)o(yp)q(e)i(on)g(those)g
(systems)f(whic)o(h)g(implemen)o(t)g(plain)h @F8 @sf(char)f @F14 @sf(as)
-1651 57 y(unsigned.)28 b(F)l(or)17 b(reasons)g(of)g(symmetry)l(,)g(the)h
(k)o(eyw)o(ord)e @F8 @sf(signed)h @F14 @sf(is)g(allo)o(w)o(ed)f(as)h(part)g
(of)g(the)-1650 56 y(t)o(yp)q(e)f(name)f(of)g(other)g(in)o(tegral)o 14 x
(t)o(yp)q(es.)-607 57 y(Tw)o(o)10 b(v)m(arieties)g(of)g(the)h(in)o(tegral)e
(t)o(yp)q(es)h(are)h(sp)q(eci\014ed:)19 b @F8 @sf(signed)9 b @F14 @sf(and)i 
@F8 @sf(unsigned)p @F14 @sf(.)18 b(If)10 b(neither)-1650 57 y(sp)q(eci\014er)
17 b(is)e(used,)i(signed)e(is)h(assumed.)22 b(In)16 b(the)g(Base)g(Do)q
(cumen)o(t)g(the)g(only)f(unsigned)h(t)o(yp)q(e)-1650 56 y(is)f @F8 @sf
(unsigned)23 b(int)p @F14 @sf(.)-275 57 y(The)15 b(k)o(eyw)o(ord)f @F8 @sf
(unsigned)f @F14 @sf(is)h(something)g(of)g(a)g(misnomer,)g(suggesting)f
(as)i(it)e(do)q(es)i(arith-)-1651 56 y(metic)k(that)f(is)h(non-negativ)o
(e)f(but)h(capable)g(of)f(o)o(v)o(er\015o)o(w.)30 b(The)19 b(seman)o(tics)f
(of)h(the)g(C)f(t)o(yp)q(e)-1650 57 y @F8 @sf(unsigned)g @F14 @sf(is)g
(that)g(of)g(mo)q(dulus,)i(or)e(wrap-around,)h(arithmetic,)f(for)g(whic)o
(h)g(o)o(v)o(er\015o)o(w)g(has)-1651 56 y(no)d(meaning.)k(The)c(result)g
(of)f(an)g(unsigned)i(arithmetic)d(op)q(eration)h(is)g(th)o(us)g(alw)o(a)o
(ys)f(de\014ned,)-1649 57 y(whereas)k(the)g(result)f(of)g(a)h(signed)f(op)q
(eration)g(ma)o(y)g(\(in)g(principle\))g(b)q(e)i(unde\014ned.)26 b(In)17 b
(prac-)-1650 56 y(tice,)j(on)f(t)o(w)o(os-complemen)o(t)f(mac)o(hines,)h
(b)q(oth)h(t)o(yp)q(es)f(often)g(giv)o(e)f(the)h(same)g(result)g(for)f
(all)-1651 57 y(op)q(erators)f(except)g(division,)f(mo)q(dulus,)h(righ)o
(t)f(shift,)g(and)h(comparisons.)25 b(Hence)17 b(there)h(has)-1651 56 y(b)q
(een)e(a)e(lac)o(k)f(of)h(sensitivit)n(y)f(in)h(the)g(C)g(comm)o(unit)o(y)f
(to)g(the)i(di\013erences)f(b)q(et)o(w)o(een)g(signed)g(and)-1650 57 y
(unsigned)i(arithmetic)e(\(see)h @F12 @sf(x)p @F14 @sf(3.2.1.1\))o(.)-794 
124 y
26 @eop1

27 @bop0

27 @eop0
0 0 27 @bop1 112 50 a @F10 @sf(3.1.)35 b(Lexical)14 b(Elemen)o(ts)1161 b 
@F14 @sf(27)-1580 145 y(The)14 b(Committee)f(has)h(explicitly)f
(restricted)h(the)g(C)g(language)f(to)h(binary)g(arc)o(hitectures,)-1652 
57 y(on)i(the)f(grounds)g(that)f(this)h(stricture)f(w)o(as)h(implicit)e
(in)i(an)o(y)g(case:)-1101 79 y @F12 @sf(\017)22 b @F14 @sf(Bit-\014elds)
11 b(are)f(sp)q(eci\014ed)i(b)o(y)f(a)f(n)o(um)o(b)q(er)h(of)f(bits,)h
(with)f(no)h(men)o(tion)f(of)g(\\in)o(v)m(alid)g(in)o(teger")-1538 56 y
(represen)o(tation.)19 b(The)c(only)g(reasonable)g(enco)q(ding)g(for)g
(suc)o(h)h(bit-\014elds)f(is)f(binary)l(.)-1508 88 y @F12 @sf(\017)22 b 
@F14 @sf(The)11 b(in)o(teger)f(formats)g(for)g @F8 @sf(printf)g @F14 @sf
(suggest)g(no)h(pro)o(vision)e(for)h(\\illegal)f(in)o(teger")h(v)m(alues,)
-1537 57 y(implying)18 b(that)g(an)o(y)h(result)g(of)f(bit)o(wise)g
(manipulation)g(pro)q(duces)i(an)f(in)o(teger)f(result)-1537 56 y(whic)o
(h)d(can)h(b)q(e)f(prin)o(ted)g(b)o(y)g @F8 @sf(printf)p @F14 @sf(.)-698 
88 y @F12 @sf(\017)22 b @F14 @sf(All)g(metho)q(ds)g(of)g(sp)q(ecifying)g
(in)o(teger)f(constan)o(ts)h(|)g(decimal,)h(hex,)h(and)f(o)q(ctal)e(|)-1536 
57 y(sp)q(ecify)g(an)f(in)o(teger)f(v)m(alue.)35 b(No)20 b(metho)q(d)h
(indep)q(enden)o(t)h(of)d(in)o(tegers)h(is)f(de\014ned)j(for)-1537 56 y
(sp)q(ecifying)13 b(\\bit-string)f(constan)o(ts.")18 b(Only)13 b(a)g
(binary)g(enco)q(ding)g(pro)o(vides)g(a)g(complete)-1537 57 y(one-to-one)i
(mapping)g(b)q(et)o(w)o(een)h(bit)e(strings)h(and)g(in)o(teger)f(v)m
(alues.)-1288 79 y(The)k(restriction)e(to)h(\\binary)g(n)o(umeration)f
(systems")h(rules)g(out)h(suc)o(h)f(curiosities)f(as)i(Gra)o(y)-1652 57 y
(co)q(de,)c(and)f(mak)o(es)f(p)q(ossible)h(arithmetic)f(de\014nitions)g
(of)h(the)g(bit)o(wise)e(op)q(erators)h(on)h(unsigned)-1650 56 y(t)o(yp)q
(es)j(\(see)f @F12 @sf(x)p @F14 @sf(3.3.3.3)o(,)f @F12 @sf(x)p @F14 @sf
(3.3.7,)o 14 x @F12 @sf(x)p @F14 @sf(3.3.10,)f @F12 @sf(x)p @F14 @sf
(3.3.11,)g @F12 @sf(x)q @F14 @sf(3.3.1)o(2\).)o -955 57 a(A)i(new)f
(\015oating)g(t)o(yp)q(e)g @F8 @sf(long)23 b(double)14 b @F14 @sf(has)g(b)q
(een)i(added)f(to)e(C.)20 b(The)14 b @F8 @sf(long)24 b(double)13 b @F14 @sf
(t)o(yp)q(e)-1650 56 y(m)o(ust)21 b(o\013er)f(at)h(least)f(as)h(m)o(uc)o
(h)g(precision)g(as)f(the)i(t)o(yp)q(e)f @F8 @sf(double)p @F14 @sf(.)37 b
(Sev)o(eral)20 b(arc)o(hitectures)-1651 56 y(supp)q(ort)g(more)e(than)i(t)o
(w)o(o)d(\015oating)h(t)o(yp)q(es)i(and)f(th)o(us)g(can)g(map)g(a)g
(distinct)f(mac)o(hine)h(t)o(yp)q(e)-1650 57 y(on)o(to)h(this)f
(additional)g(C)g(t)o(yp)q(e.)35 b(Sev)o(eral)19 b(arc)o(hitectures)h
(whic)o(h)g(only)f(supp)q(ort)h(t)o(w)o(o)f(\015oat-)-1651 56 y(ing)f(p)q
(oin)o(t)f(t)o(yp)q(es)g(can)h(also)f(tak)o(e)g(adv)m(an)o(tage)g(of)g
(the)h(three)f(C)h(t)o(yp)q(es)f(b)o(y)h(mapping)f(the)h(less)-1651 57 y
(precise)h(t)o(yp)q(e)f(on)o(to)f @F8 @sf(float)g @F14 @sf(and)h @F8 @sf
(double)p @F14 @sf(,)g(and)g(designating)f(the)h(more)g(precise)g(t)o(yp)q
(e)g @F8 @sf(long)-1651 56 y(double)p @F14 @sf(.)29 b(Arc)o(hitectures)17 b
(in)i(whic)o(h)f(this)f(mapping)h(migh)o(t)f(b)q(e)i(desirable)f(include)h
(those)f(in)-1651 57 y(whic)o(h)23 b(single-precision)f(\015oats)g(o\013er)f
(at)h(least)g(as)g(m)o(uc)o(h)h(precision)f(as)h(most)e(other)i(ma-)-1651 
56 y(c)o(hines's)d(double-precision,)h(or)f(those)g(on)g(whic)o(h)g
(single-precision)f(is)g(considerably)h(more)-1651 57 y(e\016cien)o(t)15 b
(than)f(double-precision.)20 b(Th)o(us)15 b(the)f(common)g(C)h(\015oating)e
(t)o(yp)q(es)i(w)o(ould)f(map)g(on)o(to)-1651 56 y(an)h(e\016cien)o(t)g
(implemen)o(tation)e(t)o(yp)q(e,)i(but)g(the)g(more)g(precise)g(t)o(yp)q
(e)g(w)o(ould)g(still)e(b)q(e)j(a)o(v)m(ailable)-1652 57 y(to)f(those)g
(programmers)f(who)h(require)g(its)f(use.)-768 56 y(T)l(o)h(a)o(v)o(oid)f
(confusion,)h @F8 @sf(long)23 b(float)14 b @F14 @sf(as)h(a)g(synon)o(ym)g
(for)f @F8 @sf(double)h @F14 @sf(has)g(b)q(een)h(retired.)-1571 95 y(En)o
(umerations)e(p)q(ermit)h(the)g(declaration)f(of)g(named)h(constan)o(ts)f
(in)h(a)f(more)h(con)o(v)o(enien)o(t)f(and)-1650 56 y(structured)k
(fashion)e(than)i @F8 @sf(#define)p @F14 @sf('s.)o 25 x(Both)g(en)o
(umeration)e(constan)o(ts)g(and)i(v)m(ariables)f(b)q(e-)-1650 57 y(ha)o(v)o
(e)e(lik)o(e)g(in)o(teger)f(t)o(yp)q(es)h(for)g(the)g(sak)o(e)g(of)g(t)o
(yp)q(e)g(c)o(hec)o(king,)g(ho)o(w)o(ev)o(er.)-1158 56 y(The)g(Committee)f
(considered)i(sev)o(eral)e(alternativ)o(es)g(for)g(en)o(umeration)h(t)o
(yp)q(es)g(in)g(C:)-1511 80 y(1.)22 b(lea)o(v)o(e)15 b(them)g(out;)-366 
88 y(2.)22 b(include)16 b(them)f(as)g(de\014nitions)g(of)f(in)o(teger)h
(constan)o(ts;)-1009 88 y(3.)22 b(include)16 b(them)f(in)g(the)g(w)o
(eakly)f(t)o(yp)q(ed)i(form)e(of)h(the)g(UNIX)h(C)f(compiler;)-1342 88 y
(4.)22 b(include)16 b(them)f(with)f(strong)h(t)o(yping,)f(as,)g(for)h
(example,)f(in)h(P)o(ascal.)-1305 79 y(The)i(Committee)e(adopted)i(the)f
(second)h(alternativ)o(e)e(on)h(the)h(grounds)f(that)g(this)g(approac)o(h)
-1651 57 y(most)i(clearly)g(re\015ects)h(common)f(practice.)30 b(Doing)18 b
(a)o(w)o(a)o(y)f(with)h(en)o(umerations)g(altogether)-1652 56 y(w)o(ould)
13 b(in)o(v)m(alidate)f(a)h(fair)f(amoun)o(t)g(of)h(existing)f(co)q(de;)i
(stronger)e(t)o(yping)g(than)h(in)o(teger)g(creates)-1651 57 y(problems,)i
(for)g(instance,)f(with)h(arra)o(ys)f(indexed)h(b)o(y)h(en)o(umerations.)
182 124 y @F15 @sf(RA)m(TIONALE)-1763 b
27 @eop1

28 @bop0
@F9 @sf
[<
01FE0007FF800F07C01E03E03E01F03C01F07C01F87C01F87C01F8FC01F8FC01F8FC01F8FC
01F8FE01F0FE01F0FD03E0FDFFC0FCFF00FC10007C00007C01E07C03F03E03F01E03F01F03
F00F81E007E0E001FFC0003F00>
. 21 29 -2 28 26] 54 @dc

28 @eop0

0 0 28 @bop1 112 50 a @F14 @sf(28)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F9 @sf(3.1.2.6)52 b(Compatible)17 b(t)o(yp)q(e)g
(and)h(comp)q(osite)f(t)o(yp)q(e)-1049 87 y @F14 @sf(The)e(notions)e(of)h 
@F11 @sf(c)n(omp)n(atible)h(typ)n(es)f @F14 @sf(and)g @F11 @sf(c)n(omp)n
(osite)h(typ)n(e)f @F14 @sf(ha)o(v)o(e)g(b)q(een)h(in)o(tro)q(duced)g(to)e
(discuss)-1650 57 y(those)k(situatio)o(ns)e(in)i(whic)o(h)f(t)o(yp)q(e)g
(declarations)f(need)j(not)e(b)q(e)h(iden)o(tical.)22 b(These)17 b(terms)f
(are)-1651 56 y(esp)q(ecially)j(useful)f(in)g(explaining)g(the)g
(relationship)g(b)q(et)o(w)o(een)g(an)h(incomplete)f(t)o(yp)q(e)g(and)h(a)
-1651 57 y(complete)c(t)o(yp)q(e.)-221 57 y(Structure,)j(union,)f(or)g(en)o
(umeration)f(t)o(yp)q(e)i(declarations)e(in)h(t)o(w)o(o)f(di\013eren)o(t)g
(translation)-1652 57 y(units)i(do)f(not)g(formally)f(declare)i(the)f 
@F11 @sf(same)i(typ)n(e)p @F14 @sf(,)e(ev)o(en)h(if)f(the)h(text)f(of)g
(these)h(declarations)-1652 56 y(come)d(from)f(the)h(same)g(include)g
(\014le,)f(since)h(the)g(translatio)o(n)f(units)g(are)h(themselv)o(es)f
(disjoin)o(t.)-1652 56 y(The)i(Standard)e(th)o(us)h(sp)q(eci\014es)h
(additional)d(compatibilit)n(y)h(rules)g(for)g(suc)o(h)i(t)o(yp)q(es,)e
(so)h(that)f(if)-1651 57 y(t)o(w)o(o)g(suc)o(h)i(declarations)e(are)h
(su\016cien)o(tly)f(similar)g(they)h(are)g(compatible.)-1304 126 y @F6 @sf
(3.1.3)56 b(Constan)n(ts)-415 88 y @F14 @sf(In)18 b(folding)d(and)i(con)o
(v)o(erting)f(constan)o(ts,)f(an)i(implemen)o(tatio)o(n)f(m)o(ust)g(use)h
(at)e(least)h(as)g(m)o(uc)o(h)-1650 56 y(precision)c(as)f(is)g(pro)o
(vided)g(b)o(y)h(the)f(target)g(en)o(vironmen)o(t.)18 b(Ho)o(w)o(ev)o(er,)
10 b(it)h(is)g(not)h(required)f(to)g(use)-1650 57 y(exactly)17 b(the)g
(same)g(precision)g(as)g(the)g(target,)f(since)h(this)g(w)o(ould)g
(require)g(a)f(cross)h(compiler)-1651 56 y(to)e(sim)o(ulate)f(target)g
(arithmetic)g(at)g(translatio)o(n)g(time.)-978 110 y(The)22 b(Committee)d
(considered)j(the)f(in)o(tro)q(duction)f(of)g(structure)h(constan)o(ts.)
37 b(Although)20 b(it)-1651 57 y(agreed)13 b(that)f(structure)g(literals)f
(w)o(ould)h(o)q(ccasionally)f(b)q(e)i(useful,)g(its)f(p)q(olicy)g(has)g(b)q
(een)i(not)e(to)-1651 56 y(in)o(v)o(en)o(t)k(new)h(features)g(unless)g(a)f
(strong)g(need)h(exists.)24 b(Since)17 b(the)g(language)f(already)g(allo)o
(ws)-1652 57 y(for)k(initialized)f @F8 @sf(const)h @F14 @sf(structure)g
(ob)s(jects,)g(the)h(need)g(for)f(inline)g(anon)o(ymous)f(structured)-1650 
56 y(constan)o(ts)c(seems)g(less)g(than)g(pressing.)-623 58 y(Sev)o(eral)f
(implemen)o(tation)f(di\016culties)g(b)q(eset)i(structure)g(constan)o(ts.)j
(All)c(other)g(forms)g(of)-1651 56 y(constan)o(ts)k(are)h(\\self)f(t)o
(yping")g(|)h(the)g(t)o(yp)q(e)g(of)f(the)h(constan)o(t)f(is)h(eviden)o(t)f
(from)g(its)g(lexical)-1651 56 y(structure.)i(Structure)13 b(constan)o(ts)f
(w)o(ould)h(require)g(either)g(an)h(explicit)e(t)o(yp)q(e)i(mark,)e(or)h
(t)o(yping)-1651 57 y(b)o(y)21 b(con)o(text;)i(either)e(approac)o(h)g(is)f
(considered)h(to)g(require)g(increased)g(complexit)o(y)f(in)g(the)-1650 
56 y(design)h(of)f(the)h(translat)o(or,)f(and)g(either)h(approac)o(h)f(w)o
(ould)g(also)f(require)h(as)g(m)o(uc)o(h,)i(if)e(not)-1651 57 y(more,)15 b
(care)g(on)g(the)g(part)g(of)g(the)g(programmer)f(as)h(using)g(an)g
(initiali)o(zed)f(structure)h(ob)s(ject.)-1629 125 y @F9 @sf(3.1.3.1)52 b
(Floating)17 b(constan)o(ts)-620 87 y @F14 @sf(Consisten)o(t)12 b(with)h
(existing)f(practice,)h(a)g(\015oating)f(p)q(oin)o(t)g(constan)o(t)h(has)g
(b)q(een)h(de\014ned)g(to)f(ha)o(v)o(e)-1651 56 y(t)o(yp)q(e)18 b @F8 @sf
(double)p @F14 @sf(.)27 b(Since)18 b(the)g(Standard)f(no)o(w)h(allo)o(w)o
(s)f(expressions)g(that)g(con)o(tain)g(only)g @F8 @sf(float)-1651 57 y 
@F14 @sf(op)q(erands)f(to)f(b)q(e)i(p)q(erformed)f(in)f @F8 @sf(float)g 
@F14 @sf(arithmetic)f(\(see)i @F12 @sf(x)p @F14 @sf(3.2.1.)o(5\))e(rather)h
(than)g @F8 @sf(double)p @F14 @sf(,)g(a)-1651 56 y(metho)q(d)i(of)f
(expressing)h(explicit)e @F8 @sf(float)h @F14 @sf(constan)o(ts)f(is)h
(desirable.)24 b(The)16 b(new)h @F8 @sf(long)23 b(double)-1651 57 y @F14 @sf
(t)o(yp)q(e)16 b(raises)e(similar)f(issues.)-430 57 y(Th)o(us)21 b(the)g 
@F8 @sf(F)g @F14 @sf(and)g @F8 @sf(L)f @F14 @sf(su\016xes)h(ha)o(v)o(e)g
(b)q(een)h(added)f(to)f(con)o(v)o(ey)h(t)o(yp)q(e)g(informatio)o(n)f(with)
-1651 56 y(\015oating)h(constan)o(ts,)g(m)o(uc)o(h)g(lik)o(e)f(the)i @F8 @sf
(L)f @F14 @sf(su\016x)g(for)f(long)h(in)o(tegers.)37 b(The)21 b(default)g
(t)o(yp)q(e)g(of)-1651 57 y(\015oating)g(constan)o(ts)g(remains)g @F8 @sf
(double)p @F14 @sf(,)h(for)f(compatibilit)o -1 x(y)f(with)h(prior)g
(practice.)39 b(Lo)o(w)o(er)-1651 56 y(case)16 b @F8 @sf(f)f @F14 @sf(and)g 
@F8 @sf(l)g @F14 @sf(are)g(also)f(allo)o(w)o(ed)g(as)h(su\016xes.)-733 58 y
(Note)j(that)f(the)h(run-time)f(selection)h(of)f(the)h(decimal)f(p)q(oin)o
(t)h(c)o(haracter)f(b)o(y)h @F8 @sf(setlocale)-1652 56 y @F14 @sf(\()p 
@F12 @sf(x)p @F14 @sf(4.4.1\))13 b(has)h(no)h(e\013ect)f(on)h(the)f(syn)o
(tax)g(of)g(C)h(source)f(text:)19 b(the)c(decimal)f(p)q(oin)o(t)g(c)o
(haracter)g(is)-1651 57 y(alw)o(a)o(ys)g(p)q(erio)q(d.)-397 124 y
28 @eop1

29 @bop0
@F8 @sf
[<
007C0001FF0003FF800783C00F01E00E00E01C00701C00701C00701C00701C00701C00701C
00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00
70FF83FEFF83FEFF83FE>
. 23 28 0 27 24] 85 @dc
@F8 @sf
[<
7F07F0FF8FF87F07F01E03C00E03800E0780070700070F00038E00039E0001DC0001F80000
F80000F00000700000F00000F00001F80001F80003DC00039C00078E00070E000F07000E07
007F8FE07F9FE07F8FE0>
. 21 28 -1 27 24] 88 @dc
@F8 @sf
[<
6030E038E038E038E038E038E038E038E038E038E038F078E0384010>
. 13 14 -5 28 24] 34 @dc
[<
C0F0F8381C1C0E0E0E3E7E7C7C38>
. 7 14 -8 27 24] 39 @dc

29 @eop0

0 0 29 @bop1 112 50 a @F10 @sf(3.1.)35 b(Lexical)14 b(Elemen)o(ts)1161 b 
@F14 @sf(29)-1651 145 y @F9 @sf(3.1.3.2)52 b(In)o(teger)17 b(constan)o(ts)
-595 87 y @F14 @sf(The)f(rule)g(that)f(the)g(default)g(t)o(yp)q(e)h(of)f
(a)g(decimal)h(in)o(teger)e(constan)o(t)h(is)g(either)g @F8 @sf(int)p 
@F14 @sf(,)g @F8 @sf(long)p @F14 @sf(,)g(or)-1651 57 y @F8 @sf(unsigned)
23 b(long)p @F14 @sf(,)13 b(dep)q(ending)i(on)e(whic)o(h)g(t)o(yp)q(e)h
(is)e(large)h(enough)h(to)e(hold)h(the)h(v)m(alue)f(without)-1651 56 y(o)o
(v)o(er\015o)o(w,)h(simpli\014es)g(the)i(use)f(of)g(constan)o(ts.)-725 57 y
(The)g(su\016xes)h @F8 @sf(U)f @F14 @sf(and)g @F8 @sf(u)g @F14 @sf(ha)o(v)o
(e)g(b)q(een)h(added)g(to)f(sp)q(ecify)g(unsigned)h(n)o(um)o(b)q(ers.)-1341 
57 y(Unlik)o(e)f(decimal)f(constan)o(ts,)g(o)q(ctal)g(and)h(hexadecimal)g
(constan)o(ts)f(to)q(o)g(large)g(to)g(b)q(e)i @F8 @sf(int)p @F14 @sf(s)-1651 
57 y(are)d(t)o(yp)q(ed)g(as)f @F8 @sf(unsigned)23 b(int)12 b @F14 @sf(\(if)g
(within)g(range)g(of)g(that)g(t)o(yp)q(e\),)h(since)f(it)g(is)h(more)f
(lik)o(ely)f(that)-1651 56 y(they)16 b(represen)o(t)f(bit)g(patterns)g(or)f
(masks,)h(whic)o(h)g(are)g(generally)f(b)q(est)i(treated)e(as)h(unsigned,)
-1650 57 y(rather)g(than)g(\\real")f(n)o(um)o(b)q(ers.)-487 57 y(Little)e
(supp)q(ort)i(w)o(as)e(expressed)i(for)e(the)h(old)g(practice)g(of)f(p)q
(ermitting)h(the)g(digits)f(8)g(and)i(9)-1651 56 y(in)i(an)f(o)q(ctal)f
(constan)o(t,)g(so)h(it)f(has)h(b)q(een)i(dropp)q(ed.)-819 57 y(A)h(prop)q
(osal)f(to)g(add)h(binary)g(constan)o(ts)f(w)o(as)g(rejected)h(due)h(to)e
(lac)o(k)g(of)h(preceden)o(t)g(and)-1650 57 y(insu\016cien)o(t)d(utilit)o
(y)l(.)-290 57 y(Despite)f(a)g(concern)g(that)g(a)f(lo)o(w)o(er-case)g(L)i
(could)f(b)q(e)h(tak)o(en)e(for)h(the)g(n)o(umeral)g(one)g(at)f(the)-1650 
56 y(end)k(of)e(an)g(in)o(tegral)f(\(or)h(\015oating\))f(literal)o(,)g
(the)i(Committ)o(ee)f(rejected)h(prop)q(osals)e(to)h(remo)o(v)o(e)-1651 
57 y(this)g(usage,)g(primarily)e(on)i(the)h(grounds)f(of)f(sanctioning)h
(existing)f(practice.)-1297 57 y(The)h(rules)g(giv)o(en)g(for)f(t)o(yping)g
(in)o(teger)h(constan)o(ts)f(w)o(ere)h(carefully)f(w)o(ork)o(ed)g(out)h
(in)g(accor-)-1651 56 y(dance)f(with)e(the)h(Committee's)e(delib)q
(erations)h(on)h(in)o(tegral)e(promotion)h(rules)g(\(see)h @F12 @sf(x)p 
@F14 @sf(3.2.1.1\))o(.)-992 110 y @F7 @sf(QUIET)i(CHANGE)-876 76 y @F14 @sf
(Unsu\016xed)i(in)o(teger)f(constan)o(ts)g(ma)o(y)f(ha)o(v)o(e)h(di\013eren)o
(t)g(t)o(yp)q(es.)24 b(In)17 b(K&R,)g(unsuf-)-1422 56 y(\014xed)j(decimal)f
(constan)o(ts)g(greater)g(than)g @F8 @sf(INT)s 14 -2 z 14 x(MAX)p @F14 @sf
(,)f(and)i(unsu\016xed)h(o)q(ctal)d(or)-1423 57 y(hexadecimal)d(constan)o
(ts)f(greater)h(than)g @F8 @sf(UINT)s 14 -2 z 13 x(MAX)g @F14 @sf(are)g
(of)g(t)o(yp)q(e)g @F8 @sf(long)p @F14 @sf(.)-1373 124 y @F9 @sf(3.1.3.3)
52 b(En)o(umeration)17 b(constan)o(ts)-727 87 y @F14 @sf(Whereas)h(an)f
(en)o(umeration)g(v)m(ariable)f(ma)o(y)h(ha)o(v)o(e)g(an)o(y)g(in)o(teger)f
(t)o(yp)q(e)i(that)f(correctly)f(repre-)-1650 56 y(sen)o(ts)f(all)e(its)h
(v)m(alues)h(when)g(widened)g(to)f @F8 @sf(int)p @F14 @sf(,)g(an)g(en)o
(umeration)g(constan)o(t)g(is)g(only)g(usable)h(as)-1651 57 y(the)h(v)m
(alue)f(of)g(an)g(expression.)20 b(Hence)c(its)e(t)o(yp)q(e)i(is)e(simply)h 
@F8 @sf(int)p @F14 @sf(.)k(\(See)d @F12 @sf(x)p @F14 @sf(3.1.2.)o(5.\))o 
-1423 123 a @F9 @sf(3.1.3.4)52 b(Character)17 b(constan)o(ts)-659 87 y 
@F14 @sf(The)i(digits)e(8)h(and)g(9)g(are)g(no)h(longer)e(p)q(ermitted)h
(in)g(o)q(ctal)g(escap)q(e)h(sequences.)30 b(\(Cf.)e(o)q(ctal)-1651 57 y
(constan)o(ts,)14 b @F12 @sf(x)q @F14 @sf(3.1.3.)o(2.)o(\))-324 57 y(The)h
(alert)g(escap)q(e)h(sequence)g(has)f(b)q(een)h(added)g(\(see)f @F12 @sf
(x)q @F14 @sf(2.2.2)o(\).)-1090 57 y(Hexadecimal)22 b(escap)q(e)i
(sequences,)i(b)q(eginning)d(with)f @F8 @sf(\\x)p @F14 @sf(,)i(ha)o(v)o(e)f
(b)q(een)h(adopted,)g(with)-1651 56 y(preceden)o(t)c(in)e(sev)o(eral)f
(existing)h(implemen)o(tatio)o(ns.)28 b(\(Little)18 b(sen)o(timen)o(t)f(w)o
(as)h(garnered)g(for)-1651 57 y(pro)o(viding)d @F8 @sf(\\X)g @F14 @sf(as)g
(w)o(ell.\))20 b(The)c(escap)q(e)g(sequence)h(extends)f(to)e(the)i(\014rst)f
(non-hex-digit)h(c)o(har-)-1651 56 y(acter,)f(th)o(us)g(pro)o(viding)e
(the)j(capabilit)o(y)d(of)i(expressing)f(an)o(y)h(c)o(haracter)f(constan)o
(t)h(no)f(matter)-1651 57 y(ho)o(w)h(large)f(the)g(t)o(yp)q(e)h @F8 @sf
(char)f @F14 @sf(is.)20 b(String)14 b(concatenation)g(can)h(b)q(e)g(used)g
(to)f(sp)q(ecify)i(a)e(hex-digit)-1651 56 y(c)o(haracter)h(follo)o(wi)o
(ng)f(a)h(hexadecimal)g(escap)q(e)h(sequence:)-825 97 y @F8 @sf(char)24 b
(a[])f(=)h("\\xff")f("f")g(;)-549 57 y(char)h(b[])f(=)h({'\\xff',)f('f',)g
('\\0'};)467 124 y @F15 @sf(RA)m(TIONALE)-1763 b
29 @eop1

30 @bop0
@F8 @sf
[<
1803803C07C03C07C03E0EE01E0EE01E0EE01F0EE00F0EE00F0EE00F87C00787C007838007
C00003C00003C00003E00001E00001E00001F00000F00000F800007800007800387C007C3C
007C3C00EE3E00EE1E00EE1E00EE1F00EE0F00EE0F00EE0F807C07807C0780380300>
. 19 36 -2 31 24] 37 @dc
@F8 @sf
[<
FFFFF8FFFFF8FFFFF81C00381C00381C00381C00381C00381C00001C00001C0E001C0E001C
0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C00701C00701C00701C00
70FFFFF0FFFFF0FFFFF0>
. 21 28 -1 27 24] 69 @dc
@F8 @sf
[<
03F8000FFE001FFF003E0F807803C07001C0E000E0E000E0E000E0E000E0F001E07001C03C
07801F1F000FFE0007FC001FFF003C07803803807001C07001C07001C07001C03803803E0F
801FFF000FFE0003F800>
. 19 28 -2 27 24] 56 @dc
@F12 @sf
[<
FFFFFFF07FFFFFF000000000000000000000000000000000000000000000000000000000FF
FFFFF0FFFFFFF0000000000000000000000000000000000000000000000000000000007FFF
FFF0FFFFFFF0>
. 28 20 -3 20 35] 17 @dc
/@F17 @newfont
@F17 @sf
[<
FFFEFFFEFFFE>
. 15 3 -2 12 20] 45 @dc
[<
0FC03FF07838701CE00EE00E400E000E000E001C003807F007E000700038001C001C201C70
1C701C38381FF00FC0>
. 15 23 -2 22 20] 51 @dc
@F20 @sf
[<
8F80F040C020C0308030807000F01FE03FC07F00F000C020C020402060E01F20>
. 12 16 -1 15 15] 115 @dc
[<
1E3C71FBE0F1E071E071E070707030701C7007F000700070207070E070C03F80>
. 16 16 -2 15 19] 97 @dc
[<
FC3FC0381E00181C0008380004380002700003E00001E00001C00003C0000760000720000E
10001C18003C1C00FF3F80>
. 18 16 -1 15 20] 120 @dc
[<
FF80001C00001C00001C00001C00001C00001C00001CF0001F0C001E07001C03001C03801C
01C01C01C01C01C01C01C01C01C01C01C01C03801C03801E07001F0E00FCF800>
. 18 23 -1 15 21] 112 @dc
[<
60F0F060000000000000000060F0F060>
. 4 16 -3 15 11] 58 @dc
[<
780000E40000E20000E1000001000001000000800000800001C00001C00001C00003A00003
A0000790000710000710000E08000E08001E0C001C04001C04003C0600FF1F80>
. 17 23 -1 15 20] 121 @dc
[<
FF9FC01C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001E
0E001E0E001D0C001CF8001C00001C00001C00001C00001C00001C00001C00001C00001C00
00FC0000>
. 18 26 -1 25 21] 104 @dc

30 @eop0

0 0 30 @bop1 112 50 a @F14 @sf(30)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F14 @sf(These)16 b(t)o(w)o(o)e(initiali)o(zati)o
(ons)g(giv)o(e)g @F8 @sf(a)h @F14 @sf(and)h @F8 @sf(b)f @F14 @sf(the)g
(same)g(string)f(v)m(alue.)-1126 59 y(The)k(Committee)f(has)h(c)o(hosen)h
(to)e(reserv)o(e)h(all)f(lo)o(w)o(er)g(case)h(letters)f(not)h(curren)o
(tly)g(used)-1650 57 y(for)d(future)h(escap)q(e)g(sequences)g(\()p @F11 @sf
(unde\014ne)n(d)f(b)n(ehavior)5 b @F14 @sf(\).)20 b(All)15 b(other)g(c)o
(haracters)f(with)h(no)g(cur-)-1650 56 y(ren)o(t)21 b(meaning)g(are)g
(left)g(to)f(the)h(implemen)o(tor)f(for)h(extensions)g(\()p @F11 @sf
(implementation-de\014ne)n(d)-1652 57 y(b)n(ehavior)5 b @F14 @sf(\).)34 b
(No)19 b(p)q(ortable)g(meaning)h(is)f(assigned)g(to)g(m)o(ulti-c)o
(haracter)f(constan)o(ts)h(or)g(ones)-1650 56 y(con)o(taining)f(other)g
(than)h(the)f(mandated)h(source)g(c)o(haracter)e(set)i(\()p @F11 @sf
(implementation-de\014ne)n(d)-1652 57 y(b)n(ehavior)5 b @F14 @sf(\).)-128 
59 y(The)23 b(Committ)o(ee)f(considered)h(prop)q(osals)e(to)h(add)h(the)f
(c)o(haracter)g(constan)o(t)f @F8 @sf(\015\\e\015)h @F14 @sf(to)-1651 56 y
(represen)o(t)12 b(the)g(ASCI)q(I)h(ESC)f(\()p @F8 @sf(\015\\033\015)p 
@F14 @sf(\))f(c)o(haracter.)18 b(This)11 b(prop)q(osal)g(w)o(as)g(based)i
(up)q(on)f(the)g(use)-1650 57 y(of)f(ESC)h(as)f(the)g(initial)f(c)o
(haracter)h(of)g(most)f(con)o(trol)g(sequences)j(in)e(common)g(terminal)f
(driving)-1651 56 y(disciplines,)19 b(suc)o(h)f(as)g(ANSI)h(X3.64.)27 b
(Ho)o(w)o(ev)o(er,)18 b(this)g(usage)g(has)g(no)g(ob)o(vious)f(coun)o
(terpart)-1651 57 y(in)f(other)f(p)q(opular)h(c)o(haracter)f(co)q(des,)h
(suc)o(h)g(as)f(EBCDIC.)h(A)f(programmer)g(merely)g(wishing)-1651 56 y(to)k
(a)o(v)o(oid)e(ha)o(ving)h(to)g(t)o(yp)q(e)h @F8 @sf(\\033)g @F14 @sf(to)f
(represen)o(t)g(the)h(ESC)g(c)o(haracter)f(in)h(an)g(ASCI)q(I/X3.64)-1651 
57 y(en)o(vironmen)o(t,)c(ma)o(y)l(,)f(instead)h(of)g(writing)-543 123 y 
@F8 @sf(printf\("\\033[10;10)o(h%d)p(\\n",)o 23 x(somevalue\);)-1076 120 y 
@F14 @sf(write:)76 108 y @F8 @sf(#define)47 b(ESC)g("\\033")-478 113 y
(printf\()23 b(ESC)h("[10;10h%d\\n")o(,)f(somevalue\);)-1029 105 y @F14 @sf
(Not)o(withstanding)9 b(the)j(general)f(rule)g(that)g(literal)o 10 x
(constan)o(ts)g(are)g(non-negativ)o(e)p -16 w @F22 @sf(1)1 16 y @F14 @sf
(,)h(a)f(c)o(har-)-1651 57 y(acter)17 b(constan)o(t)g(con)o(taining)f(one)i
(c)o(haracter)e(is)h(e\013ectiv)o(ely)g(preceded)i(with)d(a)h @F8 @sf
(\(char\))g @F14 @sf(cast)-1651 56 y(and)12 b(hence)h(ma)o(y)e(yield)h(a)f
(negativ)o(e)g(v)m(alue)h(if)f(plain)g @F8 @sf(char)g @F14 @sf(is)h
(represen)o(ted)g(the)g(same)f(as)g @F8 @sf(signed)-1651 57 y(char)p 
@F14 @sf(.)20 b(This)14 b(simply)f(re\015ects)i(widespread)g(past)f
(practice)g(and)h(w)o(as)e(deemed)j(to)q(o)e(dangerous)-1651 56 y(to)h(c)o
(hange.)456 121 y @F7 @sf(QUIET)g(CHANGE)-876 80 y @F14 @sf(A)h(constan)o
(t)f(of)h(the)f(form)h @F8 @sf(\015\\078\015)f @F14 @sf(is)g(v)m(alid,)g
(but)h(no)o(w)g(has)f(di\013eren)o(t)h(meaning.)-1424 57 y(It)d(no)o(w)f
(denotes)i(a)e(c)o(haracter)g(constan)o(t)g(whose)h(v)m(alue)g(is)g(the)g
(\(implemen)o(tati)o(on-)-1424 56 y(de\014ned\))i(com)o(bination)d(of)i
(the)g(v)m(alues)g(of)f(the)h(t)o(w)o(o)e(c)o(haracters)i @F8 @sf(\015\\07\015)f
@F14 @sf(and)h @F8 @sf(\0158\015)p @F14 @sf(.)-1424 57 y(In)g(some)g
(implemen)o(tati)o(ons)e(the)i(old)f(meaning)g(is)g(the)h(c)o(haracter)f
(whose)g(co)q(de)h(is)-1423 56 y(078)g @F12 @sf(\021)i @F14 @sf(0100)e 
@F12 @sf(\021)i @F14 @sf(64.)196 118 y @F7 @sf(QUIET)f(CHANGE)-876 81 y 
@F14 @sf(A)i(constan)o(t)f(of)g(the)h(form)f @F8 @sf(\015\\a\015)g @F14 @sf
(or)h @F8 @sf(\015\\x\015)f @F14 @sf(no)o(w)g(ma)o(y)g(ha)o(v)o(e)h
(di\013eren)o(t)f(meaning.)-1424 56 y(The)g(old)e(meaning,)h(if)f(an)o(y)l
(,)h(w)o(as)f(implemen)o(tation)g(dep)q(enden)q -1 x(t.)-1172 120 y(An)i 
@F8 @sf(L)f @F14 @sf(pre\014x)g(distinguishes)g(wide)g(c)o(haracter)f
(constan)o(ts.)19 b(\(See)d @F12 @sf(x)p @F14 @sf(2.2.1.)o(2.\))o -1383 
54 a 660 -2 z 52 27 a @F23 @sf(1)3 16 y @F17 @sf(-3)c @F20 @sf(is)g(an)i
(expression:)k(unary)c(min)o(us)f(with)f(op)q(erand)j(3.)-1014 124 y
30 @eop1

31 @bop0
@F8 @sf
[<
003FF8003FF8003FF800038000038000038000038000038000038000038003E3800FFB801F
FF803C1F80380F80700780700780E00380E00380E00380E00380E00380E003807007807007
80380F803E1F801FFF8007FB8001E380>
. 21 30 -2 19 24] 113 @dc

31 @eop0

0 0 31 @bop1 112 50 a @F10 @sf(3.1.)30 b(Lexical)14 b(Elemen)o(ts)1166 b 
@F14 @sf(31)-1651 145 y @F6 @sf(3.1.4)56 b(String)18 b(literals)-509 86 y 
@F14 @sf(String)j(literals)f(are)h(sp)q(eci\014ed)i(to)e(b)q(e)h(unmo)q
(di\014able.)39 b(This)22 b(sp)q(eci\014cation)f(allo)o(ws)f(imple-)-1651 
56 y(men)o(tations)c(to)h(share)g(copies)g(of)g(strings)f(with)g(iden)o
(tical)h(text,)f(to)h(place)g(string)f(literals)g(in)-1651 57 y(read-only)i
(memory)l(,)g(and)g(p)q(erform)f(certain)g(optimizations.)o 27 x(Ho)o(w)o
(ev)o(er,)g(string)g(literal)o(s)f(do)-1650 56 y(not)k(ha)o(v)o(e)f(the)g
(t)o(yp)q(e)h @F11 @sf(arr)n(ay)g(of)h(c)n(onst)e(char)p @F14 @sf(,)i(in)e
(order)g(to)g(a)o(v)o(oid)f(the)i(problems)f(of)g(p)q(oin)o(ter)-1651 57 y
(t)o(yp)q(e)c(c)o(hec)o(king,)f(particularly)e(with)i(library)f
(functions,)h(since)g(assigning)f(a)h @F11 @sf(p)n(ointer)i(to)f(c)n(onst)
-1651 56 y(char)21 b @F14 @sf(to)14 b(a)g(plain)g @F11 @sf(p)n(ointer)i
(to)g(char)k @F14 @sf(is)15 b(not)f(v)m(alid.)20 b(Those)14 b(mem)o(b)q
(ers)h(of)f(the)h(Committee)f(who)-1651 57 y(insisted)i(that)f(string)g
(literals)f(should)i(b)q(e)h(mo)q(di\014able)e(w)o(ere)h(con)o(ten)o(t)g
(to)f(ha)o(v)o(e)g(this)h(practice)-1651 56 y(designated)f(a)g(common)g
(extension)g(\(see)g(F.5.5\).)-799 57 y(Existing)f(co)q(de)i(whic)o(h)g
(mo)q(di\014es)f(string)f(literals)g(can)i(b)q(e)g(made)f(strictly)f
(conforming)g(b)o(y)-1650 56 y(replacing)h(the)g(string)g(literal)o 14 x
(with)f(an)i(initial)o(ized)e(static)g(c)o(haracter)h(arra)o(y)l(.)j(F)l
(or)d(instance,)-1431 93 y @F8 @sf(char)24 b(*p,)f(*make_temp\(char)f
(*str\);)-645 57 y(/*)h(...)h(*/)-311 56 y(p)g(=)g(make_temp\("tem)o
(pXXX"\);)o -407 57 a(/*)g(make_temp)f(overwrites)f(the)h(literal)g(*/)-907 
56 y(/*)h(with)f(a)h(unique)f(name)g(*/)-955 94 y @F14 @sf(can)16 b(b)q(e)g
(c)o(hanged)f(to:)-184 93 y @F8 @sf(char)24 b(*p,)f(*make_temp\(char)f
(*str\);)-645 57 y(/*)h(...)h(*/)-311 56 y({)72 56 y(static)f(char)g
(template[)g(])h(=)f("tempXXX";)-860 57 y(p)h(=)f(make_temp\()g(template)g
(\);)-717 56 y(})-144 94 y @F14 @sf(A)e(long)g(string)f(can)h(b)q(e)h(con)o
(tin)o(ued)f(across)f(m)o(ultiple)g(lines)h(b)o(y)g(using)g(the)g(bac)o
(kslash-)-1651 56 y(newline)g(line)e(con)o(tin)o(uation,)h(but)g(this)g
(practice)f(requires)h(that)g(the)g(con)o(tin)o(uation)f(of)g(the)-1650 
57 y(string)f(start)g(in)h(the)g(\014rst)f(p)q(osition)g(of)g(the)h(next)g
(line.)31 b(T)l(o)18 b(p)q(ermit)h(more)f(\015exible)h(la)o(y)o(out,)-1652 
56 y(and)g(to)e(solv)o(e)g(some)h(prepro)q(cessing)g(problems)f(\(see)h 
@F12 @sf(x)p @F14 @sf(3.8.3\),)f(the)h(Committ)o(ee)f(in)o(tro)q(duced)-1650 
57 y(string)f(literal)e(concatenation.)23 b(Tw)o(o)16 b(string)f(literals)g
(in)h(a)g(ro)o(w)f(are)h(pasted)h(together)e(\(with)-1651 56 y(no)g(n)o
(ull)f(c)o(haracter)g(in)h(the)g(middle\))f(to)g(mak)o(e)g(one)h(com)o
(bined)f(string)g(literal.)k(This)c(addition)-1651 57 y(to)g(the)h(C)f
(language)f(allo)o(ws)g(a)h(programmer)f(to)h(extend)h(a)f(string)f
(literal)f(b)q(ey)o(ond)j(the)g(end)g(of)-1651 56 y(a)f(ph)o(ysical)f
(line)h(without)f(ha)o(ving)g(to)g(use)h(the)g(bac)o(kslash-newline)g(mec)o
(hanism)f(and)h(thereb)o(y)-1650 56 y(destro)o(ying)g(the)h(inden)o
(tation)f(sc)o(heme)h(of)g(the)g(program.)k(An)c(explicit)f(concatenation)g
(op)q(er-)-1650 57 y(ator)e(w)o(as)g(not)g(in)o(tro)q(duced)h(b)q(ecause)h
(the)f(concatenation)f(is)g(a)g(lexical)g(construct)g(rather)h(than)-1651 
56 y(a)i(run-time)g(op)q(eration.)-427 69 y(without)g(concatenation:)-268 
106 y @F8 @sf(/*)24 b(say)f(the)h(column)f(is)h(this)f(wide)g(*/)-597 56 y
(alpha)g(=)h("abcdefghijklm\\)-742 57 y(nopqrstuvwxyz")e(;)-573 106 y 
@F14 @sf(with)15 b(concatenation:)1006 124 y @F15 @sf(RA)m(TIONALE)-1763 b
31 @eop1

32 @bop0
@F6 @sf
[<
03F8000FFF001C1F803007C07007E0FC03F0FC03F0FE03F8FE03F87C03F83803F80003F800
03F80003F00003F01803E01807E01E0FC01FFF0019FC001800001800001800001800001BC0
001FF8001FFE001FFF001FFF801FFFC01E01E0100020>
. 21 32 -3 31 28] 53 @dc
[<
0007FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80003F003F80
003F803F00001F807F00001FC07F00001FC07E00000FC0FE00000FE0FE00000FE0FE00000F
E0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07E
00000FC07F00001FC03F00001F803F00001F801F80003F001F80003F000FC0007E0007E000
FC0003F001F80000FC07E000003FFF80000007FC0000>
. 35 34 -3 33 42] 79 @dc
@F8 @sf
[<
7FFF00FFFF80FFFF807FFF00>
. 17 4 -3 15 24] 45 @dc

32 @eop0

0 0 32 @bop1 112 50 a @F14 @sf(32)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1460 145 y @F8 @sf(/*)24 b(say)f(the)h(column)f(is)h(this)f
(wide)g(*/)-597 57 y(alpha)g(=)h("abcdefghijklm")-360 56 y
("nopqrstuvwxyz";)-297 125 y @F7 @sf(QUIET)15 b(CHANGE)-876 84 y @F14 @sf
(A)d(string)f(of)g(the)h(form)f @F8 @sf("\\078")g @F14 @sf(is)g(v)m(alid,)h
(but)g(no)o(w)f(has)h(di\013eren)o(t)f(meaning.)18 b(\(See)-1422 56 y 
@F12 @sf(x)p @F14 @sf(3.1.3.\))400 125 y @F7 @sf(QUIET)d(CHANGE)-876 84 y 
@F14 @sf(A)22 b(string)f(of)g(the)h(form)f @F8 @sf("\\a")g @F14 @sf(or)g 
@F8 @sf("\\x")g @F14 @sf(no)o(w)h(has)f(di\013eren)o(t)g(meaning.)39 b
(\(See)-1422 56 y @F12 @sf(x)p @F14 @sf(3.1.3.\))400 125 y @F7 @sf(QUIET)
15 b(CHANGE)-876 84 y @F14 @sf(It)h(is)g(neither)g(required)g(nor)g
(forbidden)h(that)e(iden)o(tical)g(string)g(literals)g(b)q(e)h(rep-)-1422 
57 y(resen)o(ted)e(b)o(y)g(a)g(single)g(cop)o(y)g(of)f(the)h(string)f(in)h
(memory;)g(a)g(program)f(dep)q(ending)-1422 56 y(up)q(on)j(either)f(sc)o
(heme)g(ma)o(y)g(b)q(eha)o(v)o(e)g(di\013eren)o(tly)l(.)-903 129 y(An)20 b 
@F8 @sf(L)g @F14 @sf(pre\014x)g(distinguishes)f(wide)g(string)g(literals.)o 
33 x(A)g(pre\014x)h(\(as)f(opp)q(osed)i(to)e(su\016x\))-1651 57 y
(notation)d(w)o(as)g(adopted)h(so)g(that)f(a)h(translator)o 16 x(can)g
(kno)o(w)g(at)f(the)h(start)f(of)g(the)i(pro)q(cessing)-1651 56 y(of)e(a)g
(long)f(string)g(literal)f(whether)j(it)e(is)g(dealing)h(with)f(ordinary)g
(or)h(wide)g(c)o(haracters.)21 b(\(See)-1650 56 y @F12 @sf(x)q @F14 @sf
(2.2.1.)o(2.\))o -181 148 a @F6 @sf(3.1.5)56 b(Op)r(erators)-418 95 y 
@F14 @sf(Assignmen)o(t)13 b(op)q(erators)g(of)g(the)g(form)g @F8 @sf(=+)p 
@F14 @sf(,)g(describ)q(ed)h(as)f @F11 @sf(old)i(fashione)n(d)j @F14 @sf
(ev)o(en)13 b(in)h(K&R,)g(ha)o(v)o(e)-1651 56 y(b)q(een)j(dropp)q(ed.)-212 
61 y(The)g(form)f @F8 @sf(+=)g @F14 @sf(is)h(no)o(w)f(de\014ned)i(to)e(b)q
(e)h(a)g(single)f(tok)o(en,)g(not)g(t)o(w)o(o,)g(so)g(no)h(white)f(space)h
(is)-1651 57 y(p)q(ermitted)i(within)e(it;)i(no)g(comp)q(elling)e(case)i
(could)f(b)q(e)h(made)g(for)f(p)q(ermitting)f(suc)o(h)i(white)-1651 56 y
(space.)541 129 y @F7 @sf(QUIET)c(CHANGE)-876 85 y @F14 @sf(Expressions)i
(of)f(the)h(form)f @F8 @sf(x=-3)h @F14 @sf(c)o(hange)g(meaning)f(with)g
(the)h(loss)g(of)f(the)h(old-)-1423 56 y(st)o(yle)d(assignmen)o(t)h(op)q
(erators.)-655 197 y(The)k(op)q(erator)e @F8 @sf(#)h @F14 @sf(has)g(b)q
(een)h(added)g(in)f(prepro)q(cessing)g(statemen)o(ts:)25 b(within)17 b(a)h 
@F8 @sf(#define)f @F14 @sf(it)-1651 57 y(causes)f(the)f(macro)g(argumen)o
(t)f(follo)o(wi)o(ng)g(to)h(b)q(e)g(con)o(v)o(erted)g(to)g(a)g(string)f
(literal.)o -1355 61 a(The)22 b(op)q(erator)f @F8 @sf(##)h @F14 @sf(has)f
(also)g(b)q(een)i(added)g(in)f(prepro)q(cessing)g(statemen)o(ts:)32 b
(within)21 b(a)-1651 56 y @F8 @sf(#define)13 b @F14 @sf(it)f(causes)i(the)f
(tok)o(ens)g(on)g(either)g(side)g(to)g(b)q(e)h @F11 @sf(p)n(aste)n(d)k 
@F14 @sf(to)12 b(mak)o(e)h(a)g(single)g(new)g(tok)o(en.)-1651 57 y(See)j 
@F12 @sf(x)q @F14 @sf(3.8.3)o 14 x(for)f(further)g(discussion)g(of)f
(these)i(prepro)q(cessing)f(op)q(erators.)-1408 124 y
32 @eop1

33 @bop0
@F6 @sf
[<
00FF0003FFC00783E00F00F01E00F83E007C3C007C7C007E7C007E7C007EFC007EFC007EFC
007EFC007EFE007CFE007CFF00F8FD80F0FCFFE0FC7FC0FC08007C00007C00007E00F03E01
F83E01F81F01F80F01F807C0F003F07000FFE0001F80>
. 23 32 -2 31 28] 54 @dc
[<
FFFF8000FFFF800007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F0000007FFFF0007FFFFE007F007F007F0
01FC07F000FC07F0007E07F0007E07F0007F07F0007F07F0007F07F0007F07F0007F07F000
7E07F0007E07F000FC07F001FC07F007F0FFFFFFE0FFFFFF00>
. 32 34 -2 33 38] 80 @dc
@F6 @sf
[<
01E00003F00003F00003F00003F00003F00003F00003F00001F00001F00001F00000F00000
F00000F000007800007800003800001800001C00000C00000600C00300C00300C00180E000
C0E000607FFFF07FFFF87FFFF87FFFFC7FFFFE7FFFFE780000600000>
. 23 34 -3 33 28] 55 @dc
[<
FFFF83FFFEFFFF83FFFE07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0
001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001F
C007F0001FC007F0001FC007FFFFFFC007FFFFFFC007F0001FC007F0001FC007F0001FC007
F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F000
1FC007F0001FC007F0001FC0FFFF83FFFEFFFF83FFFE>
. 39 34 -2 33 44] 72 @dc
@F6 @sf
[<
01FF000FFFC01F01F03C0038780038F8001CF0001CF0001EF0001EF0003EF000FE7801FE78
07FC3C1FFC1E7FF807FFF003FFE007FFC00FFF801FFFC01FF9E03FE0F03F80783F00783E00
783C00781C00781C00F00E00F00703E003FFC000FE00>
. 23 32 -2 31 28] 56 @dc
[<
180FC0001C3FF8001EE07C001FC03E001F801F001F001F801F000F801F000FC01F000FC01F
000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F801F000F801F001F001F80
1E001FF07C001F3FF8001F0FE0001F0000001F0000001F0000001F0000001F0000001F0000
001F0000001F0000001F0000001F0000001F000000FF000000FF000000>
. 26 35 -2 34 31] 98 @dc
@F6 @sf
[<
03F8000FFE001C0F801E03C03F01E03F00F03F00F83F00F81E007C00007C00007C00207E07
FC7E0FFE7E1E037E3E01FE7C00FE7C00FEFC007EFC007EFC007EFC007EFC007CFC007CFC00
7C7C00787C00F83E00F01E01F00F83E007FF8001FE00>
. 23 32 -2 31 28] 57 @dc

33 @eop0

0 0 33 @bop1 112 50 a @F10 @sf(3.1.)35 b(Lexical)14 b(Elemen)o(ts)1161 b 
@F14 @sf(33)-1651 145 y @F6 @sf(3.1.6)56 b(Punctuators)-472 86 y @F14 @sf
(The)12 b(punctuator)f @F8 @sf(...)19 b @F14 @sf(\(ellipsis\))9 b(has)j(b)q
(een)g(added)g(to)f(denote)h(a)f(v)m(ariable)g(n)o(um)o(b)q(er)g(of)g
(trailing)-1652 56 y(argumen)o(ts)k(in)g(a)g(function)g(protot)o(yp)q(e.)k
(\(See)c @F12 @sf(x)q @F14 @sf(3.5.4.)o(3.)o(\))-996 98 y(The)j(constrain)o
(t)e(that)g(certain)g(punctuators)h(m)o(ust)g(o)q(ccur)g(in)g(pairs)g
(\(and)g(the)g(similar)e(con-)-1650 56 y(strain)o(t)j(on)h(certain)f(op)q
(erators)g(in)h @F12 @sf(x)p @F14 @sf(3.1.5\))e(only)i(applies)f(after)h
(prepro)q(cessing.)31 b(Syn)o(tactic)-1651 57 y(constrain)o(ts)14 b(are)h
(c)o(hec)o(k)o(ed)h(during)f(syn)o(tactic)f(analysis,)g(and)h(this)g
(follo)n(ws)f(prepro)q(cessing.)-1601 119 y @F6 @sf(3.1.7)56 b(Header)18 b
(names)-520 86 y @F14 @sf(Header)h(names)e(in)h @F8 @sf(#include)f @F14 @sf
(directiv)o(es)g(ob)q(ey)h(distinct)f(tok)o(enization)g(rules;)h(hence)h
(they)-1650 57 y(are)d(iden)o(ti\014ed)g(as)g(distinct)f(tok)o(ens.)22 b
(A)o(ttempting)14 b(to)i(treat)f(quote-enclosed)h(header)g(names)-1650 56 y
(as)f(string)f(literals)f(creates)i(a)f(con)o(torted)g(description)h(of)f
(prepro)q(cessing,)h(and)g(the)g(problems)-1651 57 y(of)i(treating)f
(angle-brac)o(k)o(et-enclosed)h(header)h(names)f(as)g(a)f(sequence)j(of)e
(C)g(tok)o(ens)f(is)h(ev)o(en)-1650 56 y(more)e(sev)o(ere.)-246 120 y 
@F6 @sf(3.1.8)56 b(Prepro)r(cessing)17 b(n)n(um)n(b)r(ers)-739 86 y @F14 @sf
(The)12 b(notion)f(of)g(prepro)q(cessing)g(n)o(um)o(b)q(ers)h(has)f(b)q
(een)i(in)o(tro)q(duced)e(to)g(simplify)f(the)i(description)-1651 56 y(of)
18 b(prepro)q(cessing.)28 b(It)18 b(pro)o(vides)g(a)f(means)h(of)f
(talking)g(ab)q(out)h(the)g(tok)o(enizatio)o(n)f(of)h(strings)-1652 56 y
(that)j(lo)q(ok)f(lik)o(e)h(n)o(um)o(b)q(ers,)h(or)f(initial)o 20 x
(substrings)g(of)f(n)o(um)o(b)q(ers,)j(prior)d(to)h(their)f(seman)o(tic)
-1651 57 y(in)o(terpretation.)d(In)12 b(the)g(in)o(terests)e(of)h(k)o
(eeping)g(the)g(description)g(simple,)g(o)q(ccasional)g(spurious)-1651 56 y
(forms)h(are)g(scanned)h(as)f(prepro)q(cessing)g(n)o(um)o(b)q(ers)h(|)g 
@F8 @sf(0x123E+1)e @F14 @sf(is)h(a)g(single)f(tok)o(en)h(under)h(the)-1650 
57 y(rules.)19 b(The)13 b(Committee)f(felt)g(that)g(it)g(w)o(as)f(b)q
(etter)i(to)f(tolerate)g(suc)o(h)h(anomalies)e(than)h(burden)-1649 56 y
(the)17 b(prepro)q(cessor)f(with)f(a)g(more)h(exact,)g(and)g(exacting,)f
(lexical)g(sp)q(eci\014cation.)22 b(It)16 b(felt)f(that)-1651 57 y(this)h
(anomaly)f(w)o(as)g(no)h(w)o(orse)f(than)h(the)g(principle)g(under)h(whic)o
(h)f(the)g(c)o(haracters)f @F8 @sf(a+++++b)-1651 56 y @F14 @sf(are)f(tok)o
(enized)f(as)g @F8 @sf(a)24 b(++)g(++)f(+)h(b)13 b @F14 @sf(\(an)g(in)o(v)m
(alid)g(expression\),)g(ev)o(en)h(though)f(the)h(tok)o(enization)-1652 57 y 
@F8 @sf(a)24 b(++)g(+)g(++)f(b)15 b @F14 @sf(w)o(ould)f(yield)g(a)g(syn)o
(tactically)f(correct)h(expression.)20 b(In)15 b(b)q(oth)g(cases,)f
(exercise)-1650 56 y(of)h(reasonable)g(precaution)g(in)g(co)q(ding)g(st)o
(yle)f(a)o(v)o(oids)g(surprises.)-1128 120 y @F6 @sf(3.1.9)56 b(Commen)n
(ts)-433 86 y @F14 @sf(The)18 b(Committee)f(considered)h(prop)q(osals)e
(to)h(allo)o(w)f(commen)o(ts)h(to)g(nest.)27 b(The)18 b(main)f(argu-)-1651 
56 y(men)o(t)g(for)f(nesting)g(commen)o(ts)g(is)g(that)g(it)g(w)o(ould)g
(allo)o(w)f(programmers)g(to)h(\\commen)o(t)g(out")-1651 57 y(co)q(de.)21 b
(The)16 b(Committee)e(rejected)i(this)e(prop)q(osal)h(on)g(the)h(grounds)f
(that)g(commen)o(ts)f(should)-1650 56 y(b)q(e)19 b(used)g(for)e(adding)h
(do)q(cumen)o(tation)g(to)f(a)h(program,)f(and)h(that)g(preferable)g(mec)o
(hanisms)-1651 56 y(already)d(exist)g(for)f(source)h(co)q(de)h(exclusion.)k
(F)l(or)14 b(example,)-862 83 y @F8 @sf(#if)24 b(0)-120 57 y(/*)g(this)f
(code)h(is)f(bracketed)g(out)g(because)g(...)h(*/)-1051 56 y
(code_to_be_exclude)o(d\(\))p(;)-527 57 y(#endif)-335 83 y @F14 @sf
(Prepro)q(cessing)16 b(directiv)o(es)e(suc)o(h)h(as)g(this)g(prev)o(en)o
(t)g(the)g(enclosed)h(co)q(de)g(from)e(b)q(eing)i(scanned)-1650 56 y(b)o
(y)j(later)e(translatio)o(n)g(phases.)30 b(Brac)o(k)o(eted)18 b(material)f
(can)h(include)h(commen)o(ts)f(and)g(other,)-1651 57 y(nested,)e(regions)e
(of)h(brac)o(k)o(eted)g(co)q(de.)730 124 y @F15 @sf(RA)m(TIONALE)-1763 b
33 @eop1

34 @bop0
@F6 @sf
[<
FFE00FFFF8FFE00FFFF80600007F000600007F00030000FE00030000FE00038001FE000180
01FC00018001FC0000FFFFF80000FFFFF80000E007F800006007F00000600FF00000300FE0
0000300FE00000381FE00000181FC00000183FC000000C3F8000000C3F8000000E7F800000
067F00000006FF00000003FE00000003FE00000003FE00000001FC00000001FC00000000F8
00000000F800000000F8000000007000000000700000>
. 37 34 -2 33 42] 65 @dc
@F13 @sf
[<
000001C00000078000001E00000078000001E00000078000000E00000038000000F0000003
C000000F0000003C000000F0000000F00000003C0000000F00000003C0000000F000000038
0000000E0000000780000001E0000000780000001E0000000780000001C0>
. 26 26 -4 23 35] 60 @dc

34 @eop0

0 0 34 @bop1 112 50 a @F14 @sf(34)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1580 145 y @F14 @sf(Another)15 b(w)o(a)o(y)f(of)h
(accomplishing)f(these)i(goals)e(is)g(with)h(an)g @F8 @sf(if)g @F14 @sf
(statemen)o(t:)-1211 105 y @F8 @sf(if)24 b(\(0\))f({)-95 56 y(/*)g(this)h
(code)f(is)h(bracketed)e(out)i(because)f(...)g(*/)-1050 57 y
(code_to_be_exc)o(luded\(\))o(;)-622 56 y(})-215 103 y @F14 @sf(Man)o(y)
15 b(mo)q(dern)h(compilers)e(will)g(generate)h(no)g(co)q(de)h(for)e(this)h 
@F8 @sf(if)g @F14 @sf(statemen)o(t.)-1363 156 y @F4 @sf(3.2)70 b(Con)n(v)n
(ersions)-516 107 y @F6 @sf(3.2.1)56 b(Arithmetic)o 18 x(op)r(erands)-680 
90 y @F9 @sf(3.2.1.1)c(Characters)17 b(and)h(in)o(tegers)-748 90 y @F14 @sf
(Since)e(the)g(publication)e(of)h(K&R,)h(a)f(serious)g(div)o(ergence)h
(has)f(o)q(ccurred)h(among)e(implemen-)-1650 57 y(tations)h(of)g(C)g(in)h
(the)g(ev)o(olution)e(of)h(in)o(tegral)f(promotion)g(rules.)21 b(Implemen)o
(tations)15 b(fall)f(in)o(to)-1651 56 y(t)o(w)o(o)20 b(ma)s(jor)f(camps,)i
(whic)o(h)g(ma)o(y)f(b)q(e)h(c)o(haracterized)f(as)g @F11 @sf(unsigne)n(d)g
(pr)n(eserving)k @F14 @sf(and)c @F11 @sf(value)-1650 57 y(pr)n(eserving)p 
@F14 @sf(.)32 b(The)20 b(di\013erence)f(b)q(et)o(w)o(een)h(these)g
(approac)o(hes)f(cen)o(ters)h(on)f(the)h(treatmen)o(t)e(of)-1651 56 y 
@F8 @sf(unsigned)23 b(char)d @F14 @sf(and)h @F8 @sf(unsigned)h(short)p 
@F14 @sf(,)f(when)g(widened)g(b)o(y)f(the)h @F11 @sf(inte)n(gr)n(al)f(pr)n
(omotions)p @F14 @sf(,)-1651 57 y(but)c(the)f(decision)g(has)g(an)g
(impact)g(on)g(the)g(t)o(yping)g(of)f(constan)o(ts)h(as)f(w)o(ell)h(\(see)g 
@F12 @sf(x)p @F14 @sf(3.1.3.2)o(\).)-1515 58 y(The)g @F11 @sf(unsigne)n(d)g
(pr)n(eserving)j @F14 @sf(approac)o(h)c(calls)g(for)g(promoting)g(the)h(t)o
(w)o(o)e(smaller)h(unsigned)-1650 57 y(t)o(yp)q(es)e(to)e @F8 @sf
(unsigned)23 b(int)p @F14 @sf(.)18 b(This)11 b(is)g(a)g(simple)f(rule,)i
(and)f(yields)g(a)g(t)o(yp)q(e)g(whic)o(h)g(is)g(indep)q(enden)q -1 x(t)
-1650 56 y(of)k(execution)h(en)o(vironmen)o(t.)-445 59 y(The)h @F11 @sf
(value)h(pr)n(eserving)i @F14 @sf(approac)o(h)c(calls)g(for)g(promoting)g
(those)g(t)o(yp)q(es)h(to)f @F8 @sf(signed)23 b(int)p @F14 @sf(,)-1651 56 y
(if)14 b(that)f(t)o(yp)q(e)i(can)f(prop)q(erly)g(represen)o(t)g(all)f(the)h
(v)m(alues)g(of)g(the)g(original)o 13 x(t)o(yp)q(e,)g(and)g(otherwise)-1651 
57 y(for)19 b(promoting)f(those)h(t)o(yp)q(es)g(to)g @F8 @sf(unsigned)j
(int)p @F14 @sf(.)32 b(Th)o(us,)20 b(if)f(the)g(execution)g(en)o(vironmen)o
(t)-1651 56 y(represen)o(ts)i @F8 @sf(short)f @F14 @sf(as)h(something)f
(smaller)f(than)i @F8 @sf(int)p @F14 @sf(,)g @F8 @sf(unsigned)i(short)d 
@F14 @sf(b)q(ecomes)h @F8 @sf(int)p @F14 @sf(;)-1651 57 y(otherwise)15 b
(it)f(b)q(ecomes)i @F8 @sf(unsigned)23 b(int)p @F14 @sf(.)-658 58 y(Both)f
(sc)o(hemes)f(giv)o(e)g(the)h(same)f(answ)o(er)h(in)f(the)h(v)m(ast)f(ma)s
(jorit)n(y)f(of)i(cases,)g(and)g(b)q(oth)-1650 57 y(giv)o(e)f(the)h(same)f
(e\013ectiv)o(e)g(result)f(in)i(ev)o(en)g(more)f(cases)g(in)g(implemen)o
(tations)f(with)h(t)o(w)o(os-)-1652 56 y(complemen)o(t)13 b(arithmetic)f
(and)h(quiet)g(wraparound)f(on)h(signed)g(o)o(v)o(er\015o)o(w)f(|)h(that)g
(is,)f(in)h(most)-1651 57 y(curren)o(t)f(implemen)o(tations.)17 b(In)12 b
(suc)o(h)g(implemen)o(tations,)f(di\013erences)h(b)q(et)o(w)o(een)g(the)f
(t)o(w)o(o)g(only)-1651 56 y(app)q(ear)16 b(when)g(these)f(t)o(w)o(o)f
(conditions)g(are)h(b)q(oth)g(true:)-910 103 y(1.)22 b(An)c(expression)f
(in)o(v)o(olvi)o(ng)f(an)h @F8 @sf(unsigned)23 b(char)17 b @F14 @sf(or)f 
@F8 @sf(unsigned)23 b(short)16 b @F14 @sf(pro)q(duces)i(an)-1536 56 y 
@F8 @sf(int)p @F14 @sf(-wide)e(result)h(in)f(whic)o(h)h(the)f(sign)h(bit)f
(is)g(set:)22 b(i.e.,)16 b(either)h(a)f(unary)h(op)q(eration)e(on)-1536 
57 y(suc)o(h)k(a)f(t)o(yp)q(e,)h(or)f(a)g(binary)g(op)q(eration)g(in)g
(whic)o(h)g(the)h(other)f(op)q(erand)h(is)f(an)g @F8 @sf(int)g @F14 @sf
(or)-1537 56 y(\\narro)o(w)o(er")13 b(t)o(yp)q(e.)-393 103 y(2.)22 b(The)
14 b(result)f(of)g(the)g(preceding)h(expression)f(is)g(used)h(in)f(a)g
(con)o(text)g(in)g(whic)o(h)h(its)e(signed-)-1536 56 y(ness)k(is)e
(signi\014can)o(t:)-302 103 y @F12 @sf(\017)22 b @F8 @sf(sizeof\(int\))g 
@F13 @sf(<)j @F8 @sf(sizeof\(long\))15 b @F14 @sf(and)j(it)e(is)h(in)g(a)g
(con)o(text)g(where)g(it)g(m)o(ust)g(b)q(e)-1436 57 y(widened)f(to)e(a)h
(long)g(t)o(yp)q(e,)g(or)-851 124 y
34 @eop1

35 @bop0
@F22 @sf
[<
FFF07FF03FF0101808080C0806000300018000C000600070007000384038E038C038803040
7030E00F80>
. 13 21 -2 20 18] 50 @dc
@F23 @sf
[<
FFC07FC0202010200C0006000300018000C000600060C060806040C061801F00>
. 11 16 -1 15 15] 50 @dc
@F20 @sf
[<
0020004000003000C000007000E000007000E000007801E000007801E00000E801D00000E4
03900000E403900001C403880001C403880001C20708000382070400038207040003810E04
0007010E020007010E020007009C020007009C02000E009C01000E007801000E007801001C
007800801C007800803C007801C0FF83FF0FF0>
. 36 26 -1 25 39] 87 @dc
[<
00800001C00001C00001C00003A00003A0000790000710000710000E08000E08001E0C001C
04001C04003C0600FF1F80>
. 17 16 -1 15 20] 118 @dc
[<
10F0001B0C001E07001C03001C03801C01C01C01C01C01C01C01C01C01C01C01C01C01801C
03801E07001F0E001CF8001C00001C00001C00001C00001C00001C00001C00001C00001C00
00FC0000>
. 18 26 -1 25 21] 98 @dc
[<
7FE00E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00E000E000E
000E000E000E000E100738031801F0>
. 13 26 0 25 12] 102 @dc
[<
FF801C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C00FC00>
. 9 26 0 25 11] 108 @dc

35 @eop0

0 0 35 @bop1 112 50 a @F10 @sf(3.2.)35 b(Con)o(v)o(ersions)1260 b @F14 @sf
(35)-1482 145 y @F12 @sf(\017)22 b @F14 @sf(it)c(is)h(the)g(left)g(op)q
(erand)g(of)g(the)g(righ)o(t-shift)e(op)q(erator)i(\(in)f(an)h(implemen)o
(tation)-1438 57 y(where)d(this)e(shift)h(is)f(de\014ned)j(as)e
(arithmetic\),)o 14 x(or)-917 67 y @F12 @sf(\017)22 b @F14 @sf(it)15 b(is)f
(either)h(op)q(erand)h(of)f @F8 @sf(/)p @F14 @sf(,)f @F8 @sf(%)p @F14 @sf
(,)h @F8 @sf(<)p @F14 @sf(,)g @F8 @sf(<=)p @F14 @sf(,)f @F8 @sf(>)p @F14 @sf
(,)h(or)f @F8 @sf(>=)p @F14 @sf(.)-989 87 y(In)k(suc)o(h)f(circumstances)g
(a)g(gen)o(uine)h(am)o(biguit)o(y)d(of)i(in)o(terpretatio)o(n)f(arises.)
26 b(The)17 b(result)-1651 57 y(m)o(ust)11 b(b)q(e)h(dubb)q(ed)g @F11 @sf
(questionably)g(signe)n(d)p @F14 @sf(,)f(since)g(a)g(case)g(can)g(b)q(e)h
(made)f(for)f(either)h(the)g(signed)g(or)-1651 56 y(unsigned)16 b(in)o
(terpretation.)j(Exactly)c(the)g(same)g(am)o(biguit)o(y)f(arises)g(whenev)o
(er)i(an)g @F8 @sf(unsigned)-1652 57 y(int)d @F14 @sf(confron)o(ts)g(a)g 
@F8 @sf(signed)23 b(int)12 b @F14 @sf(across)h(an)g(op)q(erator,)g(and)g
(the)g @F8 @sf(signed)23 b(int)13 b @F14 @sf(has)g(a)g(negativ)o(e)-1651 
56 y(v)m(alue.)29 b(\(Neither)18 b(sc)o(heme)g(do)q(es)h(an)o(y)f(b)q
(etter,)g(or)g(an)o(y)f(w)o(orse,)h(in)g(resolving)f(the)h(am)o(biguit)o
(y)-1652 57 y(of)k(this)f(confron)o(tation.\))o 39 x(Suddenly)l(,)k(the)d
(negativ)o(e)e(signed)i @F8 @sf(int)g @F14 @sf(b)q(ecomes)g(a)g(v)o(ery)f
(large)-1651 56 y @F8 @sf(unsigned)i(int)p @F14 @sf(,)14 b(whic)o(h)h(ma)o
(y)f(b)q(e)i(surprising)e(|)h(or)f(it)g(ma)o(y)g(b)q(e)i(exactly)e(what)g
(is)g(desired)h(b)o(y)-1650 57 y(a)h(kno)o(wledgable)e(programmer.)20 b
(Of)c(course,)32 b @F11 @sf(al)r(l)17 b(of)f(these)h(ambiguities)f(c)n(an)g
(b)n(e)g(avoide)n(d)h(by)-1650 56 y(a)g(judicious)g(use)f(of)g(c)n(asts.)
-404 57 y @F14 @sf(One)h(of)g(the)f(imp)q(ortan)o(t)g(outcomes)g(of)g
(exploring)g(this)g(problem)g(is)h(the)f(understanding)-1650 56 y(that)j
(high-qualit)o(y)e(compilers)h(migh)o(t)g(do)h(w)o(ell)f(to)g(lo)q(ok)g
(for)g(suc)o(h)h(questionable)g(co)q(de)g(and)-1650 56 y(o\013er)11 b
(\(optional\))f(diagnostics,)h(and)h(that)f(conscien)o(tious)g
(instructors)f(migh)o(t)h(do)g(w)o(ell)g(to)g(w)o(arn)-1651 57 y
(programmers)j(of)h(the)g(problems)g(of)g(implicit)f(t)o(yp)q(e)h(con)o(v)o
(ersions.)-1089 56 y(The)j(unsigned)g(preserving)f(rules)h(greatly)e
(increase)h(the)h(n)o(um)o(b)q(er)g(of)f(situations)f(where)-1650 57 y 
@F8 @sf(unsigned)23 b(int)14 b @F14 @sf(confron)o(ts)g @F8 @sf(signed)23 b
(int)14 b @F14 @sf(to)g(yield)g(a)g(questionably)f(signed)i(result,)f
(whereas)-1651 56 y(the)g(v)m(alue)g(preserving)g(rules)f(minimize)g(suc)o
(h)h(confron)o(tatio)o(ns.)k(Th)o(us,)c(the)g(v)m(alue)g(preserving)-1651 
57 y(rules)e(w)o(ere)g(considered)h(to)e(b)q(e)i(safer)f(for)f(the)h(no)o
(vice,)h(or)e(un)o(w)o(ary)l(,)h(programmer.)18 b(After)11 b(m)o(uc)o(h)
-1650 56 y(discussion,)h(the)h(Committ)o(ee)e(decided)i(in)f(fa)o(v)o(or)f
(of)g(v)m(alue)i(preserving)f(rules,)g(despite)g(the)g(fact)-1651 57 y
(that)j(the)g(UNIX)h(C)f(compilers)f(had)i(ev)o(olv)o(ed)e(in)h(the)h
(direction)e(of)h(unsigned)h(preserving.)-931 85 y @F7 @sf(QUIET)f(CHANGE)
-876 72 y @F14 @sf(A)k(program)f(that)h(dep)q(ends)h(up)q(on)g(unsigned)g
(preserving)e(arithmetic)g(con)o(v)o(er-)-1423 57 y(sions)f(will)f(b)q
(eha)o(v)o(e)i(di\013eren)o(tly)l(,)f(probably)h(without)e(complain)o(t.)
26 b(This)17 b(is)g(con-)-1422 56 y(sidered)g(the)f(most)g(serious)g
(seman)o(tic)g(c)o(hange)g(made)h(b)o(y)f(the)h(Committee)e(to)h(a)-1423 
56 y(widespread)f(curren)o(t)g(practice.)-677 124 y(The)h(Standard)f
(clari\014es)g(that)f(the)h(in)o(tegral)f(promotion)g(rules)h(also)f
(apply)h(to)f(bit-\014elds.)-1583 117 y @F9 @sf(3.2.1.2)52 b(Signed)17 b
(and)h(unsigned)f(in)o(tegers)-870 86 y @F14 @sf(Precise)f(rules)g(are)g
(no)o(w)f(pro)o(vided)h(for)g(con)o(v)o(erting)e(to)i(and)g(from)f
(unsigned)i(in)o(tegers.)k(On)c(a)-1651 56 y(t)o(w)o(os-complemen)o(t)11 b
(mac)o(hine,)i(the)f(op)q(eration)g(is)g(still)f(virtual)g(\(no)h(c)o
(hange)g(of)g(represen)o(tation)-1651 57 y(is)j(required\),)g(but)g(the)g
(rules)g(are)g(no)o(w)g(stated)g(indep)q(enden)o(t)h(of)f(represen)o
(tation.)-1438 117 y @F9 @sf(3.2.1.3)52 b(Floating)17 b(and)h(in)o(tegral)
-683 86 y @F14 @sf(There)e(w)o(as)e(strong)g(agreemen)o(t)g(that)h
(\015oating)f(v)m(alues)h(should)g(truncate)g(to)o(w)o(ar)o(d)f(zero)h
(when)-1650 56 y(con)o(v)o(erted)h(to)e(an)h(in)o(tegral)f(t)o(yp)q(e,)h
(the)h(sp)q(eci\014cation)f(adopted)g(in)g(the)h(Standard.)k(Although)-1651 
57 y(the)c(Base)f(Do)q(cumen)o(t)h(p)q(ermitted)f(negativ)o(e)f(\015oating)h
(v)m(alues)g(to)g(truncate)g(a)o(w)o(a)o(y)f(from)h(zero,)-1651 56 y(no)f
(Committee)f(mem)o(b)q(er)g(knew)h(of)g(curren)o(t)f(hardw)o(are)g(that)g
(functions)h(in)g(suc)o(h)g(a)f(manner.)p -16 w @F22 @sf(2)-1649 41 y 660 
-2 z 52 27 a @F23 @sf(2)3 16 y @F20 @sf(W)m(e)g(ha)o(v)o(e)g(since)g(b)q
(een)h(informed)f(of)g(one)g(suc)o(h)h(implemen)o(tation.)356 124 y @F15 @sf
(RA)m(TIONALE)-1763 b
35 @eop1

36 @bop0
@F11 @sf
[<
FFFFFE000F001F000780070007800100078001800780008003C0004003C0004003C0002003
C0002001E0001001E0200001E0200001E0200000F0300000F0300000FFF00000F030000078
1800007808000078080000780808003C0004003C0004003C0004003C0004001E0004001E00
04001E000C001E001C01FFFFFE>
. 31 31 -3 30 31] 69 @dc

36 @eop0

0 0 36 @bop1 112 50 a @F14 @sf(36)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F9 @sf(3.2.1.4)52 b(Floating)17 b(t)o(yp)q(es)
-529 100 y @F14 @sf(The)e(Standard,)f(unlik)o(e)h(the)f(Base)h(Do)q(cumen)o
(t,)f(do)q(es)h(not)f(require)g(rounding)g(in)h(the)f @F8 @sf(double)-1651 
56 y @F14 @sf(to)g @F8 @sf(float)g @F14 @sf(con)o(v)o(ersion.)19 b(Some)c
(widely)f(used)h(IEEE)g(\015oating)f(p)q(oin)o(t)g(pro)q(cessor)g(c)o
(hips)h(con)o(trol)-1652 57 y(\015oating)j(to)f(in)o(tegral)f(con)o(v)o
(ersion)i(with)f(the)h(same)g(mo)q(de)g(bits)g(as)f(for)h
(double-precision)g(to)-1651 56 y(single-precision)f(con)o(v)o(ersion;)g
(since)g(truncation-to)o(w)o(a)o(rd-zero)f(is)h(the)g(appropriate)f
(setting)-1651 56 y(for)g(C)f(in)h(the)g(former)f(case,)g(it)g(w)o(ould)g
(b)q(e)i(exp)q(ensiv)o(e)f(to)f(require)h(suc)o(h)g(implemen)o(tations)e
(to)-1651 57 y(round)i(to)e @F8 @sf(float)p @F14 @sf(.)-320 160 y @F9 @sf
(3.2.1.5)52 b(Usual)17 b(arithmetic)g(con)o(v)o(ersi)o(ons)-863 100 y 
@F14 @sf(The)k(rules)f(in)g(the)g(Standard)g(for)g(these)h(con)o(v)o
(ersions)e(are)h(sligh)o(t)f(mo)q(di\014cations)g(of)h(those)-1651 56 y
(in)f(the)g(Base)g(Do)q(cumen)o(t:)28 b(the)19 b(mo)q(di\014cations)f
(accommo)q(date)g(the)h(added)h(t)o(yp)q(es)f(and)g(the)-1650 57 y(v)m
(alue)i(preserving)f(rules)g(\(see)g @F12 @sf(x)p @F14 @sf(3.2.1.)o(1\).)o 
34 x(Explicit)f(license)h(has)g(b)q(een)h(added)g(to)f(p)q(erform)-1651 
56 y(calculations)c(in)h(a)f(\\wider")g(t)o(yp)q(e)h(than)g(absolutely)f
(necessary)l(,)h(since)g(this)f(can)h(sometimes)-1651 57 y(pro)q(duce)k
(smaller)c(and)j(faster)e(co)q(de)i(\(not)e(to)h(men)o(tion)f(the)h
(correct)g(answ)o(er)g(more)f(often\).)-1651 56 y(Calculations)c(can)h
(also)f(b)q(e)i(p)q(erformed)g(in)f(a)f(\\narro)o(w)o(er")g(t)o(yp)q(e,)h
(b)o(y)g(the)g @F11 @sf(as)h(if)25 b @F14 @sf(rule,)14 b(so)h(long)-1651 
57 y(as)i(the)h(same)f(end)g(result)g(is)g(obtained.)52 b @F11 @sf
(Explicit)18 b(c)n(asting)f(c)n(an)g(always)h(b)n(e)g(use)n(d)g(to)g
(obtain)-1650 56 y(exactly)f(the)f(interme)n(diate)g(typ)n(es)g(r)n(e)n
(quir)n(e)n(d.)-701 64 y @F14 @sf(The)i(Committee)f(relaxed)h(the)g
(requiremen)o(t)f(that)g @F8 @sf(float)g @F14 @sf(op)q(erands)i(b)q(e)f
(con)o(v)o(erted)g(to)-1651 56 y @F8 @sf(double)p @F14 @sf(.)i(An)15 b
(implemen)o(tation)e(ma)o(y)i(still)f(c)o(ho)q(ose)h(to)f(con)o(v)o(ert.)
-461 142 y @F7 @sf(QUIET)h(CHANGE)-876 89 y @F14 @sf(Expressions)f(with)g 
@F8 @sf(float)g @F14 @sf(op)q(erands)h(ma)o(y)e(no)o(w)h(b)q(e)i(computed)f
(at)e(lo)o(w)o(er)h(preci-)-1423 56 y(sion.)19 b(The)c(Base)g(Do)q(cumen)o
(t)f(sp)q(eci\014ed)i(that)e(all)g(\015oating)f(p)q(oin)o(t)h(op)q
(erations)g(b)q(e)-1422 57 y(done)i(in)f @F8 @sf(double)p @F14 @sf(.)-433 
162 y @F6 @sf(3.2.2)56 b(Other)18 b(op)r(erands)-555 99 y @F9 @sf(3.2.2.1)
52 b(Lv)m(alues)17 b(and)h(function)g(designators)-952 100 y @F14 @sf(A)f
(di\013erence)g(of)g(opinion)f(within)g(the)h(C)f(comm)o(unit)o(y)g(has)h
(cen)o(tered)g(around)g(the)g(meaning)-1651 56 y(of)e @F11 @sf(lvalue)p 
@F14 @sf(,)g(one)h(group)f(considering)g(an)g(lv)m(alue)g(to)g(b)q(e)h(an)o
(y)f(kind)g(of)g(ob)s(ject)g(lo)q(cator,)f(another)-1651 57 y(group)g
(holding)g(that)f(an)i(lv)m(alue)f(is)f(meaningful)h(on)g(the)g(left)g
(side)g(of)g(an)g(assigning)f(op)q(erator.)-1652 56 y(The)i(Committee)e
(has)h(adopted)h(the)f(de\014nition)h(of)f(lv)m(alue)g(as)g(an)g(ob)s
(ject)g(lo)q(cator.)k(The)d(term)-1651 57 y @F11 @sf(mo)n(di\014able)h
(lvalue)i @F14 @sf(is)d(used)h(for)f(the)g(second)h(of)e(the)i(ab)q(o)o(v)o
(e)e(concepts.)-1159 63 y(The)19 b(role)f(of)g(arra)o(y)f(ob)s(jects)h
(has)h(b)q(een)g(a)g(classic)e(source)i(of)f(confusion)h(in)f(C,)g(in)g
(large)-1651 57 y(part)f(b)q(ecause)g(of)g(the)f(n)o(umerous)h(con)o
(texts)f(in)g(whic)o(h)h(an)g(arra)o(y)e(reference)i(is)g(con)o(v)o(erted)f
(to)-1651 56 y(a)i(p)q(oin)o(ter)g(to)g(its)f(\014rst)h(elemen)o(t.)29 b
(While)18 b(this)f(con)o(v)o(ersion)h(neatly)f(handles)i(the)f(seman)o
(tics)-1651 57 y(of)h(subscripting,)g(the)g(fact)g(that)f @F8 @sf(a[i])g 
@F14 @sf(is)h(itself)f(a)g(mo)q(di\014able)h(lv)m(alue)g(while)g @F8 @sf
(a)f @F14 @sf(is)h(not)g(has)-1651 56 y(puzzled)h(man)o(y)e(studen)o(ts)g
(of)g(the)h(language.)28 b(A)19 b(more)f(precise)g(description)g(has)h
(therefore)-1651 57 y(b)q(een)e(incorp)q(orated)d(in)i(the)f(Standard,)g
(in)g(the)g(hop)q(es)h(of)e(com)o(batting)g(this)h(confusion.)-1665 124 y
36 @eop1

37 @bop0

37 @eop0
0 0 37 @bop1 112 50 a @F10 @sf(3.2.)35 b(Con)o(v)o(ersions)1260 b @F14 @sf
(37)-1651 145 y @F9 @sf(3.2.2.2)52 b @F8 @sf(void)-297 88 y @F14 @sf(The)
14 b(description)e(of)g(op)q(erators)g(and)h(expressions)g(is)f(simpli\014ed)g
(b)o(y)h(sa)o(ying)f(that)g @F8 @sf(void)g @F14 @sf(yields)-1651 56 y(a)h
(v)m(alue,)g(with)f(the)h(understanding)g(that)f(the)h(v)m(alue)g(has)f
(no)h(represen)o(tation,)f(hence)i(requires)-1651 57 y(no)i(storage.)-220 
125 y @F9 @sf(3.2.2.3)52 b(P)o(oin)o(ters)o -391 87 a @F14 @sf(C)22 b(has)f
(no)o(w)h(b)q(een)g(implemen)o(ted)g(on)f(a)h(wide)f(range)h(of)f(arc)o
(hitectures.)38 b(While)21 b(some)h(of)-1651 57 y(these)14 b(arc)o
(hitectures)f(feature)g(uniform)g(p)q(oin)o(ters)g(whic)o(h)g(are)h(the)f
(size)h(of)f(some)g(in)o(teger)g(t)o(yp)q(e,)-1651 56 y(maximally)18 b(p)q
(ortable)h(co)q(de)i(ma)o(y)e(not)g(assume)h(an)o(y)f(necessary)h(corresp)q
(ondence)h(b)q(et)o(w)o(een)-1650 57 y(di\013eren)o(t)15 b(p)q(oin)o(ter)g
(t)o(yp)q(es)g(and)g(the)g(in)o(tegral)f(t)o(yp)q(es.)-836 57 y(The)20 b
(use)h(of)e @F8 @sf(void)24 b(*)19 b @F14 @sf(\(\\p)q(oin)o(ter)g(to)h(v)o
(oid"\))e(as)i(a)g(generic)g(ob)s(ject)f(p)q(oin)o(ter)h(t)o(yp)q(e)g(is)f
(an)-1650 56 y(in)o(v)o(en)o(tion)g(of)g(the)g(Committee.)32 b(Adoption)
19 b(of)g(this)g(t)o(yp)q(e)h(w)o(as)e(stim)o(ulated)g(b)o(y)i(the)f
(desire)-1650 57 y(to)13 b(sp)q(ecify)h(function)g(protot)o(yp)q(e)f
(argumen)o(ts)g(that)g(either)g(quietly)g(con)o(v)o(ert)g(arbitrary)f(p)q
(oin)o(t-)-1651 56 y(ers)18 b(\(as)f(in)g @F8 @sf(fread)p @F14 @sf(\))g
(or)g(complain)g(if)g(the)g(argumen)o(t)g(t)o(yp)q(e)h(do)q(es)g(not)f
(exactly)g(matc)o(h)g(\(as)g(in)-1651 57 y @F8 @sf(strcmp)p @F14 @sf(\).)h
(Nothing)10 b(is)h(said)f(ab)q(out)h(p)q(oin)o(ters)g(to)f(functions,)i
(whic)o(h)f(ma)o(y)f(b)q(e)i(incommensurate)-1651 56 y(with)j(ob)s(ject)g
(p)q(oin)o(ters)f(and/or)h(in)o(tegers.)-664 57 y(Since)e(p)q(oin)o(ters)f
(and)g(in)o(tegers)f(are)h(no)o(w)g(considered)h(incommensurate,)f(the)g
(only)g(in)o(teger)-1651 57 y(that)i(can)g(b)q(e)h(safely)e(con)o(v)o
(erted)h(to)f(a)h(p)q(oin)o(ter)f(is)h(the)g(constan)o(t)f(0.)19 b(The)14 b
(result)g(of)g(con)o(v)o(erting)-1652 56 y(an)o(y)h(other)g(in)o(teger)g
(to)f(a)h(p)q(oin)o(ter)g(is)f(mac)o(hine)h(dep)q(end)q(en)o(t.)-975 58 y
(Consequences)h(of)f(the)g(treatmen)o(t)f(of)h(p)q(oin)o(ter)g(t)o(yp)q
(es)g(in)g(the)g(Standard)g(include:)-1441 97 y @F12 @sf(\017)22 b @F14 @sf
(A)15 b(p)q(oin)o(ter)g(to)g(v)o(oid)f(ma)o(y)h(b)q(e)g(con)o(v)o(erted)g
(to)g(a)g(p)q(oin)o(ter)f(to)h(an)g(ob)s(ject)g(of)g(an)o(y)f(t)o(yp)q(e.)
-1515 97 y @F12 @sf(\017)22 b @F14 @sf(A)15 b(p)q(oin)o(ter)g(to)g(an)o(y)f
(ob)s(ject)h(of)g(an)o(y)g(t)o(yp)q(e)g(ma)o(y)f(b)q(e)i(con)o(v)o(erted)f
(to)g(a)g(p)q(oin)o(ter)f(to)h(v)o(oid.)-1539 98 y @F12 @sf(\017)22 b 
@F14 @sf(If)17 b(a)g(p)q(oin)o(ter)f(to)h(an)g(ob)s(ject)f(is)g(con)o(v)o
(erted)h(to)f(a)h(p)q(oin)o(ter)g(to)f(v)o(oid)g(and)h(bac)o(k)g(again)f
(to)-1537 56 y(the)f(original)f(p)q(oin)o(ter)g(t)o(yp)q(e,)h(the)h
(result)e(compares)h(equal)g(to)g(original)o 14 x(p)q(oin)o(ter.)-1459 98 y 
@F12 @sf(\017)22 b @F14 @sf(It)17 b(is)g(in)o(v)m(alid)g(to)f(con)o(v)o
(ert)h(a)g(p)q(oin)o(ter)f(to)h(an)g(ob)s(ject)g(of)g(an)o(y)f(t)o(yp)q(e)i
(to)e(a)h(p)q(oin)o(ter)g(to)f(an)-1536 56 y(ob)s(ject)f(of)g(a)f(di\013eren)o
(t)h(t)o(yp)q(e)g(without)f(an)h(explicit)g(cast.)-1039 97 y @F12 @sf(\017)
22 b @F14 @sf(Ev)o(en)e(with)e(an)h(explicit)g(cast,)g(it)g(is)g(in)o(v)m
(alid)f(to)h(con)o(v)o(ert)g(a)g(function)g(p)q(oin)o(ter)g(to)f(an)-1536 
57 y(ob)s(ject)d(p)q(oin)o(ter)f(or)h(a)g(p)q(oin)o(ter)g(to)f(v)o(oid,)g
(or)h(vice-v)o(ersa.)-1019 97 y @F12 @sf(\017)22 b @F14 @sf(It)c(is)g(in)o
(v)m(alid)f(to)g(con)o(v)o(ert)g(a)h(p)q(oin)o(ter)g(to)f(a)h(function)f
(of)h(one)g(t)o(yp)q(e)g(to)f(a)h(p)q(oin)o(ter)f(to)h(a)-1537 57 y
(function)d(of)g(a)g(di\013eren)o(t)f(t)o(yp)q(e)h(without)g(a)g(cast.)-894 
97 y @F12 @sf(\017)22 b @F14 @sf(P)o(oin)o(ters)14 b(to)i(functions)f
(that)g(ha)o(v)o(e)g(di\013eren)o(t)g(parameter-t)o(yp)q(e)h(informati)o
(on)e(\(includ-)-1536 56 y(ing)f(the)g(\\old-st)o(yle")o 12 x(absence)g
(of)g(parameter-t)o(yp)q(e)f(information\))f(are)i(di\013eren)o(t)f(t)o
(yp)q(es.)-1651 151 y(Implicit)h(in)g(the)g(Standard)g(is)g(the)g(notion)f
(of)h @F11 @sf(invalid)h(p)n(ointers)p @F14 @sf(.)k(In)c(discussing)f(p)q
(oin)o(ters,)f(the)-1650 57 y(Standard)j(t)o(ypically)d(refers)i(to)g(\\a)f
(p)q(oin)o(ter)h(to)f(an)i(ob)s(ject")e(or)h(\\a)f(p)q(oin)o(ter)h(to)f(a)h
(function")g(or)-1651 56 y(\\a)k(n)o(ull)f(p)q(oin)o(ter.")28 b(A)18 b(sp)q
(ecial)f(case)h(in)g(address)g(arithmetic)f(allo)o(ws)f(for)h(a)h(p)q(oin)o
(ter)f(to)h(just)-1651 57 y(past)d(the)h(end)f(of)g(an)g(arra)o(y)l(.)k
(An)o(y)c(other)g(p)q(oin)o(ter)g(is)g(in)o(v)m(alid.)324 124 y @F15 @sf
(RA)m(TIONALE)-1763 b
37 @eop1

38 @bop0

38 @eop0
0 0 38 @bop1 112 50 a @F14 @sf(38)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1580 145 y @F14 @sf(An)16 b(in)o(v)m(alid)f(p)q(oin)o(ter)g
(migh)o(t)f(b)q(e)i(created)g(in)f(sev)o(eral)g(w)o(a)o(ys.)20 b(An)15 b
(arbitrary)f(v)m(alue)i(can)g(b)q(e)-1650 57 y(assigned)g(\(via)f(a)g
(cast\))g(to)g(a)g(p)q(oin)o(ter)g(v)m(ariable.)21 b(\(This)15 b(could)h
(ev)o(en)g(create)g(a)f(v)m(alid)g(p)q(oin)o(ter,)-1651 56 y(dep)q(end)q
(ing)20 b(on)g(the)g(v)m(alue.\))33 b(A)20 b(p)q(oin)o(ter)f(to)g(an)h(ob)s
(ject)f(b)q(ecomes)h(in)o(v)m(alid)f(if)g(the)h(memory)-1651 56 y(con)o
(taining)10 b(the)h(ob)s(ject)f(is)g(deallo)q(cated.)18 b(P)o(oin)o(ter)
10 b(arithmetic)f(can)i(pro)q(duce)h(p)q(oin)o(ters)e(outside)-1651 57 y
(the)16 b(range)f(of)f(an)i(arra)o(y)l(.)-361 57 y(Regardless)g(ho)o(w)g
(an)h(in)o(v)m(alid)e(p)q(oin)o(ter)h(is)g(created,)h(an)o(y)f(use)h(of)f
(it)f(yields)h(unde\014ned)q 18 x(b)q(e-)-1650 56 y(ha)o(vior.)26 b(Ev)o
(en)17 b(assignmen)o(t,)g(comparison)f(with)h(a)g(n)o(ull)g(p)q(oin)o(ter)g
(constan)o(t,)f(or)h(comparison)-1651 57 y(with)e(itself,)f(migh)o(t)g(on)h
(some)g(systems)g(result)f(in)h(an)g(exception.)-1075 56 y(Consider)j(a)f
(h)o(yp)q(othetical)g(segmen)o(ted)h(arc)o(hitecture,)f(on)h(whic)o(h)g(p)q
(oin)o(ters)f(comprise)h(a)-1651 57 y(segmen)o(t)h(descriptor)g(and)h(an)f
(o\013set.)31 b(Supp)q(ose)21 b(that)e(segmen)o(ts)f(are)h(relativ)o(ely)f
(small,)h(so)-1651 56 y(that)d(large)g(arra)o(ys)f(are)h(allo)q(cated)f
(in)h(m)o(ultiple)g(segmen)o(ts.)23 b(While)15 b(the)i(segmen)o(ts)f(are)g
(v)m(alid)-1651 57 y(\(allo)q(cated,)g(mapp)q(ed)i(to)e(real)g(memory\),)g
(the)h(hardw)o(are,)f(op)q(erating)g(system,)h(or)f(C)h(imple-)-1651 56 y
(men)o(tation)h(can)i(mak)o(e)e(these)i(m)o(ultiple)e(segmen)o(ts)g(b)q
(eha)o(v)o(e)i(lik)o(e)e(a)h(single)g(ob)s(ject:)27 b(p)q(oin)o(ter)-1651 
56 y(arithmetic)16 b(and)i(relatio)o(nal)e(op)q(erators)g(use)h(the)g
(de\014ned)i(mapping)e(to)f(imp)q(ose)h(the)g(prop)q(er)-1650 57 y(order)g
(on)g(the)g(elemen)o(ts)f(of)g(the)h(arra)o(y)l(.)24 b(Once)17 b(the)g
(memory)f(is)h(deallo)q(cated,)f(the)h(mapping)-1651 56 y(is)e(no)h
(longer)f(guaran)o(teed)g(to)f(exist;)h(use)h(of)f(the)h(segmen)o(t)f
(descriptor)f(migh)o(t)h(no)o(w)g(cause)g(an)-1650 57 y(exception,)g(or)g
(the)g(hardw)o(are)g(addressing)g(logic)f(migh)o(t)g(return)h(meaningless)f
(data.)-1499 144 y @F4 @sf(3.3)70 b(Expressions)-508 102 y @F14 @sf(Sev)o
(eral)17 b(closely-related)e(topics)h(are)h(in)o(v)o(olv)o(ed)e(in)i(the)g
(precise)g(sp)q(eci\014cation)f(of)h(expression)-1651 57 y(ev)m(aluation:)
29 b @F11 @sf(pr)n(e)n(c)n(e)n(denc)m(e)p @F14 @sf(,)19 b @F11 @sf(asso)n
(ciativity)p @F14 @sf(,)h @F11 @sf(gr)n(ouping)p @F14 @sf(,)h @F11 @sf(se)n
(quenc)n(e)e(p)n(oints)p @F14 @sf(,)h @F11 @sf(agr)n(e)n(ement)g(p)n
(oints)p @F14 @sf(,)-1652 56 y @F11 @sf(or)n(der)13 b(of)f(evaluation)p 
@F14 @sf(,)f(and)g @F11 @sf(interle)n(aving)o @F14 @sf(.)17 b(The)11 b
(latter)e(three)i(terms)e(are)i(discussed)g(in)f @F12 @sf(x)p @F14 @sf
(2.1.2.3)o(.)-1581 57 y(The)18 b(rules)f(of)g @F11 @sf(pr)n(e)n(c)n(e)n
(denc)m(e)i @F14 @sf(are)f(enco)q(ded)g(in)o(to)f(the)g(syn)o(tactic)f
(rules)h(for)g(eac)o(h)h(op)q(erator.)-1652 56 y(F)l(or)d(example,)g(the)g
(syn)o(tax)f(for)h @F11 @sf(additive-expr)n(ession)j @F14 @sf(includes)e
(the)f(rule)-1173 95 y @F11 @sf(additive-expr)n(ession)h @F8 @sf(+)g 
@F11 @sf(multiplic)n(ative-expr)n(ession)-1028 95 y @F14 @sf(whic)o(h)e
(implies)e(that)h @F8 @sf(a+b*c)g @F14 @sf(parses)g(as)g @F8 @sf(a+\(b*c\))p 
@F14 @sf(.)18 b(The)c(rules)f(of)g @F11 @sf(asso)n(ciativity)k @F14 @sf
(are)c(similar)o(ly)-1652 56 y(enco)q(ded)i(in)o(to)d(the)h(syn)o(tactic)f
(rules.)19 b(F)l(or)13 b(example,)g(the)g(syn)o(tax)f(for)h @F11 @sf
(assignment-expr)n(ess)o(ion)-1652 57 y @F14 @sf(includes)j(the)f(rule)-215 
95 y @F11 @sf(unary-expr)n(ession)h(assignment-op)n(er)n(ator)g
(assignment-expr)n(es)o(sion)-1319 94 y @F14 @sf(whic)o(h)g(implies)e
(that)g @F8 @sf(a=b=c)h @F14 @sf(parses)g(as)g @F8 @sf(a=\(b=c\))p @F14 @sf
(.)-821 57 y(With)c(rules)g(of)g(precedence)i(and)e(asso)q(ciativit)n(y)f
(th)o(us)h(em)o(b)q(o)q(died)h(in)g(the)f(syn)o(tax)g(rules,)g(the)-1650 
56 y(Standard)i(sp)q(eci\014es,)g(in)g(general,)f(the)g @F11 @sf(gr)n
(ouping)17 b @F14 @sf(\(asso)q(ciati)o(on)11 b(of)h(op)q(erands)h(with)f
(op)q(erators\))-1652 57 y(in)k(an)f(expression.)-263 57 y(The)g(Base)f
(Do)q(cumen)o(t)h(describ)q(es)g(C)f(as)g(a)g(language)g(in)g(whic)o(h)g
(the)h(op)q(erands)g(of)f(succes-)-1650 56 y(siv)o(e)g(iden)o(tical)f
(comm)o(utativ)n(e)g(asso)q(ciativ)o(e)f(op)q(erators)h(can)h(b)q(e)h
(regroup)q(ed.)20 b(The)14 b(Committee)-1652 56 y(has)j(decided)g(to)f
(remo)o(v)o(e)g(this)g(license)g(from)g(the)h(Standard,)f(th)o(us)g
(bringing)g(C)g(in)o(to)g(accord)-1651 57 y(with)f(most)f(other)h(ma)s
(jor)f(high-lev)o(el)g(languages.)-806 57 y(This)20 b(c)o(hange)h(w)o(as)f
(motiv)m(ated)g(primaril)o(y)g(b)o(y)g(the)h(desire)f(to)g(mak)o(e)h(C)f
(more)g(suitable)-1651 56 y(for)d(\015oating)f(p)q(oin)o(t)h(programming.)
25 b(Floati)o(ng)16 b(p)q(oin)o(t)h(arithmetic)f(do)q(es)h(not)g(ob)q(ey)h
(man)o(y)f(of)-1651 57 y(the)e(mathematical)e(rules)h(that)g(real)g
(arithmetic)f(do)q(es.)20 b(F)l(or)14 b(instance,)g(the)g(t)o(w)o(o)g
(expressions)-1763 124 y
38 @eop1

39 @bop0
@F8 @sf
[<
FF8000FF8000FF80001C00001C00001C00001C00001C00001C00001C00001C00001FFE001F
FF801FFFC01C03C01C01E01C00E01C00701C00701C00701C00701C00701C00E01C01E01C03
C0FFFFC0FFFF80FFFE00>
. 20 28 -1 27 24] 80 @dc

39 @eop0

0 0 39 @bop1 112 50 a @F10 @sf(3.3.)35 b(Expressions)1265 b @F14 @sf(39)
-1651 145 y @F8 @sf(\(a+b\)+c)19 b @F14 @sf(and)i @F8 @sf(a+\(b+c\))e 
@F14 @sf(ma)o(y)g(w)o(ell)g(yield)g(di\013eren)o(t)g(results:)29 b(supp)q
(ose)21 b(that)e @F8 @sf(b)h @F14 @sf(is)f(greater)-1651 57 y(than)g(0,)f 
@F8 @sf(a)g @F14 @sf(equals)g @F8 @sf(-b)p @F14 @sf(,)g(and)h @F8 @sf(c)f 
@F14 @sf(is)g(p)q(ositiv)o(e)f(but)h(substan)o(tially)f(smaller)g(than)h 
@F8 @sf(b)p @F14 @sf(.)29 b(\(That)17 b(is,)-1651 56 y(supp)q(ose)h @F8 @sf
(c/b)e @F14 @sf(is)g(less)g(than)g @F8 @sf(DBL)s 14 -2 z 14 x(EPSILON)p 
@F14 @sf(.\))o 15 x(Then)h @F8 @sf(\(a+b\)+c)f @F14 @sf(is)g @F8 @sf(0+c)p 
@F14 @sf(,)f(or)h @F8 @sf(c)p @F14 @sf(,)h(while)e @F8 @sf(a+\(b+c\))-1651 
56 y @F14 @sf(equals)h @F8 @sf(a+b)p @F14 @sf(,)f(or)g @F8 @sf(0)p @F14 @sf
(.)22 b(That)15 b(is)g(to)g(sa)o(y)l(,)g(\015oating)g(p)q(oin)o(t)g
(addition)g(\(and)h(m)o(ultipli)o(catio)o(n\))f(is)g(not)-1651 57 y(asso)q
(ciativ)o(e.)-155 56 y(The)g(Base)f(Do)q(cumen)o(t's)g(rule)g(imp)q(oses)g
(a)g(high)h(cost)e(on)i(translati)o(on)e(of)h(n)o(umerical)g(co)q(de)-1650 
57 y(to)22 b(C.)f(Muc)o(h)h(n)o(umerical)f(co)q(de)h(is)f(written)g(in)h
(F)o(OR)l(TRAN,)g(whic)o(h)f(do)q(es)i(pro)o(vide)e(a)g(no-)-1650 56 y
(regrouping)f(guaran)o(tee;)h(indeed,)g(this)f(is)f(the)h(normal)f(seman)o
(tic)g(in)o(terpretation)f(in)i(most)-1651 57 y(high-lev)o(el)i(languages)f
(other)g(than)h(C.)f(The)h(Base)g(Do)q(cumen)o(t's)f(advice,)i(\\rewrite)e
(using)-1651 56 y(explicit)c(temp)q(oraries,")g(is)g(burdensome)i(to)e
(those)g(with)h(tens)f(or)h(h)o(undreds)g(of)f(thousands)-1650 57 y(of)d
(lines)g(of)g(co)q(de)h(to)f(con)o(v)o(ert,)f(a)h(con)o(v)o(ersion)f(whic)o
(h)i(in)f(most)f(other)h(resp)q(ects)h(could)f(b)q(e)h(done)-1650 56 y
(automaticall)o(y)l(.)-211 57 y(Eliminatio)o(n)k(of)g(the)h(regrouping)e
(rule)i(do)q(es)g(not)f(in)h(fact)f(prohibit)f(m)o(uc)o(h)i(regrouping)-1651 
56 y(of)e(in)o(teger)e(expressions.)27 b(The)18 b(bit)o(wise)f(logical)o 
16 x(op)q(erators)g(can)h(b)q(e)g(arbitraril)o(y)e(regroup)q(ed,)-1650 56 y
(since)k(an)o(y)f(regrouping)g(giv)o(es)f(the)h(same)g(result)g @F11 @sf
(as)h(if)29 b @F14 @sf(the)19 b(expression)g(had)h(not)f(b)q(een)h(re-)-1650 
57 y(group)q(ed.)g(This)13 b(is)f(also)g(true)h(of)g(in)o(teger)f
(addition)g(and)i(m)o(ultiplica)o(tio)o(n)e(in)h(implemen)o(tations)-1652 
56 y(with)20 b(t)o(w)o(os-complemen)o(t)e(arithmetic)g(and)i(silen)o(t)f
(wraparound)g(on)h(o)o(v)o(er\015o)o(w.)32 b(Indeed)q(,)22 b(in)-1651 57 y
(an)o(y)15 b(implemen)o(tation,)f(regroupings)g(whic)o(h)h(do)g(not)g(in)o
(tro)q(duce)g(o)o(v)o(er\015o)o(ws)f(b)q(eha)o(v)o(e)i @F11 @sf(as)g(if)
24 b @F14 @sf(no)-1650 56 y(regrouping)15 b(had)g(o)q(ccurred.)20 b
(\(Results)15 b(ma)o(y)f(also)g(di\013er)h(in)f(suc)o(h)i(an)f(implemen)o
(tati)o(on)f(if)g(the)-1650 57 y(expression)i(as)f(written)f(results)h(in)g
(o)o(v)o(er\015o)o(ws:)k(in)c(suc)o(h)g(a)g(case)h(the)f(b)q(eha)o(vior)g
(is)g(unde\014ned,)-1649 56 y(so)g(an)o(y)g(regrouping)g(couldn't)f(b)q(e)i
(an)o(y)f(w)o(orse.\))-836 97 y(The)j(t)o(yp)q(es)f(of)g(lv)m(alues)f
(that)h(ma)o(y)f(b)q(e)i(used)f(to)g(access)g(an)g(ob)s(ject)g(ha)o(v)o(e)f
(b)q(een)i(restricted)f(so)-1651 57 y(that)e(an)g(optimizer)f(is)h(not)g
(required)g(to)g(mak)o(e)f(w)o(orst-case)g(aliasing)g(assumptions.)-1413 
56 y(In)21 b(practice,)h(aliasing)d(arises)h(with)g(the)h(use)g(of)f(p)q
(oin)o(ters.)36 b(A)21 b(con)o(triv)o(ed)e(example)i(to)-1651 57 y
(illustrate)14 b(the)h(issues)g(is)-238 82 y @F8 @sf(int)24 b(a;)-144 113 y
(void)g(f\(int)f(*)h(b\))-359 57 y({)72 56 y(a)g(=)f(1;)-143 56 y(*b)g(=)h
(2;)-167 57 y(g\(a\);)-216 56 y(})-215 83 y @F14 @sf(It)16 b(is)e
(tempting)g(to)h(generate)g(the)g(call)f(to)g @F8 @sf(g)h @F14 @sf(as)g
(if)f(the)i(source)f(expression)g(w)o(ere)f @F8 @sf(g\(1\))p @F14 @sf(,)g
(but)i @F8 @sf(b)-1651 56 y @F14 @sf(migh)o(t)f(p)q(oin)o(t)f(to)h @F8 @sf
(a)p @F14 @sf(,)f(so)h(this)g(optimizati)o(on)f(is)h(not)g(safe.)k(On)d
(the)f(other)g(hand,)g(consider)-1370 83 y @F8 @sf(int)24 b(a;)-144 56 y
(void)g(f\()f(double)g(*)h(b)g(\))-478 57 y({)72 56 y(a)g(=)f(1;)-143 57 y
(*b)g(=)h(2.0;)-215 56 y(g\(a\);)-216 57 y(})1184 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
39 @eop1

40 @bop0

40 @eop0
0 0 40 @bop1 112 50 a @F14 @sf(40)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F14 @sf(Again)22 b(the)g(optimization)f(is)g
(incorrect)h(only)g(if)g @F8 @sf(b)g @F14 @sf(p)q(oin)o(ts)f(to)h @F8 @sf
(a)p @F14 @sf(.)41 b(Ho)o(w)o(ev)o(er,)22 b(this)g(w)o(ould)-1651 57 y
(only)16 b(ha)o(v)o(e)g(come)g(ab)q(out)g(if)g(the)g(address)g(of)g @F8 @sf
(a)g @F14 @sf(w)o(ere)g(somewhere)g(cast)g(to)g @F8 @sf(\(double*\))p 
@F14 @sf(.)o 22 x(The)-1650 56 y(Committee)e(has)h(decided)i(that)d(suc)o
(h)i(dubious)f(p)q(ossibilities)e(need)j(not)f(b)q(e)h(allo)o(w)o(ed)e
(for.)-1503 57 y(In)f(principle,)g(then,)g(aliasing)e(only)i(need)g(b)q(e)h
(allo)o(w)n(ed)e(for)g(when)i(the)f(lv)m(alues)f(all)g(ha)o(v)o(e)g(the)
-1650 56 y(same)i(t)o(yp)q(e.)20 b(In)15 b(practice,)e(the)i(Committee)e
(has)h(recognized)g(certain)g(prev)m(alen)o(t)g(exceptions:)-1582 95 y 
@F12 @sf(\017)22 b @F14 @sf(The)e(lv)m(alue)g(t)o(yp)q(es)h(ma)o(y)e
(di\013er)g(in)h(signedness.)35 b(In)21 b(the)f(common)g(range,)h(a)e
(signed)-1536 56 y(in)o(tegral)f(t)o(yp)q(e)h(and)h(its)f(unsigned)g(v)m
(arian)o(t)g(ha)o(v)o(e)g(the)g(same)g(represen)o(tation;)i(it)d(w)o(as)
-1537 57 y(felt)f(that)g(an)h(appreciable)g(b)q(o)q(dy)g(of)g(existing)e
(co)q(de)j(is)e(not)g(\\strictly)f(t)o(yp)q(ed")i(in)g(this)-1537 56 y
(area.)-142 95 y @F12 @sf(\017)k @F14 @sf(Character)10 b(p)q(oin)o(ter)h
(t)o(yp)q(es)g(are)g(often)f(used)i(in)f(the)g(b)o(ytewise)f(manipulation)g
(of)g(ob)s(jects;)-1537 56 y(a)16 b(b)o(yte)g(stored)f(through)h(suc)o(h)h
(a)e(c)o(haracter)h(p)q(oin)o(ter)f(ma)o(y)h(w)o(ell)f(end)h(up)h(in)f(an)g
(ob)s(ject)-1537 56 y(of)f(an)o(y)g(t)o(yp)q(e.)-283 95 y @F12 @sf(\017)
22 b @F14 @sf(A)15 b(quali\014ed)f(v)o(ersion)f(of)h(the)h(ob)s(ject's)e
(t)o(yp)q(e,)h(though)g(formally)f(a)h(di\013eren)o(t)f(t)o(yp)q(e,)i
(pro-)-1537 56 y(vides)g(the)h(same)e(in)o(terpretation)g(of)h(the)g(v)m
(alue)g(of)g(the)g(ob)s(ject.)-1153 95 y(Structure)g(and)h(union)f(t)o(yp)q
(es)g(also)f(ha)o(v)o(e)h(problematic)f(aliasing)g(prop)q(erties:)-1240 
95 y @F8 @sf(struct)23 b(fi{)h(float)f(f;)h(int)f(i;};)-669 113 y(void)h
(f\()f(struct)g(fi)h(*)g(fip,)f(int)g(*)h(ip)g(\))-836 56 y({)72 56 y
(static)f(struct)g(fi)h(a)f(=)h({2.0,)f(1};)-716 57 y(*ip)g(=)h(2;)-191 
56 y(*fip)f(=)h(a;)-215 57 y(g\(*ip\);)-168 113 y(*fip)f(=)h(a;)-215 56 y
(*ip)f(=)h(2;)-191 57 y(g\(fip->i\);)-336 56 y(})-215 95 y @F14 @sf(It)15 b
(is)e(not)h(safe)g(to)g(optimize)f(the)h(\014rst)g(call)f(to)h @F8 @sf(g)g 
@F14 @sf(as)g @F8 @sf(g\(2\))p @F14 @sf(,)f(or)h(the)g(second)h(as)f @F8 @sf
(g\(1\))p @F14 @sf(,)f(since)h(the)-1650 56 y(call)h(to)f @F8 @sf(f)h 
@F14 @sf(could)h(quite)f(legiti)o(mately)e(ha)o(v)o(e)i(b)q(een)-668 95 y 
@F8 @sf(struct)23 b(fi)48 b(x;)-311 56 y(f\()24 b(&x,)f(&x.i)h(\);)-526 
95 y @F14 @sf(These)16 b(observ)m(ations)f(explain)f(the)i(other)e
(exception)i(to)e(the)i(same-t)o(yp)q(e)f(principle.)-1485 122 y @F6 @sf
(3.3.1)56 b(Primary)18 b(expressions)-671 87 y @F14 @sf(A)12 b(primary)e
(expression)i(ma)o(y)f(b)q(e)h @F8 @sf(void)f @F14 @sf(\(paren)o(thesized)g
(call)f(to)h(a)g(function)h(returning)f @F8 @sf(void)p @F14 @sf(\),)-1652 
56 y(a)22 b(function)f(designator)g(\(iden)o(ti\014er)f(or)h(paren)o
(thesized)h(function)g(designator\),)o 22 x(an)g(lv)m(alue)-1651 57 y
(\(iden)o(ti\014er)12 b(or)h(paren)o(thesized)g(lv)m(alue\),)f(or)g
(simply)g(a)g(v)m(alue)h(expression.)19 b(Constrain)o(ts)11 b(ensure)-1762 
124 y
40 @eop1

41 @bop0

41 @eop0
0 0 41 @bop1 112 50 a @F10 @sf(3.3.)35 b(Expressions)1265 b @F14 @sf(41)
-1651 145 y(that)13 b(a)f @F8 @sf(void)h @F14 @sf(primary)f(expression)g
(is)h(no)g(part)f(of)h(a)f(further)h(expression,)g(except)g(that)g(a)f(v)o
(oid)-1651 57 y(expression)i(ma)o(y)e(b)q(e)i(cast)f(to)f(v)o(oid,)h(ma)o
(y)f(b)q(e)i(the)f(second)h(or)f(third)f(op)q(erand)i(of)f(a)g
(conditional)-1652 56 y(op)q(erator,)h(or)h(ma)o(y)g(b)q(e)g(an)h(op)q
(erand)f(of)g(a)g(comma)f(op)q(erator.)-1079 121 y @F6 @sf(3.3.2)56 b(P)n
(ost\014x)19 b(op)r(erators)-592 86 y @F9 @sf(3.3.2.1)52 b(Arra)o(y)o 16 x
(subscripting)-631 86 y @F14 @sf(The)15 b(Committee)f(found)h(no)f(reason)g
(to)g(disallo)o(w)f(the)i(symmetry)f(that)g(p)q(ermits)g @F8 @sf(a[i])g 
@F14 @sf(to)g(b)q(e)-1650 56 y(written)h(as)g @F8 @sf(i[a])p @F14 @sf(.)
-254 57 y(The)j(syn)o(tax)e(and)i(seman)o(tics)f(of)g(m)o(ultidimensio)o
(nal)f(arra)o(ys)g(follo)o(w)f(logically)h(from)g(the)-1650 56 y
(de\014nition)i(of)f(arra)o(ys)f(and)i(the)f(subscripting)g(op)q(eration.)
26 b(The)18 b(material)e(in)h(the)h(Standard)-1651 57 y(on)c(m)o
(ultidimensional)e(arra)o(ys)h(in)o(tro)q(duces)h(no)f(new)i(language)e
(features,)g(but)h(clari\014es)g(the)g(C)-1651 56 y(treatmen)o(t)g(of)h
(this)g(imp)q(ortan)o(t)f(abstract)g(data)g(t)o(yp)q(e.)-947 120 y @F9 @sf
(3.3.2.2)52 b(F)l(unction)17 b(calls)-517 85 y @F14 @sf(P)o(oin)o(ters)g
(to)h(functions)g(ma)o(y)g(b)q(e)h(used)f(either)g(as)g @F8 @sf(\(*pf\)\(\))g 
@F14 @sf(or)f(as)h @F8 @sf(pf\(\))p @F14 @sf(.)29 b(The)18 b(latter)f
(con-)-1650 57 y(struct,)g(not)g(sanctioned)g(in)h(the)f(Base)g(Do)q
(cumen)o(t,)h(app)q(ears)f(in)g(some)g(presen)o(t)g(v)o(ersions)g(of)-1651 
56 y(C,)i(is)g(unam)o(biguous,)g(in)o(v)m(alidates)f(no)h(old)g(co)q(de,)h
(and)f(can)g(b)q(e)h(an)f(imp)q(ortan)o(t)f(shorthand.)-1651 57 y(The)i
(shorthand)e(is)h(useful)g(for)f(pac)o(k)m(ages)h(that)f(presen)o(t)h
(only)f(one)h(external)f(name,)i(whic)o(h)-1651 56 y(designates)d(a)g
(structure)g(full)g(of)g(p)q(oin)o(ters)g(to)f(ob)s(jects)h(and)g
(functions:)24 b(mem)o(b)q(er)18 b(functions)-1651 57 y(can)e(b)q(e)g
(called)e(as)h @F8 @sf(graphics.open\(fil)o(e\))f @F14 @sf(instead)h(of)f 
@F8 @sf(\(*graphics.open\)\(f)o(ile)p(\))p @F14 @sf(.)-1476 56 y(The)i
(treatmen)o(t)e(of)g(function)i(designators)e(can)h(lead)g(to)g(some)g
(curious,)f(but)i(v)m(alid,)e(syn-)-1650 57 y(tactic)h(forms.)k(Giv)o(en)
14 b(the)i(declarations:)-541 90 y @F8 @sf(int)24 b(f\(\),)f(\(*pf\)\(\);)
-598 91 y @F14 @sf(then)16 b(all)e(of)h(the)g(follo)o(wi)o(ng)f
(expressions)h(are)g(v)m(alid)g(function)g(calls:)-999 91 y @F8 @sf
(\(&f\)\(\);)23 b(f\(\);)h(\(*f\)\(\);)f(\(**f\)\(\);)f(\(***f\)\(\);)-932 
57 y(pf\(\);)71 b(\(*pf\)\(\);)23 b(\(**pf\)\(\);)g(\(***pf\)\(\);)-1076 
91 y @F14 @sf(The)f(\014rst)e(expression)h(on)g(eac)o(h)g(line)g(w)o(as)f
(discussed)i(in)f(the)g(previous)g(paragraph.)36 b(The)-1650 56 y(second)
23 b(is)e(con)o(v)o(en)o(tional)g(usage.)40 b(All)21 b(subsequen)o(t)h
(expressions)g(tak)o(e)f(adv)m(an)o(tage)h(of)f(the)-1650 57 y(implicit)
9 b(con)o(v)o(ersion)h(of)f(a)h(function)g(designator)f(to)h(a)g(p)q(oin)o
(ter)g(v)m(alue,)h(in)f(nearly)f(all)h(expression)-1651 56 y(con)o(texts.)
19 b(The)12 b(Committ)o(ee)f(sa)o(w)g(no)h(real)f(harm)g(in)h(allo)o(wi)o
(ng)f(these)h(forms;)f(outla)o(wing)f(forms)-1651 56 y(lik)o(e)18 b @F8 @sf
(\(*f\)\(\))p @F14 @sf(,)h(while)f(still)g(p)q(ermitting)f @F8 @sf(*a)i 
@F14 @sf(\(for)f @F8 @sf(int)23 b(a[])p @F14 @sf(\),)c(simply)f(seemed)i
(more)e(trouble)-1651 57 y(than)e(it)e(w)o(as)g(w)o(orth.)-368 104 y(The)
20 b(rule)e(for)h(implicit)e(declaration)h(of)h(functions)f(has)h(b)q(een)h
(retained,)f(but)g(v)m(arious)g(past)-1651 56 y(am)o(biguities)13 b(ha)o
(v)o(e)g(b)q(een)i(resolv)o(ed)f(b)o(y)f(describing)h(this)g(usage)f(in)h
(terms)f(of)h(a)f(corresp)q(onding)-1650 57 y(explicit)i(declaration.)-324 
56 y(F)l(or)c(compatibilit)o -1 x(y)f(with)h(past)g(practice,)h(all)e
(argumen)o(t)h(promotions)f(o)q(ccur)i(as)f(describ)q(ed)-1649 57 y(in)k
(the)f(Base)g(Do)q(cumen)o(t)h(in)f(the)g(absence)h(of)f(a)g(protot)o(yp)q
(e)g(declaration,)f(including)h(the)g(\(not)-1651 56 y(alw)o(a)o(ys)c
(desirable\))h(promotion)g(of)g @F8 @sf(float)g @F14 @sf(to)g @F8 @sf
(double)p @F14 @sf(.)17 b(A)12 b(protot)o(yp)q(e)f(giv)o(es)g(the)h
(implemen)o(tor)-1652 57 y(explicit)18 b(license)h(to)e(pass)i(a)f @F8 @sf
(float)f @F14 @sf(as)i(a)f @F8 @sf(float)f @F14 @sf(rather)h(than)h(a)f 
@F8 @sf(double)p @F14 @sf(,)g(or)g(a)g @F8 @sf(char)g @F14 @sf(as)g(a)-252 
124 y @F15 @sf(RA)m(TIONALE)-1763 b
41 @eop1

42 @bop0
@F8 @sf
[<
3078FCFC783000000000000000003078FCFC7830>
. 6 20 -9 19 24] 58 @dc

42 @eop0
 0 0 42 @bop1 112 50 a @F14 @sf
(42)1109 b @F10 @sf(Section)15 b(3.)35 b(LANGUA)o(GE)-1651 145 y @F8 @sf
(char)15 b @F14 @sf(rather)f(than)h(an)g @F8 @sf(int)p @F14 @sf(,)f(or)h
(an)g(argumen)o(t)f(in)h(a)f(sp)q(ecial)h(register,)e(etc.)20 b(If)c(the)f
(de\014nition)-1651 57 y(of)d(a)g(function)h(in)f(the)g(presence)i(of)d(a)h
(protot)o(yp)q(e)g(w)o(ould)g(cause)g(the)h(function)f(to)g(exp)q(ect)h
(other)-1651 56 y(than)19 b(the)g(default)g(promotion)f(t)o(yp)q(es,)h
(then)g(clearly)g(the)g(calls)f(to)g(this)h(function)f(m)o(ust)h(b)q(e)-1650 
56 y(made)d(in)f(the)g(presence)h(of)f(a)g(compatible)f(protot)o(yp)q(e.)
-893 60 y(T)l(o)h(clarify)g(this)g(and)h(other)f(relationships)f(b)q(et)o
(w)o(een)i(function)g(calls)e(and)i(function)g(de\014-)-1650 56 y
(nitions,)e(the)h(Standard)g(describ)q(es)h(an)f(equiv)m(alence)h(b)q(et)o
(w)o(een)f(a)g(function)g(call)f(or)h(de\014nition)-1651 57 y(whic)o(h)h
(do)q(es)f(o)q(ccur)h(in)f(the)g(presence)h(of)f(a)g(protot)o(yp)q(e)f
(and)i(one)f(that)f(do)q(es)i(not.)-1348 59 y(Th)o(us)h(a)g(protot)o(yp)q
(ed)f(function)h(with)f(no)h(\\narro)o(w")e(t)o(yp)q(es)i(and)g(no)g(v)m
(ariable)f(argumen)o(t)-1651 57 y(list)c(m)o(ust)g(b)q(e)h(callable)f(in)g
(the)h(absence)g(of)f(a)g(protot)o(yp)q(e,)g(since)h(the)g(t)o(yp)q(es)f
(actually)g(passed)h(in)-1651 56 y(a)h(call)g(are)g(equiv)m(alen)o(t)f(to)h
(the)g(explicit)g(function)g(de\014nition)g(protot)o(yp)q(e.)k(This)c
(constrain)o(t)f(is)-1651 57 y(necessary)j(to)e(retain)h(compatibilit)o 
-1 x(y)f(with)g(past)h(usage)g(of)g(library)f(functions.)19 b(\(See)d 
@F12 @sf(x)p @F14 @sf(4.1.3.\))o -1579 59 a(This)i(pro)o(vision)f
(constrains)g(the)i(latit)o(ude)f(of)g(an)g(implemen)o(tor)f(b)q(ecause)i
(the)g(parame-)-1651 56 y(ter)d(passing)g(con)o(v)o(en)o(tions)f(of)h
(protot)o(yp)q(e)g(and)g(non-protot)o(yp)q(e)g(function)g(calls)g(m)o(ust)f
(b)q(e)i(the)-1650 57 y(same)f(for)f(functions)g(accepting)g(a)h(\014xed)g
(n)o(um)o(b)q(er)g(of)f(argumen)o(ts.)20 b(Implemen)o(tations)14 b(in)i
(en-)-1650 56 y(vironmen)o(ts)d(where)h(e\016cien)o(t)f(function)g
(calling)f(mec)o(hanisms)i(are)f(a)o(v)m(ailable)f(m)o(ust,)h(in)g(e\013ect,)
-1651 57 y(use)j(the)f(e\016cien)o(t)g(calling)e(sequence)k(either)d(in)h
(all)f(\\\014xed)h(argumen)o(t)g(list")e(calls)h(or)h(in)f(none.)-1650 56 y
(Since)i(e\016cien)o(t)f(calling)f(sequences)i(often)f(do)g(not)g(allo)o
(w)f(for)g(v)m(ariable)h(argumen)o(t)f(functions,)-1651 57 y(the)k(\014xed)h
(part)e(of)g(a)g(v)m(ariable)g(argumen)o(t)g(list)g(ma)o(y)g(b)q(e)h
(passed)g(in)g(a)f(completely)g(di\013eren)o(t)-1651 56 y(fashion)d(than)g
(in)g(a)g(\014xed)h(argumen)o(t)e(list)g(with)h(the)g(same)g(n)o(um)o(b)q
(er)g(and)h(t)o(yp)q(e)f(of)g(argumen)o(ts.)-1581 60 y(The)g(existing)f
(practice)g(of)h(omitting)e(traili)o(ng)h(parameters)g(in)g(a)h(call)f(if)g
(it)g(is)h(kno)o(wn)f(that)-1651 56 y(the)k(parameters)e(will)g(not)h(b)q
(e)h(used)g(has)f(consisten)o(tly)f(b)q(een)i(discouraged.)23 b(Since)17 b
(omission)-1652 56 y(of)h(suc)o(h)g(parameters)g(creates)f(an)h(inequiv)m
(alence)h(b)q(et)o(w)o(een)f(the)g(call)g(and)g(the)g(declaration,)-1652 
57 y(the)j(b)q(eha)o(vior)g(in)f(suc)o(h)i(cases)e(is)h(unde\014ned,)i
(and)e(a)g(maximall)o(y)f(p)q(ortable)g(program)g(will)-1652 56 y(a)o(v)o
(oid)c(this)g(usage.)24 b(Hence)18 b(an)e(implemen)o(tation)f(is)h(free)h
(to)f(implemen)o(t)g(a)g(function)h(calling)-1652 57 y(mec)o(hanism)f(for)g
(\014xed)g(argumen)o(t)g(lists)f(whic)o(h)h(w)o(ould)f(\(p)q(erhaps)h
(fatally\))e(fail)h(if)h(the)g(wrong)-1651 56 y(n)o(um)o(b)q(er)g(or)f(t)o
(yp)q(e)g(of)g(argumen)o(ts)f(w)o(ere)h(to)g(b)q(e)g(pro)o(vided.)-933 60 y
(Strictly)e(sp)q(eaking)h(then,)g(calls)f(to)h @F8 @sf(printf)f @F14 @sf
(are)h(obliged)f(to)g(b)q(e)i(in)f(the)g(scop)q(e)h(of)e(a)h(proto-)-1651 
56 y(t)o(yp)q(e)j(\(as)f(b)o(y)h @F8 @sf(#include)23 b(<stdio.h>)p @F14 @sf
(\))o(,)16 b(but)g(implemen)o(tations)f(are)i(not)f(obliged)g(to)g(fail)f
(on)-1650 57 y(suc)o(h)h(a)f(lapse.)k(\(The)d(b)q(eha)o(vior)e(is)h @F11 @sf
(unde\014ne)n(d)p @F14 @sf(\).)-834 137 y @F9 @sf(3.3.2.3)52 b(Structure)
17 b(and)h(union)f(mem)o(b)q(ers)-890 91 y @F14 @sf(Since)22 b(the)g
(language)f(no)o(w)g(p)q(ermits)g(structure)g(parameters,)h(structure)f
(assignmen)o(t)f(and)-1650 57 y(functions)c(returning)f(structures,)g(the)h
(concept)g(of)f(a)g @F11 @sf(structur)n(e)j(expr)n(ession)g @F14 @sf(is)d
(no)o(w)g(part)g(of)-1651 56 y(the)f(C)f(language.)18 b(A)c(structure)f(v)m
(alue)g(can)h(b)q(e)f(pro)q(duced)i(b)o(y)e(an)g(assignmen)o(t,)f(b)o(y)i
(a)f(function)-1651 56 y(call,)h(b)o(y)i(a)e(comma)h(op)q(erator)f
(expression)h(or)g(b)o(y)g(a)g(conditional)f(op)q(erator)g(expression:)-1357 
109 y @F8 @sf(s1)24 b(=)g(\(s2)f(=)h(s3\))-335 57 y(sf\(x\))-120 56 y(\(x,)g
(s1\))-168 56 y(x)g(?)g(s1)f(:)h(s2)-454 106 y @F14 @sf(In)15 b(these)f
(cases,)g(the)g(result)g(is)f @F11 @sf(not)18 b @F14 @sf(an)c(lv)m(alue;)g
(hence)h(it)e(cannot)h(b)q(e)h(assigned)e(to)g(nor)h(can)g(its)-1651 57 y
(address)i(b)q(e)g(tak)o(en.)-459 124 y
42 @eop1

43 @bop0
@F6 @sf
[<
0001FF0000000FFFE000003F80F800007E001C0000FC000E0001F800060003F800030003F0
00030007F000018007F000018007F000018007F000018007F000018007F000018007F00001
8007F000018007F000018007F000018007F000018007F000018007F000018007F000018007
F000018007F000018007F000018007F000018007F000018007F000018007F000018007F000
018007F000018007F0000180FFFF803FFCFFFF803FFC>
. 38 34 -2 33 43] 85 @dc

43 @eop0

0 0 43 @bop1 112 50 a @F10 @sf(3.3.)35 b(Expressions)1265 b @F14 @sf(43)
-1580 145 y(Similarly)l(,)12 b @F8 @sf(x.y)h @F14 @sf(is)g(an)g(lv)m(alue)h
(only)f(if)g @F8 @sf(x)g @F14 @sf(is)g(an)g(lv)m(alue.)20 b(Th)o(us)13 b
(none)h(of)f(the)h(follo)n(wing)e(v)m(alid)-1651 57 y(expressions)j(are)g
(lv)m(alues:)-268 101 y @F8 @sf(sf\(3\).a)-168 56 y(\(s1=s2\).a)-216 57 y
(\(\(i==6\)?s1:s2\).a)-384 56 y(\(x,s1\).a)-383 100 y @F14 @sf(Ev)o(en)h
(when)f @F8 @sf(x.y)g @F14 @sf(is)g(an)g(lv)m(alue,)g(it)f(ma)o(y)h(not)f
(b)q(e)i(mo)q(di\014able:)-886 101 y @F8 @sf(const)24 b(struct)f(S)g(s1;)
-430 56 y(s1.a)h(=)f(3;)239 b(/*)23 b(invalid)g(*/)-884 100 y @F14 @sf
(The)12 b(Standard)g(requires)f(that)g(an)h(implemen)o(tatio)o(n)f
(diagnose)g(a)g @F11 @sf(c)n(onstr)n(aint)h(err)n(or)17 b @F14 @sf(in)11 b
(the)-1650 56 y(case)16 b(that)f(the)g(mem)o(b)q(er)g(of)g(a)g(structure)h
(or)e(union)i(designated)f(b)o(y)g(the)h(iden)o(ti\014er)f(follo)o(w)o
(ing)-1652 57 y(a)g(mem)o(b)q(er)g(selection)f(op)q(erator)g(\()p @F8 @sf
(.)20 b @F14 @sf(or)14 b @F8 @sf(->)p @F14 @sf(\))g(do)q(es)h(not)g(app)q
(ear)g(in)g(the)f(t)o(yp)q(e)h(of)g(the)g(structure)-1651 56 y(or)k(union)f
(designated)h(b)o(y)g(the)f(\014rst)h(op)q(erand.)30 b(The)19 b(Base)g(Do)q
(cumen)o(t)f(is)h(unclear)f(on)h(this)-1651 56 y(p)q(oin)o(t.)-117 129 y 
@F9 @sf(3.3.2.4)52 b(P)o(ost\014x)16 b(incremen)o(t)g(and)i(decremen)o(t)f
(op)q(erators)-1193 88 y @F14 @sf(The)h(Committee)d(has)i(not)g(endorsed)g
(the)g(practice)g(in)g(some)g(implemen)o(tati)o(ons)f(of)g(consid-)-1650 
57 y(ering)f(p)q(ost-incremen)o(t)g(and)h(p)q(ost-decremen)o(t)f(op)q
(erator)f(expressions)h(to)g(b)q(e)h(lv)m(alues.)-1516 130 y @F6 @sf
(3.3.3)56 b(Unary)18 b(op)r(erators)-576 88 y @F9 @sf(3.3.3.1)52 b(Pre\014x)
16 b(incremen)o(t)g(and)i(decremen)o(t)f(op)q(erators)-1173 89 y @F14 @sf
(See)f @F12 @sf(x)q @F14 @sf(3.3.2)o(.4.)o -244 128 a @F9 @sf(3.3.3.2)52 b
(Address)16 b(and)i(indirection)e(op)q(erators)-983 89 y @F14 @sf(Some)f
(implemen)o(tati)o(ons)e(ha)o(v)o(e)g(not)h(allo)o(w)o(ed)f(the)h @F8 @sf
(&)g @F14 @sf(op)q(erator)f(to)g(b)q(e)i(applied)f(to)f(an)h(arra)o(y)f
(or)-1651 57 y(a)18 b(function.)28 b(\(The)18 b(construct)f(w)o(as)h(p)q
(ermitted)f(in)h(early)f(v)o(ersions)g(of)h(C,)f(then)h(later)f(made)-1650 
56 y(optional.\))h(The)d(Committee)f(has)g(endorsed)i(the)f(construct)f
(since)h(it)f(is)g(unam)o(biguous,)g(and)-1650 56 y(since)k(data)f
(abstraction)g(is)g(enhanced)i(b)o(y)f(allo)n(wing)e(the)i(imp)q(ortan)o
(t)e @F8 @sf(&)i @F14 @sf(op)q(erator)f(to)g(apply)-1651 57 y(uniformly)e
(to)f(an)o(y)h(addressable)g(en)o(tit)o(y)l(.)-717 128 y @F9 @sf(3.3.3.3)
52 b(Unary)17 b(arithmetic)g(op)q(erators)-832 89 y @F14 @sf(Unary)f(plus)f
(w)o(as)f(adopted)i(b)o(y)f(the)g(Committee)f(from)g(sev)o(eral)h
(implemen)o(tatio)o(ns,)f(for)h(sym-)-1651 56 y(metry)g(with)g(unary)g
(min)o(us.)-427 58 y(The)f(bit)o(wise)e(complemen)o(t)i(op)q(erator)e 
@F8 @sf(~)24 b @F14 @sf(,)14 b(and)g(the)f(other)h(bit)o(wise)e(op)q
(erators,)h(ha)o(v)o(e)g(no)o(w)-1651 57 y(b)q(een)i(de\014ned)f
(arithmeticall)o(y)e(for)h(unsigned)g(op)q(erands.)20 b(Suc)o(h)14 b(op)q
(erations)e(are)h(w)o(ell-de\014ned)-1650 56 y(b)q(ecause)f(of)e(the)g
(restriction)f(of)g(in)o(tegral)g(represen)o(tations)g(to)h(\\binary)f(n)o
(umeration)h(systems.")-1652 57 y(\(See)16 b @F12 @sf(x)p @F14 @sf
(3.1.2.5)o(.\))1119 124 y @F15 @sf(RA)m(TIONALE)-1763 b
43 @eop1

44 @bop0

44 @eop0
0 0 44 @bop1 112 50 a @F14 @sf(44)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F9 @sf(3.3.3.4)52 b(The)18 b @F8 @sf(sizeof)e 
@F9 @sf(op)q(erator)-663 86 y @F14 @sf(It)h(is)e(fundamen)o(tal)h(to)f
(the)h(correct)g(usage)g(of)f(functions)h(suc)o(h)h(as)e @F8 @sf(malloc)h 
@F14 @sf(and)g @F8 @sf(fread)f @F14 @sf(that)-1651 57 y @F8 @sf(sizeof)24 b
(\(char\))17 b @F14 @sf(b)q(e)h(exactly)f(one.)29 b(In)18 b(practice,)g
(this)f(means)h(that)f(a)h @F11 @sf(byte)j @F14 @sf(in)d(C)g(terms)f(is)
-1651 56 y(the)j(smallest)e(unit)h(of)g(storage,)f(ev)o(en)i(if)f(this)f
(unit)h(is)g(36)g(bits)g(wide;)h(and)g(all)e(ob)s(jects)h(are)-1651 57 y
(comprised)d(of)e(an)h(in)o(tegral)f(n)o(um)o(b)q(er)h(of)g(these)h
(smallest)d(units.)20 b(\(See)15 b @F12 @sf(x)q @F14 @sf(1.6.\))-1274 56 y
(The)d(Standard,)h(lik)o(e)e(the)h(Base)g(Do)q(cumen)o(t,)g(de\014nes)h
(the)g(result)e(of)h(the)g @F8 @sf(sizeof)f @F14 @sf(op)q(erator)-1651 57 y
(to)22 b(b)q(e)i(a)e(constan)o(t)g(of)g(an)h(unsigned)g(in)o(tegral)e(t)o
(yp)q(e.)42 b(Common)22 b(implemen)o(tatio)o(ns,)h(and)-1650 56 y(common)
16 b(usage,)g(ha)o(v)o(e)g(often)g(presumed)g(that)g(the)g(resulting)f(t)o
(yp)q(e)h(is)g @F8 @sf(int)p @F14 @sf(.)22 b(Old)16 b(co)q(de)h(that)-1651 
57 y(dep)q(end)q(s)i(on)g(this)e(b)q(eha)o(vior)h(has)g(nev)o(er)h(b)q
(een)g(p)q(ortable)f(to)f(implemen)o(tations)g(that)g(de\014ne)-1649 56 y
(the)g(result)f(to)g(b)q(e)i(a)e(t)o(yp)q(e)h(other)f(than)g @F8 @sf(int)p 
@F14 @sf(.)24 b(The)17 b(Committee)e(did)i(not)f(feel)g(it)g(w)o(as)g
(prop)q(er)-1650 57 y(to)f(c)o(hange)g(the)h(language)e(to)h(protect)f
(incorrect)h(co)q(de.)-907 56 y(The)30 b(t)o(yp)q(e)g(of)g @F8 @sf(sizeof)p 
@F14 @sf(,)i(whatev)o(er)d(it)g(is,)k(is)c(published)i(\(in)e(the)h
(library)f(header)-1650 57 y @F8 @sf(<stddef.h>)p @F14 @sf(\))18 b(as)h 
@F8 @sf(size)s 14 -2 z 14 x(t)p @F14 @sf(,)h(since)g(it)e(is)h(useful)h
(for)f(the)g(programmer)g(to)f(b)q(e)i(able)g(to)f(refer)-1651 56 y(to)e
(this)g(t)o(yp)q(e.)27 b(This)18 b(requiremen)o(t)f(implicitl)o(y)f
(restricts)h @F8 @sf(size)s 14 -2 z 13 x(t)h @F14 @sf(to)f(b)q(e)h(a)f
(synon)o(ym)h(for)e(an)-1650 57 y(existing)d(unsigned)i(in)o(teger)e(t)o
(yp)q(e,)g(th)o(us)h(quashing)g(an)o(y)f(notion)g(that)g(the)h(largest)f
(declarable)-1651 56 y(ob)s(ject)k(migh)o(t)g(b)q(e)h(to)q(o)f(big)g(to)g
(span)h(ev)o(en)g(with)e(an)i @F8 @sf(unsigned)23 b(long)p @F14 @sf(.)j
(This)17 b(also)g(restricts)-1652 56 y(the)g(maxim)o(um)f(n)o(um)o(b)q(er)h
(of)g(elemen)o(ts)f(that)g(ma)o(y)g(b)q(e)i(declared)f(in)f(an)h(arra)o(y)l
(,)f(since)h(for)f(an)o(y)-1651 57 y(arra)o(y)e @F8 @sf(a)h @F14 @sf(of)g 
@F8 @sf(N)g @F14 @sf(elemen)o(ts,)-242 95 y @F8 @sf(N)24 b(==)g
(sizeof\(a\)/siz)o(eof\(a[0)o(])p(\))-837 94 y @F14 @sf(Th)o(us)12 b @F8 @sf
(size)s 14 -2 z 14 x(t)g @F14 @sf(is)f(also)g(a)g(con)o(v)o(enien)o(t)h(t)o
(yp)q(e)g(for)f(arra)o(y)g(sizes,)h(and)g(is)f(so)g(used)i(in)f(sev)o
(eral)f(library)-1652 57 y(functions.)20 b(\(See)c @F12 @sf(x)p @F14 @sf
(4.9.8.)o(1,)d @F12 @sf(x)q @F14 @sf(4.9.8.)o(2,)o 14 x @F12 @sf(x)p 
@F14 @sf(4.10.3.1)o(,)h(etc.\))-955 107 y(The)22 b(Standard)f(sp)q(eci\014es)g
(that)g(the)g(argumen)o(t)f(to)g @F8 @sf(sizeof)h @F14 @sf(can)g(b)q(e)g
(an)o(y)g(v)m(alue)g(except)h(a)-1651 57 y(bit)f(\014eld,)i(a)e(v)o(oid)f
(expression,)j(or)d(a)h(function)g(designator.)37 b(This)21 b(generalit)o
(y)f(allo)o(w)o(s)g(for)-1651 56 y(in)o(teresting)14 b(en)o(vironmen)o
(tal)g(enquiries;)h(giv)o(en)g(the)g(declarations)-970 95 y @F8 @sf(int)
48 b(*p,)23 b(*q;)-478 94 y @F14 @sf(these)16 b(expressions)f(determine)g
(the)g(size)h(of)e(the)i(t)o(yp)q(e)f(used)h(for)e(...)-984 95 y @F8 @sf
(sizeof\(F\(x\)\))94 b(/*)24 b(...)f(F's)h(return)f(value)g(*/)-1003 57 y
(sizeof\(p-q\))118 b(/*)24 b(...)f(pointer)g(difference)g(*/)-1242 94 y 
@F14 @sf(\(The)16 b(last)e(t)o(yp)q(e)h(is)g(of)f(course)i(a)o(v)m
(ailable)e(as)g @F8 @sf(ptrdiff)s 14 -2 z 14 x(t)h @F14 @sf(in)g @F8 @sf
(<stddef.h>)p @F14 @sf(.)o(\))-1326 123 y @F6 @sf(3.3.4)56 b(Cast)19 b(op)r
(erators)-534 86 y @F14 @sf(A)d @F8 @sf(\(void\))e @F14 @sf(cast)h(is)f
(explicitly)g(p)q(ermitted,)h(more)g(for)f(do)q(cumen)o(tation)h(than)g
(for)g(utilit)n(y)l(.)-1569 108 y(Nothing)f(p)q(ortable)f(can)i(b)q(e)g
(said)e(ab)q(out)h(casting)f(in)o(tegers)g(to)h(p)q(oin)o(ters,)f(or)h
(vice)g(v)o(ersa,)f(since)-1650 56 y(the)j(t)o(w)o(o)e(are)h(no)o(w)f
(incommensurate.)-601 57 y(The)19 b(de\014nition)f(of)f(these)i(con)o(v)o
(ersions)e(adopted)i(in)f(the)g(Standard)g(resem)o(bles)g(that)g(in)-1651 
56 y(the)h(Base)f(Do)q(cumen)o(t,)g(but)g(with)f(sev)o(eral)h(signi\014can)o
(t)f(di\013erences.)28 b(The)18 b(Base)h(Do)q(cumen)o(t)-1651 57 y
(required)e(that)e(a)h(p)q(oin)o(ter)g(successfully)g(con)o(v)o(erted)g
(to)f(an)i(in)o(teger)e(m)o(ust)h(b)q(e)g(guaran)o(teed)g(to)-1763 124 y
44 @eop1

45 @bop0
@F6 @sf
[<
FFF00600FFFFFFF00F00FFFF06000F0007E006001F8007E006001F8007E006001F8007E006
003FC007E006003FC007E006007E6007E006007E6007E00600FC3007E00600FC3007E00601
F81807E00601F81807E00601F81807E00603F00C07E00603F00C07E00607E00607E00607E0
0607E0060FC00307E0060FC00307E0060FC00307E0061F800187E0061F800187E0063F0000
C7E0063F0000C7E0067E000067E0067E000067E006FC000037E006FC000037E006FC000037
E007F800001FE0FFF800001FFFFFF000000FFF>
. 48 34 -2 33 53] 77 @dc

45 @eop0

0 0 45 @bop1 112 50 a @F10 @sf(3.3.)35 b(Expressions)1265 b @F14 @sf(45)
-1651 145 y(b)q(e)18 b(con)o(v)o(ertible)d(bac)o(k)h(to)g(the)h(same)f(p)q
(oin)o(ter.)23 b(This)16 b(in)o(teger-to-p)q(oin)o(ter)e(con)o(v)o(ersion)i
(is)g(no)o(w)-1651 57 y(sp)q(eci\014ed)23 b(as)d @F11 @sf
(implementation-de\014ne)n(d)p @F14 @sf(.)36 b(While)21 b(a)f(high-qualit)o
(y)g(implemen)o(tatio)o(n)g(w)o(ould)-1651 56 y(preserv)o(e)14 b(the)g
(same)g(address)f(v)m(alue)h(whenev)o(er)h(p)q(ossible,)e(it)g(w)o(as)g
(considered)h(impractical)e(to)-1651 56 y(require)k(that)f(the)h(iden)o
(tical)f(represen)o(tation)g(b)q(e)h(preserv)o(ed.)22 b(The)16 b
(Committee)f(noted)h(that,)-1652 57 y(on)d(some)f(curren)o(t)g(mac)o(hine)g
(implemen)o(tations,)f(iden)o(tical)g(represen)o(tations)h(are)g(required)g
(for)-1651 56 y(e\016cien)o(t)j(co)q(de)h(generation)f(for)f(p)q(oin)o
(ter)h(comparisons)f(and)h(arithmetic)f(op)q(erations.)-1437 57 y(The)i
(con)o(v)o(ersion)f(of)g(the)h(in)o(teger)e(constan)o(t)h(0)g(to)g(a)h(p)q
(oin)o(ter)f(is)g(de\014ned)i(similarl)o(y)d(to)h(the)-1650 56 y(Base)e
(Do)q(cumen)o(t.)19 b(The)13 b(resulting)f(p)q(oin)o(ter)g(m)o(ust)g(not)h
(address)f(an)o(y)h(ob)s(ject,)f(m)o(ust)g(app)q(ear)h(to)-1651 57 y(b)q
(e)k(equal)e(to)g(an)g(in)o(teger)g(v)m(alue)h(of)f(0,)g(and)g(ma)o(y)g(b)q
(e)h(assigned)f(to)g(or)g(compared)h(for)f(equalit)o(y)-1652 56 y(with)g
(an)o(y)h(other)f(p)q(oin)o(ter.)20 b(This)15 b(de\014nition)g(do)q(es)h
(not)f(necessarily)g(imply)g(a)g(represen)o(tation)-1651 57 y(b)o(y)d(a)f
(bit)g(pattern)g(of)g(all)f(zeros:)18 b(an)11 b(implemen)o(tatio)o(n)g
(could,)g(for)g(instance,)h(use)f(some)g(address)-1650 56 y(whic)o(h)16 b
(causes)f(a)g(hardw)o(are)f(trap)h(when)h(dereferenced.)-982 107 y(The)e
(t)o(yp)q(e)e @F8 @sf(char)h @F14 @sf(m)o(ust)f(ha)o(v)o(e)g(the)h(least)f
(strict)g(alignmen)o(t)f(of)h(an)o(y)h(t)o(yp)q(e,)g(so)f @F8 @sf(char)23 b
(*)13 b @F14 @sf(has)g(often)-1651 57 y(b)q(een)k(used)f(as)e(a)h(p)q
(ortable)g(t)o(yp)q(e)g(for)g(represen)o(ting)f(arbitrary)g(ob)s(ject)h(p)q
(oin)o(ters.)k(This)c(usage)-1651 56 y(creates)10 b(an)g(unfortunate)g
(confusion)g(b)q(et)o(w)o(een)h(the)f(ideas)g(of)f @F11 @sf(arbitr)n(ary)k
(p)n(ointer)i @F14 @sf(and)10 b @F11 @sf(char)n(acter)-1650 57 y(or)15 b
(string)f(p)n(ointer)p @F14 @sf(.)19 b(The)14 b(new)g(t)o(yp)q(e)f @F8 @sf
(void)23 b(*)p @F14 @sf(,)14 b(whic)o(h)f(has)g(the)h(same)f(represen)o
(tation)f(as)h @F8 @sf(char)-1651 56 y(*)p @F14 @sf(,)i(is)g(therefore)g
(preferable)g(for)f(arbitrary)g(p)q(oin)o(ters.)-936 107 y(It)22 b(is)f(p)q
(ossible)g(to)g(cast)g(a)g(p)q(oin)o(ter)g(of)g(some)g(quali\014ed)h(t)o
(yp)q(e)f(\()p @F12 @sf(x)p @F14 @sf(3.5.3\))f(to)h(an)g(unquali\014ed)-1650 
57 y(v)o(ersion)h(of)g(that)g(t)o(yp)q(e.)42 b(Since)23 b(the)g(quali\014er)f
(de\014nes)h(some)f(sp)q(ecial)h(access)f(or)g(aliasing)-1652 56 y(prop)q
(ert)o(y)l(,)14 b(ho)o(w)o(ev)o(er,)f(an)o(y)h(dereference)i(of)d(the)i
(cast)e(p)q(oin)o(ter)h(results)f(in)h @F11 @sf(unde\014ne)n(d)h(b)n
(ehavior)p @F14 @sf(.)-1651 108 y(The)j(Standard)g(\()p @F12 @sf(x)p 
@F14 @sf(3.2.1.)o(4\))e(requires)h(that)g(a)g(cast)h(of)f(one)g(\015oating)g
(p)q(oin)o(t)g(t)o(yp)q(e)h(to)f(another)-1651 56 y(\(e.g.,)d @F8 @sf
(double)g @F14 @sf(to)h @F8 @sf(float)p @F14 @sf(\))f(results)h(in)g(an)g
(actual)f(con)o(v)o(ersion.)-1097 123 y @F6 @sf(3.3.5)56 b(Multiplicati)o
(v)n(e)17 b(op)r(erators)-765 86 y @F14 @sf(There)k(w)o(as)f(considerable)g
(sen)o(timen)o(t)f(for)h(giving)f(more)h(p)q(ortable)g(seman)o(tics)g(to)f
(division)-1651 56 y(\(and)h(hence)h(remainder\))e(b)o(y)h(sp)q(ecifying)g
(some)g(w)o(a)o(y)e(of)i(giving)f(less)g(mac)o(hine)h(dep)q(enden)q -1 x
(t)-1650 57 y(results)d(for)f(negativ)o(e)g(op)q(erands.)25 b(F)l(ew)17 b
(Committee)f(mem)o(b)q(ers)h(w)o(an)o(ted)f(to)g(require)h(this)f(b)o(y)
-1650 56 y(default,)23 b(lest)f(existing)f(fast)g(co)q(de)i(b)q(e)f(gra)o
(v)o(ely)f(slo)o(w)o(ed.)39 b(One)23 b(suggestion)e(w)o(as)h(to)f(mak)o(e)
-1651 57 y @F8 @sf(signed)j(int)12 b @F14 @sf(a)h(t)o(yp)q(e)g(distinct)f
(from)h(plain)f @F8 @sf(int)p @F14 @sf(,)h(and)g(require)g(b)q
(etter-de\014ned)i(seman)o(tics)d(for)-1651 56 y @F8 @sf(signed)24 b(int)
16 b @F14 @sf(division)g(and)h(remainder.)25 b(This)17 b(suggestion)f(w)o
(as)g(opp)q(osed)i(on)e(the)i(grounds)-1651 57 y(that)e(e\013ectiv)o(ely)f
(adding)h(sev)o(eral)f(t)o(yp)q(es)h(w)o(ould)g(ha)o(v)o(e)f(consequences)j
(out)d(of)h(prop)q(ortion)f(to)-1651 56 y(the)f(b)q(ene\014t)g(to)e(b)q(e)i
(obtained;)f(the)h(Committ)o(ee)e(t)o(wice)h(rejected)g(this)g(approac)o
(h.)19 b(Instead)13 b(the)-1650 57 y(Committee)g(has)g(adopted)h(new)g
(library)e(functions)i @F8 @sf(div)f @F14 @sf(and)h @F8 @sf(ldiv)f @F14 @sf
(whic)o(h)h(pro)q(duce)g(in)o(tegral)-1652 56 y(quotien)o(t)g(and)i
(remainder)e(with)g(w)o(ell-de\014ned)i(sign)e(seman)o(tics.)19 b(\(See)c 
@F12 @sf(x)p @F14 @sf(4.10.6.2)o(,)e @F12 @sf(x)q @F14 @sf(4.10.6)o(.3.)o
(\))-1581 57 y(The)21 b(Committee)e(rejected)i(extending)g(the)g @F8 @sf
(%)f @F14 @sf(op)q(erator)g(to)g(w)o(ork)g(on)g(\015oating)g(t)o(yp)q(es;)
-1651 56 y(suc)o(h)c(usage)f(w)o(ould)g(duplicate)g(the)g(facilit)n(y)f
(pro)o(vided)h(b)o(y)g @F8 @sf(fmod)p @F14 @sf(.)k(\(See)d @F12 @sf(x)p 
@F14 @sf(4.5.6.5)o(.\))-1443 123 y @F6 @sf(3.3.6)56 b(Additiv)n(e)18 b(op)r
(erators)-634 86 y @F14 @sf(As)g(with)f(the)h @F8 @sf(sizeof)e @F14 @sf
(op)q(erator,)h(implemen)o(tations)f(ha)o(v)o(e)h(tak)o(en)g(di\013eren)o
(t)g(approac)o(hes)h(in)-1651 57 y(de\014ning)13 b(a)g(t)o(yp)q(e)f(for)g
(the)g(di\013erence)h(b)q(et)o(w)o(een)g(t)o(w)o(o)e(p)q(oin)o(ters)h
(\(see)g @F12 @sf(x)p @F14 @sf(3.3.3.4)o(\).)17 b(It)c(is)f(imp)q(ortan)o
(t)-253 124 y @F15 @sf(RA)m(TIONALE)-1763 b
45 @eop1

46 @bop0
@F8 @sf
[<
01FC0003FE0001FC0000700000700000700000700000700000700000700000700000700000
F80000F80001DC0001DC0001DC00038E00038E000707000707000F07800E03801E03C01C01
C0FF07F8FF07F8FF07F8>
. 21 28 -1 27 24] 89 @dc
@F6 @sf
[<
FFFFFFC000FFFFFFF80007F001FE0007F0007F0007F0003F8007F0003F8007F0001FC007F0
001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001F8007F0003F8007F0003F
0007F0007E0007F001FC0007FFFFF00007FFFFF00007F003F80007F000FC0007F000FE0007
F0007E0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000
7E0007F000FC0007F001F800FFFFFFE000FFFFFF8000>
. 34 34 -2 33 40] 66 @dc
[<
7FF8007FF8000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F
80000F80000F80000F80000F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80
000F80000F80000F80000F83C00F87E007C7E003C7E001E3E000FFC0003F80>
. 19 35 -1 34 17] 102 @dc

46 @eop0

0 0 46 @bop1 112 50 a @F14 @sf(46)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F14 @sf(that)15 b(this)g(t)o(yp)q(e)g(b)q(e)h
(signed,)f(in)g(order)g(to)g(obtain)f(prop)q(er)i(algebraic)e(ordering)g
(when)i(dealing)-1651 57 y(with)d(p)q(oin)o(ters)f(within)g(the)g(same)h
(arra)o(y)l(.)18 b(Ho)o(w)o(ev)o(er,)11 b(the)i(magnitude)f(of)h(a)f(p)q
(oin)o(ter)g(di\013erence)-1650 56 y(can)h(b)q(e)g(as)e(large)h(as)f(the)i
(size)f(of)f(the)i(largest)d(ob)s(ject)i(that)f(can)i(b)q(e)f(declared.)
19 b(\(And)13 b(since)f(that)-1651 56 y(is)j(an)g(unsigned)h(t)o(yp)q(e,)f
(the)g(di\013erence)h(b)q(et)o(w)o(een)f(t)o(w)o(o)f(p)q(oin)o(ters)h(ma)o
(y)f(cause)h(an)h(o)o(v)o(er\015o)o(w.)o(\))-1537 61 y(The)21 b(t)o(yp)q
(e)g(of)f @F11 @sf(p)n(ointer)h(minus)g(p)n(ointer)k @F14 @sf(is)20 b
(de\014ned)i(to)e(b)q(e)i @F8 @sf(int)e @F14 @sf(in)g(K&R.)38 b(The)20 b
(Stan-)-1650 56 y(dard)f(de\014nes)h(the)f(result)g(of)f(this)h(op)q
(eration)f(to)g(b)q(e)i(a)f(signed)f(in)o(teger,)h(the)g(size)g(of)g(whic)o
(h)-1651 57 y(is)h(implemen)o(tation-de\014ned.)35 b(The)21 b(t)o(yp)q(e)f
(is)g(published)g(as)g @F8 @sf(ptrdiff)s 14 -2 z 14 x(t)p @F14 @sf(,)g(in)h
(the)f(standard)-1651 56 y(header)c @F8 @sf(<stddef.h>)p @F14 @sf(.)k(Old)c
(co)q(de)g(recompiled)f(b)o(y)g(a)h(conforming)e(compiler)h(ma)o(y)g(no)g
(longer)-1651 57 y(w)o(ork)d(if)g(the)g(implemen)o(tation)f(de\014nes)i
(the)g(result)f(of)g(suc)o(h)g(an)h(op)q(eration)e(to)h(b)q(e)h(a)f(t)o
(yp)q(e)h(other)-1651 56 y(than)f @F8 @sf(int)f @F14 @sf(and)h(if)f(the)h
(program)e(dep)q(ende)q(d)j(on)f(the)f(result)g(to)g(b)q(e)i(of)e(t)o(yp)q
(e)g @F8 @sf(int)p @F14 @sf(.)19 b(This)11 b(b)q(eha)o(vior)-1651 56 y(w)o
(as)17 b(considered)h(b)o(y)f(the)h(Committee)e(to)h(b)q(e)h(correctable.)
26 b(Ov)o(er\015o)o(w)17 b(w)o(as)g(considered)h(not)-1651 57 y(to)e
(break)h(old)f(co)q(de)h(since)g(it)f(w)o(as)g(unde\014ned)i(b)o(y)e(K&R.)
26 b(Mismatc)o(h)15 b(of)h(t)o(yp)q(es)h(b)q(et)o(w)o(een)f(ac-)-1650 56 y
(tual)c(and)h(formal)e(argumen)o(t)g(declarations)g(is)h(correctable)g(b)o
(y)h(including)f(a)g(prop)q(erly)g(de\014ned)-1649 57 y(function)k(protot)o
(yp)q(e)e(in)h(the)g(scop)q(e)h(of)f(the)g(function)g(in)o(v)o(o)q
(cation.)-1097 60 y(An)22 b(imp)q(ortan)o(t)f(endorsemen)o(t)h(of)g
(widespread)g(practice)g(is)f(the)i(requiremen)o(t)e(that)h(a)-1651 57 y
(p)q(oin)o(ter)16 b(can)f(alw)o(a)o(ys)f(b)q(e)i(incremen)o(ted)g(to)f 
@F11 @sf(just)h(p)n(ast)k @F14 @sf(the)c(end)g(of)f(an)g(arra)o(y)l(,)f
(with)h(no)h(fear)f(of)-1651 56 y(o)o(v)o(er\015o)o(w)f(or)h(wraparound:)
-293 113 y @F8 @sf(SOMETYPE)23 b(array[SPAN];)-503 57 y(/*)h(...)f(*/)-215 
56 y(for)h(\(p)f(=)h(&array[0];)f(p)g(<)h(&array[SPAN];)e(p++\))-1194 109 y 
@F14 @sf(This)d(stipulati)o(on)e(merely)i(requires)f(that)g(ev)o(ery)g(ob)s
(ject)g(b)q(e)h(follo)o(w)o(ed)e(b)o(y)i(one)f(b)o(yte)h(whose)-1651 57 y
(address)14 b(is)f(represen)o(table.)20 b(That)13 b(b)o(yte)g(can)h(b)q(e)h
(the)e(\014rst)h(b)o(yte)f(of)g(the)h(next)g(ob)s(ject)f(declared)-1650 
56 y(for)g(all)f(but)h(the)g(last)e(ob)s(ject)i(lo)q(cated)f(in)h(a)g(con)o
(tiguous)f(segmen)o(t)g(of)h(memory)l(.)18 b(\(In)c(the)f(exam-)-1651 57 y
(ple,)19 b(the)e(address)h @F8 @sf(&array[SPAN])e @F14 @sf(m)o(ust)h
(address)h(a)g(b)o(yte)f(follo)o(wi)o(ng)g(the)g(highest)h(elemen)o(t)-1651 
56 y(of)f @F8 @sf(array)p @F14 @sf(.\))23 b(Since)17 b(the)f(p)q(oin)o
(ter)h(expression)f @F8 @sf(p+1)g @F14 @sf(need)i(not)e(\(and)g(should)h
(not\))f(b)q(e)h(derefer-)-1650 57 y(enced,)f(it)f(is)g(unnecessary)g(to)g
(lea)o(v)o(e)f(ro)q(om)h(for)f(a)h(complete)g(ob)s(ject)g(of)g(size)g 
@F8 @sf(sizeof\(*p\))p @F14 @sf(.)-1525 60 y(In)e(the)f(case)g(of)f @F8 @sf
(p-1)p @F14 @sf(,)h(on)g(the)g(other)f(hand,)i(an)f(en)o(tire)f(ob)s(ject)h 
@F11 @sf(would)17 b @F14 @sf(ha)o(v)o(e)12 b(to)f(b)q(e)h(allo)q(cated)-1651 
56 y(prior)17 b(to)g(the)h(arra)o(y)f(of)g(ob)s(jects)g(that)g @F8 @sf(p)g 
@F14 @sf(tra)o(v)o(erses,)g(so)g(decremen)o(t)h(lo)q(ops)g(that)e(run)i
(o\013)f(the)-1650 57 y(b)q(ottom)h(of)h(an)g(arra)o(y)e(ma)o(y)h(fail.)
30 b(This)18 b(restriction)g(allo)o(w)o(s)g(segmen)o(ted)g(arc)o
(hitectures,)h(for)-1651 56 y(instance,)c(to)g(place)g(ob)s(jects)f(at)h
(the)g(start)f(of)h(a)g(range)g(of)f(addressable)i(memory)l(.)-1439 144 y 
@F6 @sf(3.3.7)56 b(Bit)n(wise)18 b(shift)g(op)r(erators)-728 93 y @F14 @sf
(See)e @F12 @sf(x)q @F14 @sf(3.3.3)o(.3)d(for)i(a)g(discussion)g(of)g(the)g
(arithmetic)f(de\014nition)h(of)f(these)i(op)q(erators.)-1415 61 y(The)d
(description)f(of)g(shift)g(op)q(erators)f(in)i(K&R)g(suggests)f(that)g
(shifting)f(b)o(y)i(a)f @F8 @sf(long)g @F14 @sf(coun)o(t)-1651 56 y
(should)18 b(force)e(the)h(left)g(op)q(erand)g(to)g(b)q(e)g(widened)h(to)e 
@F8 @sf(long)h @F14 @sf(b)q(efore)g(b)q(eing)h(shifted.)25 b(A)17 b(more)
-1651 57 y(in)o(tuitiv)o(e)g(practice,)h(endorsed)h(b)o(y)f(the)g
(Committee,)f(is)h(that)f(the)h(t)o(yp)q(e)g(of)g(the)g(shift)g(coun)o(t)
-1651 56 y(has)e(no)f(b)q(earing)g(on)g(the)g(t)o(yp)q(e)g(of)g(the)g
(result.)-146 126 y @F7 @sf(QUIET)g(CHANGE)-876 83 y @F14 @sf(Shifting)f
(b)o(y)h(a)f @F8 @sf(long)g @F14 @sf(coun)o(t)h(no)g(longer)f(co)q(erces)h
(the)g(shifted)f(op)q(erand)i(to)e @F8 @sf(long)p @F14 @sf(.)-1650 124 y
46 @eop1

47 @bop0
@F14 @sf
[<
70F8F8F8700000000000202020202070707070707070707070F8F8F8F8F8F8F870>
. 5 33 -4 32 13] 33 @dc
@F6 @sf
[<
FFFF800FF0FFFF803FF807F000FF0C07F000FE0607F001FC0607F001FC0007F001FC0007F0
01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F003F80007F007F0
0007F00FE00007FFFF800007FFFFC00007F007F00007F001F80007F000FC0007F0007E0007
F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000
FC0007F001F80007F007F000FFFFFFC000FFFFFE0000>
. 39 34 -2 33 42] 82 @dc
@F6 @sf
[<
0000FFE00000FFE000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
001F0001FC1F0007FF9F000FC1DF001F007F003E003F007E001F007E001F00FC001F00FC00
1F00FC001F00FC001F00FC001F00FC001F00FC001F007C001F007E001F007E003F003F003F
001F006F000FC1C70007FF870000FE0300>
. 27 32 -2 21 30] 113 @dc
@F6 @sf
[<
00FE0007FFC00F83E01F01F03E00F83E00F87C007C7C007C7C007CFC007EFC007EFC007EFC
007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007C7C007C7C00
7C7C007C3E00F83E00F81F01F00F83E007FFC000FE00>
. 23 32 -2 31 28] 48 @dc
[<
FFF00000C0FFF00001C006000003C006000003C006000007C00600000FC00600001FC00600
003FC00600007FC00600007FC0060000FFC0060001FEC0060003FCC0060007F8C0060007F0
C006000FF0C006001FE0C006003FC0C006007F80C00600FF00C00600FE00C00601FE00C006
03FC00C00607F800C0060FF000C0060FE000C0061FE000C0063FC000C0067F8000C006FF00
00C007FE0000C007FC0000C0FFFC001FFEFFF8001FFE>
. 39 34 -2 33 44] 78 @dc
[<
FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC007F0
0007E007F00007E007F00003F007F00003F007F00003F007F00003F807F00003F807F00003
F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F007
F00003F007F00003F007F00007F007F00007E007F00007E007F0000FC007F0001F8007F000
3F0007F0007E0007F003FC00FFFFFFF000FFFFFF8000>
. 37 34 -2 33 43] 68 @dc
@F6 @sf
[<
FFFFFFF0FFFFFFF007F007F007F001F007F000F007F0007007F0007007F0003807F0003807
F0001807F0001807F0001807F0001807F0000007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
0007F0000007F0000007F0000007F00000FFFFE000FFFFE000>
. 29 34 -2 33 34] 76 @dc
@F11 @sf
[<
01FC0000078380000E00E0001C00700038003C0038001E0078000F007000070070000380F0
0003C0F00001C0F00001E0F00000E0F00000F0F00000F07800007878000078780000787800
00783C0000383C0000381C0000381E0000380E00003807000038078000380380007001C000
7000E00060003000E0001C01C0000707000001FC00>
. 29 33 -6 31 35] 79 @dc

47 @eop0

0 0 47 @bop1 112 50 a @F10 @sf(3.3.)35 b(Expressions)1265 b @F14 @sf(47)
-1651 145 y(The)19 b(Committee)e(has)h(a\016rmed)g(the)h(freedom)f(in)g
(implemen)o(tation)f(gran)o(ted)h(b)o(y)g(the)g(Base)-1650 57 y(Do)q
(cumen)o(t)13 b(in)f(not)f(requiring)h(the)g(signed)g(righ)o(t)f(shift)h
(op)q(eration)f(to)h(sign)g(extend,)h(since)f(suc)o(h)-1650 56 y(a)k
(requiremen)o(t)f(migh)o(t)f(slo)o(w)g(do)o(wn)i(fast)e(co)q(de)i(and)g
(since)g(the)f(usefulness)h(of)f(sign)g(extended)-1649 56 y(shifts)d(is)g
(marginal.)17 b(\(Shifting)12 b(a)g(negativ)o(e)f(t)o(w)o(os-complemen)o
(t)g(in)o(teger)h(arithmetical)o(ly)f(righ)o(t)-1652 57 y(one)16 b(place)f
(is)g @F11 @sf(not)k @F14 @sf(the)c(same)g(as)g(dividing)g(b)o(y)g(t)o(w)o
(o!)o(\))-918 121 y @F6 @sf(3.3.8)56 b(Relational)17 b(op)r(erators)-672 
86 y @F14 @sf(F)l(or)e(an)h(explanation)f(of)g(wh)o(y)g(the)h(p)q(oin)o
(ter)f(comparison)g(of)g(the)h(ob)s(ject)f(p)q(oin)o(ter)g @F8 @sf(P)g 
@F14 @sf(with)g(the)-1650 56 y(p)q(oin)o(ter)g(expression)g @F8 @sf(P+1)g 
@F14 @sf(is)g(alw)o(a)o(ys)o 14 x(safe,)g(see)g(Rationale)f @F12 @sf(x)q 
@F14 @sf(3.3.6)o(.)-1163 122 y @F6 @sf(3.3.9)56 b(Equalit)n(y)17 b(op)r
(erators)-628 85 y @F14 @sf(The)h(Committee)e(considered,)i(on)g(more)f
(than)g(one)h(o)q(ccasion,)f(p)q(ermitting)f(comparison)h(of)-1651 57 y
(structures)f(for)f(equalit)o(y)l(.)20 b(Suc)o(h)d(prop)q(osals)e
(foundered)h(on)g(the)g(problem)f(of)g(holes)h(in)f(struc-)-1650 56 y
(tures.)30 b(A)19 b(b)o(yte-wise)f(comparison)f(of)h(t)o(w)o(o)g
(structures)g(w)o(ould)g(require)g(that)g(the)g(holes)h(as-)-1651 57 y
(suredly)h(b)q(e)h(set)f(to)f(zero)h(so)f(that)h(all)f(holes)g(w)o(ould)h
(compare)f(equal,)i(a)e(di\016cult)h(task)f(for)-1651 56 y(automatic)g(or)g
(dynamically)f(allo)q(cated)h(v)m(ariables.)33 b(\(The)19 b(p)q(ossibilit)o
(y)f(of)h(union-t)o(yp)q(e)h(ele-)-1650 57 y(men)o(ts)f(in)g(a)g
(structure)g(raises)f(insup)q(erable)i(problems)f(with)f(this)h(approac)o
(h.\))31 b(Otherwise)-1651 56 y(the)13 b(implemen)o(tation)f(w)o(ould)g
(ha)o(v)o(e)g(to)h(b)q(e)g(prepared)g(to)g(break)f(a)h(structure)g
(comparison)e(in)o(to)-1651 57 y(an)17 b(arbitrary)f(n)o(um)o(b)q(er)h(of)f
(mem)o(b)q(er)h(comparisons;)g(a)f(seemingly)g(simple)h(expression)f
(could)-1650 56 y(th)o(us)f(expand)h(in)o(to)e(a)h(substan)o(tial)f
(stretc)o(h)h(of)f(co)q(de,)i(whic)o(h)f(is)f(con)o(trary)h(to)f(the)h 
@F11 @sf(spirit)i(of)f(C)p @F14 @sf(.)-1580 57 y(In)h(p)q(oin)o(ter)e
(comparisons,)f(one)i(of)g(the)g(op)q(erands)g(ma)o(y)f(b)q(e)h(of)g(t)o
(yp)q(e)g @F8 @sf(void)23 b(*)p @F14 @sf(.)f(In)16 b(partic-)-1651 56 y
(ular,)g(this)g(allo)o(w)o(s)f @F8 @sf(NULL)p @F14 @sf(,)g(whic)o(h)i(can)f
(b)q(e)h(de\014ned)h(as)d @F8 @sf(\(void)24 b(*\)0)p @F14 @sf(,)15 b(to)h
(b)q(e)h(compared)f(to)g(an)o(y)-1651 56 y(ob)s(ject)f(p)q(oin)o(ter.)-293 
122 y @F6 @sf(3.3.10)56 b(Bit)n(wise)18 b(AND)h(op)r(erator)-756 86 y 
@F14 @sf(See)d @F12 @sf(x)q @F14 @sf(3.3.3)o(.3)d(for)i(a)g(discussion)g
(of)g(the)g(arithmetic)f(de\014nition)h(of)f(the)i(bit)o(wise)e(op)q
(erators.)-1601 121 y @F6 @sf(3.3.11)56 b(Bit)n(wise)18 b(exclusiv)o -2 x
(e)f(OR)i(op)r(erator)-947 86 y @F14 @sf(See)d @F12 @sf(x)q @F14 @sf
(3.3.3)o(.3.)o -244 121 a @F6 @sf(3.3.12)56 b(Bit)n(wise)18 b(inclusiv)n
(e)f(OR)i(op)r(erator)-939 86 y @F14 @sf(See)d @F12 @sf(x)q @F14 @sf
(3.3.3)o(.3.)o -244 121 a @F6 @sf(3.3.13)56 b(Logical)17 b(AND)i(op)r
(erator)-749 87 y(3.3.14)56 b(Logical)17 b(OR)i(op)r(erator)-704 88 y
(3.3.15)56 b(Conditional)18 b(op)r(erator)-714 86 y @F14 @sf(The)g(syn)o
(tactic)f(restrictio)o(ns)f(on)i(the)f(middle)h(op)q(erand)g(of)f(the)g
(conditional)f(op)q(erator)h(ha)o(v)o(e)-1651 56 y(b)q(een)f(relaxed)d(to)g
(include)i(more)e(than)h(just)g @F11 @sf(lo)n(gic)n(al-OR-expr)n(ession)o 
3 x @F14 @sf(:)19 b(sev)o(eral)13 b(extan)o(t)g(imple-)-1651 57 y(men)o
(tations)h(ha)o(v)o(e)h(adopted)g(this)g(practice.)627 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
47 @eop1

48 @bop0
@F11 @sf
[<
3C07C00000620C600000F31E100000798F18000031860C000001C00E000001C00E000000C0
06000000E007000000E007000000E007000000E00700000060038000007003800000700380
0000700380000070038000007001C000003801C000003801C000003801C000003801C00000
3800E000001C00E000001C00E000001C00E000001C00E000001C00700000FFFFFF80000E00
7000000E007000000E007000000E0038000007003800000700380000070038000003031860
0003879CF00001878CF00000C3867000003F03E0>
. 36 41 2 31 28] 11 @dc

48 @eop0

0 0 48 @bop1 112 50 a @F14 @sf(48)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1580 145 y @F14 @sf(The)20 b(t)o(yp)q(e)g(of)g(a)g
(conditional)e(op)q(erator)h(expression)h(can)g(b)q(e)h @F8 @sf(void)p 
@F14 @sf(,)f(a)g(structure,)g(or)g(a)-1651 57 y(union;)f(most)d(other)h
(op)q(erators)g(do)g(not)g(deal)g(with)g(suc)o(h)h(t)o(yp)q(es.)26 b(The)
18 b(rules)f(for)g(balancing)-1651 56 y(t)o(yp)q(e)d(b)q(et)o(w)o(een)g(p)q
(oin)o(ter)f(and)h(in)o(teger)f(ha)o(v)o(e,)g(ho)o(w)o(ev)o(er,)g(b)q(een)i
(tigh)o(tened,)e(since)h(no)o(w)f(only)g(the)-1650 56 y(constan)o(t)i(0)g
(can)g(p)q(ortably)g(b)q(e)g(co)q(erced)h(to)f(p)q(oin)o(ter.)-854 57 y
(The)h(Standard)f(allo)o(ws)f(one)h(of)g(the)h(second)g(or)f(third)g(op)q
(erands)g(to)g(b)q(e)h(of)f(t)o(yp)q(e)h @F8 @sf(void)23 b(*)p @F14 @sf(,)
-1651 56 y(if)18 b(the)g(other)g(is)g(a)g(p)q(oin)o(ter)f(t)o(yp)q(e.)29 b
(Since)19 b(the)f(result)g(of)g(suc)o(h)g(a)g(conditional)f(expression)h
(is)-1651 57 y @F8 @sf(void)24 b(*)p @F14 @sf(,)14 b(an)i(appropriate)e
(cast)g(m)o(ust)h(b)q(e)h(used.)-849 121 y @F6 @sf(3.3.16)56 b(Assignmen)n
(t)18 b(op)r(erators)-735 85 y @F14 @sf(Certain)13 b(syn)o(tactic)g(forms)f
(of)h(assignmen)o(t)g(op)q(erators)f(ha)o(v)o(e)h(b)q(een)i(discon)o(tin)o
(ued,)e(and)h(others)-1651 57 y(tigh)o(tened)h(up)h(\(see)f @F12 @sf(x)p 
@F14 @sf(3.1.5\).)-433 56 y(The)j(storage)e(assignmen)o(t)g(need)i(not)f
(tak)o(e)f(place)i(un)o(til)e(the)h(next)h(sequence)g(p)q(oin)o(t.)26 b
(\(A)-1651 57 y(restriction)17 b(in)h(earlier)f(drafts)g(that)g(the)i
(storage)d(tak)o(e)i(place)g(b)q(efore)g(the)g(v)m(alue)g(of)g(the)g(ex-)
-1650 56 y(pression)e(is)g(used)h(has)f(b)q(een)h(remo)o(v)o(ed.\))22 b
(As)16 b(a)f(consequence,)j(a)d(straigh)o(tforw)o -1 x(ard)f(syn)o(tactic)
-1651 57 y(test)k(for)f(am)o(biguous)g(expressions)g(can)h(b)q(e)h
(stated.)27 b(Some)17 b(de\014nitions:)25 b(A)18 b @F11 @sf(side)g(e\013e)n
(ct)f @F14 @sf(is)h(a)-1651 56 y(storage)11 b(to)g(an)o(y)h(data)f(ob)s
(ject,)h(or)f(a)g(read)h(of)g(a)f(v)o(olatil)o(e)g(ob)s(ject.)18 b(An)12 b 
@F11 @sf(ambiguous)i(expr)n(ession)d @F14 @sf(is)-1651 57 y(one)k(whose)e
(v)m(alue)i(dep)q(ends)g(up)q(on)g(the)f(order)g(in)f(whic)o(h)h(side)g
(e\013ects)g(are)g(ev)m(aluated.)19 b(A)14 b @F11 @sf(pur)n(e)-1650 56 y
(function)j @F14 @sf(is)g(one)g(with)g(no)g(side)g(e\013ects;)h(an)f
(impure)g(function)g(is)g(an)o(y)f(other.)26 b(A)17 b @F11 @sf(se)n(quenc)n
(e)n(d)-1652 56 y(expr)n(ession)g @F14 @sf(is)h(one)g(whose)f(ma)s(jor)g
(op)q(erator)g(de\014nes)i(a)e(sequence)i(p)q(oin)o(t:)25 b(comma,)17 b 
@F8 @sf(&&)p @F14 @sf(,)h @F8 @sf(||)p @F14 @sf(,)-1651 57 y(or)f
(conditional)f(op)q(erator;)h(an)h @F11 @sf(unse)n(quenc)n(e)o -2 x(d)f
(expr)n(ession)f @F14 @sf(is)h(an)o(y)g(other.)26 b(W)l(e)17 b(can)g(then)h
(sa)o(y)-1651 56 y(that)c(an)f(unsequence)q(d)i(expression)f(is)f(am)o
(biguous)g(if)h(more)f(than)h(one)g(op)q(erand)g(in)o(v)o(ok)o(es)f(an)o
(y)-1651 57 y(impure)21 b(function,)g(or)f(if)g(more)f(than)i(one)f(op)q
(erand)h(con)o(tains)e(an)i(lv)m(alue)f(referencing)g(the)-1650 56 y(same)
15 b(ob)s(ject)f(and)h(one)f(or)g(more)g(op)q(erands)h(sp)q(ecify)g(a)g
(side-e\013ect)f(to)g(that)g(ob)s(ject.)19 b(F)l(urther,)-1651 57 y(an)o
(y)c(expression)g(con)o(taining)f(an)h(am)o(biguous)g(expression)g(is)g
(am)o(biguous.)-1235 56 y(The)20 b(optimizatio)o(n)f(rules)h(for)f
(factoring)g(out)g(assignmen)o(ts)g(can)h(also)f(b)q(e)i(stated.)33 b(Let)
-1650 57 y @F8 @sf(X\(i,S\))11 b @F14 @sf(b)q(e)h(an)f(expression)h(whic)o
(h)f(con)o(tains)f(no)i(impure)f(functions)g(or)g(sequenced)i(op)q
(erators,)-1652 56 y(and)21 b(supp)q(ose)h(that)e @F8 @sf(X)g @F14 @sf
(con)o(tains)g(a)h(storage)e @F8 @sf(S\(i\))h @F14 @sf(to)g @F8 @sf(i)p 
@F14 @sf(.)36 b(The)21 b(storage)f(expressions,)h(and)-1650 57 y(related)
15 b(expressions,)g(are)-272 88 y @F8 @sf(S\(i\):)143 b(Sval\(i\):)166 b
(Snew\(i\):)-813 57 y(++i)191 b(i+1)286 b(i+1)-693 56 y(i++)191 b(i)334 b
(i+1)-693 57 y(--i)191 b(i-1)286 b(i-1)-693 56 y(i--)191 b(i)334 b(i-1)-693 
57 y(i)24 b(=)g(y)143 b(y)334 b(y)-645 56 y(i)24 b(op=)g(y)95 b(i)24 b(op)f
(y)215 b(i)24 b(op)f(y)-955 89 y @F14 @sf(Then)16 b @F8 @sf(X\(i,S\))f 
@F14 @sf(can)g(b)q(e)h(replaced)f(b)o(y)g(either)-588 89 y @F8 @sf(\(T)24 b
(=)g(i,)f(i)h(=)g(Snew\(i\),)f(X\(T,Sval\)\))-933 89 y @F14 @sf(or)150 89 y 
@F8 @sf(\(T)h(=)g(X\(i,Sval\),)e(i)i(=)g(Snew\(i\),)e(T\))-931 89 y @F14 @sf
(pro)o(vided)15 b(that)g(neither)g @F8 @sf(i)g @F14 @sf(nor)g @F8 @sf(y)g 
@F14 @sf(ha)o(v)o(e)g(side)g(e\013ects)g(themselv)o(es.)-1271 124 y
48 @eop1

49 @bop0
@F10 @sf
[<
01FFE0001E00001C00000E00000E00000E00000E00000E00FFFFF040070020070010070018
070008070004070002038001038000838000C3800043800023800011C00009C0000DC00005
C00003C00001C00000E0000060000060>
. 20 30 -2 29 23] 52 @dc

49 @eop0

0 0 49 @bop1 112 50 a @F10 @sf(3.4.)35 b(Constan)o(t)14 b(Expressions)1069 b 
@F14 @sf(49)-1651 145 y @F9 @sf(3.3.16.1)52 b(Simple)16 b(assignmen)o(t)
-652 89 y @F14 @sf(Structure)g(assignmen)o(t)e(has)i(b)q(een)g(added:)21 b
(its)15 b(use)h(w)o(as)e(foreshado)o(w)o(ed)h(ev)o(en)h(in)f(K&R,)h(and)
-1650 57 y(man)o(y)f(existing)f(implemen)o(tations)g(already)g(supp)q(ort)i
(it.)-937 58 y(The)f(rules)f(for)g(t)o(yp)q(e)g(compatibilit)o -1 x(y)f
(in)h(assignmen)o(t)f(also)h(apply)g(to)g(argumen)o(t)f(compati-)-1651 56 y
(bilit)o(y)f(b)q(et)o(w)o(een)i(actual)e(argumen)o(t)g(expressions)h(and)g
(their)g(corresp)q(onding)g(argumen)o(t)f(t)o(yp)q(es)-1650 57 y(in)k(a)e
(function)h(protot)o(yp)q(e.)-405 58 y(An)23 b(implemen)o(tati)o(on)e
(need)i(not)f(correctly)f(p)q(erform)h(an)g(assignmen)o(t)g(b)q(et)o(w)o
(een)g(o)o(v)o(er-)-1651 56 y(lapping)d(op)q(erands.)33 b(Ov)o(erlapping)
18 b(op)q(erands)i(o)q(ccur)g(most)e(naturally)g(in)h(a)g(union,)h(where)
-1650 57 y(assigning)14 b(one)h(\014eld)h(to)e(another)g(is)h(often)g
(desirable)f(to)g(e\013ect)h(a)g(t)o(yp)q(e)g(con)o(v)o(ersion)f(in)h
(place;)-1651 56 y(the)h(assignmen)o(t)f(ma)o(y)g(w)o(ell)f(w)o(ork)h
(prop)q(erly)h(in)f(all)g(simple)g(cases,)g(but)h(it)f(is)g(not)g
(maximally)-1652 57 y(p)q(ortable.)20 b(Maximally)13 b(p)q(ortable)i(co)q
(de)h(should)g(use)f(a)g(temp)q(orary)g(v)m(ariable)g(as)g(an)g(in)o
(terme-)-1651 56 y(diate)g(in)g(suc)o(h)h(an)f(assignmen)o(t.)-566 130 y 
@F9 @sf(3.3.16.2)52 b(Comp)q(ound)18 b(assignmen)o(t)-749 89 y @F14 @sf
(The)f(imp)q(ortance)e(of)h(requiring)f(that)h(the)g(left)f(op)q(erand)i
(lv)m(alue)f(b)q(e)h(ev)m(aluated)f(only)f(once)i(is)-1651 56 y(not)i(a)h
(question)f(of)f(e\016ciency)l(,)j(although)e(that)f(is)h(one)h(comp)q
(elling)f(reason)f(for)h(using)g(the)-1650 57 y(comp)q(ound)j(assignmen)o
(t)d(op)q(erators.)36 b(Rather,)21 b(it)f(is)g(to)g(assure)h(that)f(an)o
(y)g(side)h(e\013ects)f(of)-1651 56 y(ev)m(aluating)15 b(the)g(left)g(op)q
(erand)g(are)g(predictable.)-861 132 y @F6 @sf(3.3.17)56 b(Comma)19 b(op)r
(erator)-618 89 y @F14 @sf(The)k(left)e(op)q(erand)i(of)e(a)h(comma)f(op)q
(erator)g(ma)o(y)h(b)q(e)g @F8 @sf(void)p @F14 @sf(,)h(since)f(only)g(the)g
(righ)o(t-hand)-1651 56 y(op)q(erator)15 b(is)g(relev)m(an)o(t)f(to)h(the)g
(t)o(yp)q(e)g(of)g(the)h(expression.)-914 58 y(The)c(example)g(in)g(the)g
(Standard)f(clari\014es)h(that)f(commas)g(separating)g(argumen)o(ts)g
(\\bind")-1651 57 y(tigh)o(ter)j(than)h(the)h(comma)e(op)q(erator)h(in)g
(expressions.)-961 153 y @F4 @sf(3.4)70 b(Constan)n(t)23 b(Expressions)-803 
104 y @F14 @sf(T)l(o)15 b(clarify)f(existing)g(practice,)h(sev)o(eral)f(v)m
(arieties)g(of)h(constan)o(t)f(expression)h(ha)o(v)o(e)g(b)q(een)h(iden-)
-1650 57 y(ti\014ed:)-114 116 y(The)22 b(expression)f(follo)o(wi)o(ng)f 
@F8 @sf(#if)h @F14 @sf(\()p @F12 @sf(x)p @F14 @sf(3.8.1)o(\))f(m)o(ust)g
(expand)i(to)f(in)o(teger)f(constan)o(ts,)i(c)o(harac-)-1651 57 y(ter)g
(constan)o(ts,)g(the)h(sp)q(ecial)e(op)q(erator)g @F8 @sf(defined)p @F14 @sf
(,)i(and)f(op)q(erators)f(with)g(no)h(side)g(e\013ects.)-1651 56 y(No)17 b
(en)o(vironmen)o(tal)f(inquiries)h(can)g(b)q(e)h(made,)f(since)h(all)e
(arithmetic)g(is)g(done)i(as)f(translate-)-1652 57 y(time)d(\(signed)f(or)g
(unsigned\))h(long)f(in)o(tegers,)g(and)h(casts)g(are)f(disallo)o(w)n(ed.)
19 b(The)14 b(restriction)e(to)-1651 56 y(translate-time)d(arithmetic)h
(frees)g(an)h(implemen)o(tatio)o(n)f(from)g(ha)o(ving)g(to)g(p)q(erform)g
(execution-)-1650 57 y(en)o(vironmen)o(t)19 b(arithmetic)g(in)g(the)h
(host)f(en)o(vironmen)o(t.)33 b(It)19 b(do)q(es)h(not)g(preclude)g(an)g
(imple-)-1651 56 y(men)o(tation)15 b(from)g(doing)h(so)f(|)i(the)f
(implemen)o(tatio)o(n)f(ma)o(y)g(simply)h(de\014ne)h(\\translat)o(e-time)
-1652 56 y(arithmetic")d(to)h(b)q(e)g(that)g(of)g(the)g(target.)-651 59 y
(Unsigned)g(arithmetic)f(is)g(p)q(erformed)i(in)e(these)i(expressions)e
(\(according)g(to)h(the)g(default)-1651 56 y(widening)20 b(rules\))f(when)h
(unsigned)g(op)q(erands)g(are)g(in)o(v)o(olv)o(ed;)g(this)f(rule)h(allo)o
(ws)e(for)h(unsur-)-1650 57 y(prising)14 b(arithmetic)f(in)o(v)o(olving)g
(v)o(ery)h(large)f(constan)o(ts)h(\(i.e,)f(those)h(whose)g(t)o(yp)q(e)h
(is)f @F8 @sf(unsigned)-253 124 y @F15 @sf(RA)m(TIONALE)-1763 b
49 @eop1

50 @bop0
@F11 @sf
[<
80E00041F80063FC003E0C0010020008020004010002000001000000800000400000200000
10000008000004000802000C1F0007F18003E08001C040>
. 18 20 -3 19 19] 122 @dc

50 @eop0

0 0 50 @bop1 112 50 a @F14 @sf(50)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F8 @sf(long)p @F14 @sf(\))18 b(since)g(they)g
(cannot)f(b)q(e)i(represen)o(ted)f(as)g @F8 @sf(long)f @F14 @sf(or)h
(constan)o(ts)f(explicitly)f(mark)o(ed)i(as)-1651 57 y(unsigned.)-116 56 y
(Character)d(constan)o(ts,)g(when)i(ev)m(aluated)f(in)g @F8 @sf(#if)g 
@F14 @sf(expressions,)g(ma)o(y)f(b)q(e)i(in)o(terpreted)f(in)-1651 56 y
(the)d(source)g(c)o(haracter)f(set,)h(the)g(execution)f(c)o(haracter)g
(set,)h(or)f(some)h(other)f(implemen)o(tation-)-1652 57 y(de\014ned)18 b
(c)o(haracter)d(set.)23 b(This)15 b(latitude)g(re\015ects)h(the)h(div)o
(ersit)o(y)d(of)i(existing)f(practice,)g(esp)q(e-)-1649 56 y(cially)f(in)h
(cross-compilers.)-486 74 y(An)k @F11 @sf(inte)n(gr)n(al)g(c)n(onstant)f
(expr)n(ession)j @F14 @sf(m)o(ust)d(in)o(v)o(olv)o(e)f(only)h(n)o(um)o(b)q
(ers)h(kno)o(w)o(able)f(at)g(translate)-1652 57 y(time,)h(and)g(op)q
(erators)f(with)g(no)g(side)h(e\013ects.)30 b(Casts)18 b(and)g(the)h @F8 @sf
(sizeof)f @F14 @sf(op)q(erator)g(ma)o(y)g(b)q(e)-1650 56 y(used)e(to)f(in)o
(terrogat)o(e)f(the)h(execution)h(en)o(vironmen)o(t.)-933 74 y @F11 @sf
(Static)d(initializers)g @F14 @sf(include)e(in)o(tegral)e(constan)o(t)h
(expressions,)h(along)f(with)h(\015oating)e(constan)o(ts)-1651 57 y(and)
19 b(simple)f(addressing)g(expressions.)30 b(An)19 b(implemen)o(tatio)o(n)f
(m)o(ust)g(accept)g(arbitrary)f(ex-)-1650 56 y(pressions)i(in)o(v)o
(olving)f(\015oating)g(and)h(in)o(tegral)e(n)o(um)o(b)q(ers)j(and)f
(side-e\013ect-free)g(op)q(erators)g(in)-1651 57 y(arithmetic)f(initial)o
(izers,)g(but)h(it)e(is)i(at)f(lib)q(ert)o(y)f(to)h(turn)h(suc)o(h)g
(initiali)o(zers)f(in)o(to)f(executable)-1650 56 y(co)q(de)j(whic)o(h)f
(is)g(in)o(v)o(ok)o(ed)g(prior)f(to)h(program)f(startup)g(\(see)i @F12 @sf
(x)p @F14 @sf(2.1.2.)o(2\);)o 20 x(this)f(sc)o(heme)h(migh)o(t)-1652 57 y
(imp)q(ose)d(some)f(requiremen)o(ts)g(on)g(link)o(ers)f(or)h(run)o(time)g
(library)f(co)q(de)i(in)f(some)g(implemen)o(ta-)-1651 56 y(tions.)-39 56 y
(The)26 b(translati)o(on)e(en)o(vironmen)o(t)h(m)o(ust)g(not)h(pro)q(duce)g
(a)f(less)h(accurate)f(v)m(alue)h(for)f(a)-1651 57 y(\015oating-p)q(oin)o
(t)d(initiali)o(zer)g(than)h(the)g(execution)g(en)o(vironmen)o(t,)h(but)f
(it)f(is)h(at)f(lib)q(ert)o(y)g(to)-1651 56 y(do)f(b)q(etter.)36 b(Th)o
(us)20 b(a)h(static)e(initiali)o(zer)h(ma)o(y)f(w)o(ell)h(b)q(e)h(sligh)o
(tly)e(di\013eren)o(t)h(than)g(the)h(same)-1651 57 y(expression)e
(computed)f(at)g(execution)g(time.)29 b(Ho)o(w)o(ev)o(er,)18 b(while)g
(implemen)o(tati)o(ons)f(are)h(cer-)-1650 56 y(tainly)i @F11 @sf(p)n
(ermitte)n(d)g @F14 @sf(to)g(pro)q(duce)h(exactly)f(the)g(same)g(result)g
(in)g(translation)f(and)h(execution)-1650 57 y(en)o(vironmen)o(ts,)13 b 
@F11 @sf(r)n(e)n(quiring)f @F14 @sf(this)g(w)o(as)g(deemed)h(to)g(b)q(e)g
(an)g(in)o(tolerable)e(burden)j(on)e(man)o(y)h(cross-)-1651 56 y
(compilers.)459 98 y @F7 @sf(QUIET)i(CHANGE)-876 74 y @F14 @sf(A)h
(program)e(that)g(uses)i @F8 @sf(#if)f @F14 @sf(expressions)g(to)g
(determine)g(prop)q(erties)g(of)g(the)g(ex-)-1422 57 y(ecution)g(en)o
(vironmen)o(t)g(ma)o(y)f(no)o(w)h(get)g(di\013eren)o(t)f(answ)o(ers.)-1150 
142 y @F4 @sf(3.5)70 b(Declarations)-531 101 y @F14 @sf(The)12 b(Committ)o
(ee)e(decided)i(that)e(empt)o(y)h(declarations)e(are)i(in)o(v)m(alid)f
(\(except)h(for)f(a)h(sp)q(ecial)f(case)-1650 57 y(with)19 b(tags,)f(see)h 
@F12 @sf(x)q @F14 @sf(3.5.2.)o(3,)f(and)h(the)g(case)g(of)f(en)o
(umerations)h(suc)o(h)g(as)f @F8 @sf(enum)24 b @F12 @sf(f)p @F8 @sf
(zero,one)p @F12 @sf(g)o @F8 @sf(;)p @F14 @sf(,)-1652 56 y(see)c @F12 @sf
(x)q @F14 @sf(3.5.2.)o(2\).)o 32 x(While)f(man)o(y)h(seemingly)f(silly)f
(constructs)h(are)h(tolerated)e(in)i(other)f(parts)-1651 57 y(of)f(the)h
(language)e(in)i(the)f(in)o(terest)f(of)h(facilitati)o(ng)f(the)h(mac)o
(hine)h(generation)e(of)h(C,)g(empt)o(y)-1651 56 y(declarations)c(w)o(ere)h
(considered)h(su\016cien)o(tly)e(easy)h(to)g(a)o(v)o(oid.)-1012 57 y(The)d
(practice)g(of)g(placing)f(the)h(storage)f(class)g(sp)q(eci\014er)i(other)f
(than)f(\014rst)h(in)g(a)g(declaration)-1652 56 y(has)18 b(b)q(een)g
(branded)g(as)f @F11 @sf(obsolesc)n(ent)f @F14 @sf(\(See)h @F12 @sf(x)p 
@F14 @sf(3.9.3.\))25 b(The)17 b(Committee)f(feels)i(it)e(desirable)h(to)
-1651 57 y(rule)f(out)e(suc)o(h)i(constructs)f(as)-343 88 y @F8 @sf(enum)
24 b({)f(aaa,)h(aab,)-311 56 y(/*)g(etc)f(*/)-287 56 y(zzy,)h(zzz)f(})h
(typedef)f(a2z;)-741 89 y @F14 @sf(in)16 b(some)e(future)i(standard.)-603 
124 y
50 @eop1

51 @bop0
@F6 @sf
[<
FFFCFFFCFFFCFFFC>
. 14 4 -1 12 19] 45 @dc

51 @eop0
 0 0 51 @bop1 112 50 a @F10 @sf(3.5.)30 b(Declarati)o(ons)
1255 b @F14 @sf(51)-1651 145 y @F6 @sf(3.5.1)56 b(Storage-class)18 b(sp)r
(eci\014ers)-730 86 y @F14 @sf(Because)c(the)e(address)h(of)f(a)g @F8 @sf
(register)g @F14 @sf(v)m(ariable)g(cannot)g(b)q(e)h(tak)o(en,)g(ob)s
(jects)f(of)g(storage)f(class)-1651 56 y @F8 @sf(register)i @F14 @sf
(e\013ectiv)o(ely)g(exist)g(in)g(a)h(space)g(distinct)f(from)g(other)g(ob)s
(jects.)19 b(\(F)l(unctions)13 b(o)q(ccup)o(y)-1650 57 y(y)o(et)i(a)f
(third)g(address)h(space\).)20 b(This)14 b(mak)o(es)g(them)h(candidates)f
(for)g(optimal)f(placemen)o(t,)h(the)-1650 56 y(usual)21 b(reason)f(for)g
(declaring)g(registers,)h(but)f(it)g(also)g(mak)o(es)g(them)g(candidates)h
(for)f(more)-1651 57 y(aggressiv)o(e)14 b(optimizatio)o(n.)-406 56 y(The)f
(practice)f(of)g(represen)o(ting)h(register)e(v)m(ariables)h(as)h(wider)f
(t)o(yp)q(es)g(\(as)g(when)i @F8 @sf(register)-1652 57 y(char)h @F14 @sf
(is)g(quietly)f(c)o(hanged)i(to)e @F8 @sf(register)23 b(int)p @F14 @sf(\))
15 b(is)f(no)h(longer)g(acceptable.)-1324 120 y @F6 @sf(3.5.2)56 b(T)n(yp)r
(e)18 b(sp)r(eci\014ers)-540 85 y @F14 @sf(Sev)o(eral)13 b(new)g(t)o(yp)q
(e)g(sp)q(eci\014ers)g(ha)o(v)o(e)g(b)q(een)g(added:)20 b @F8 @sf(signed)p 
@F14 @sf(,)25 b @F8 @sf(enum)p @F14 @sf(,)12 b(and)h @F8 @sf(void)p @F14 @sf
(.)19 b @F8 @sf(long)k(float)-1651 57 y @F14 @sf(has)14 b(b)q(een)i
(retired)d(and)h @F8 @sf(long)24 b(double)13 b @F14 @sf(has)h(b)q(een)h
(added,)f(along)f(with)h(a)f(plethora)h(of)f(in)o(teger)-1651 56 y(t)o(yp)q
(es.)26 b(The)17 b(Committ)o(ee's)f(reasons)g(for)h(eac)o(h)g(of)f(these)h
(additions,)f(and)h(the)g(one)g(deletion,)-1651 57 y(are)e(giv)o(en)g(in)g
(section)g @F12 @sf(x)p @F14 @sf(3.1.2.5)o 14 x(of)g(this)f(do)q(cumen)o
(t.)-911 118 y @F9 @sf(3.5.2.1)52 b(Structure)17 b(and)h(union)f(sp)q
(eci\014ers)-891 86 y @F14 @sf(Three)22 b(t)o(yp)q(es)f(of)f(bit)h(\014elds)g
(are)g(no)o(w)f(de\014ned:)33 b(\\plain")20 b @F8 @sf(int)g @F14 @sf
(calls)g(for)h @F11 @sf(implementation-)-1651 56 y(de\014ne)n(d)16 b 
@F14 @sf(signedness)c(\(as)f(in)h(the)f(Base)h(Do)q(cumen)o(t\),)g @F8 @sf
(signed)23 b(int)11 b @F14 @sf(calls)g(for)g(assuredly)g(signed)-1650 57 y
(\014elds,)16 b(and)f @F8 @sf(unsigned)23 b(int)15 b @F14 @sf(calls)f(for)g
(unsigned)i(\014elds.)k(The)c(old)f(constrain)o(ts)e(on)i(bit)g(\014elds)
-1650 56 y(crossing)i @F11 @sf(wor)n(d)22 b @F14 @sf(b)q(oundaries)17 b
(ha)o(v)o(e)f(b)q(een)j(relaxed,)d(since)h(so)g(man)o(y)g(prop)q(erties)f
(of)h(bit)f(\014elds)-1650 57 y(are)f(implemen)o(tation)f(dep)q(enden)o(t)j
(an)o(yw)o(a)o(y)l(.)-708 56 y(The)e(la)o(y)o(out)f(of)h(structures)g(is)f
(determined)i(only)f(to)f(a)h(limited)f(exten)o(t:)-1265 85 y @F12 @sf(\017)
22 b @F14 @sf(no)15 b(hole)g(ma)o(y)g(o)q(ccur)g(at)g(the)g(b)q(eginning;)
-765 90 y @F12 @sf(\017)22 b @F14 @sf(mem)o(b)q(ers)15 b(o)q(ccup)o(y)h
(increasing)f(storage)f(addresses;)h(and)-1046 90 y @F12 @sf(\017)22 b 
@F14 @sf(if)16 b(necessary)l(,)g(a)g(hole)g(is)g(placed)h(on)f(the)g(end)h
(to)f(mak)o(e)f(the)i(structure)f(big)f(enough)i(to)-1537 56 y(pac)o(k)e
(tigh)o(tly)f(in)o(to)g(arra)o(ys)g(and)h(main)o(tain)f(prop)q(er)h
(alignmen)o(t.)-1230 85 y(Since)h(some)f(existing)f(implemen)o(tations,)g
(in)h(the)g(in)o(terest)f(of)h(enhanced)i(access)e(time,)f(lea)o(v)o(e)-1651 
56 y(in)o(ternal)g(holes)g(larger)g(than)g(absolutely)g(necessary)l(,)h
(it)e(is)i(not)f(clear)g(that)g(a)g(p)q(ortable)g(deter-)-1650 57 y
(ministic)g(metho)q(d)i(can)f(b)q(e)h(giv)o(en)f(for)f(tra)o(v)o(ersing)g
(a)h(structure)f(\014eld)i(b)o(y)f(\014eld.)-1302 56 y(T)l(o)f(clarify)f
(what)g(is)h(mean)o(t)g(b)o(y)g(the)g(notion)f(that)h(\\all)e(the)j(\014elds)f
(of)g(a)f(union)i(o)q(ccup)o(y)f(the)-1650 57 y(same)g(storage,")e(the)i
(Standard)g(sp)q(eci\014es)h(that)e(a)h(p)q(oin)o(ter)f(to)g(a)h(union,)g
(when)g(suitably)f(cast,)-1651 56 y(p)q(oin)o(ts)18 b(to)g(eac)o(h)h(mem)o
(b)q(er)f(\(or,)g(in)h(the)f(case)h(of)f(a)g(bit-\014eld)g(mem)o(b)q(er,)h
(to)f(the)g(storage)g(unit)-1651 57 y(con)o(taining)c(the)i(bit)e(\014eld\).)
-484 118 y @F9 @sf(3.5.2.2)52 b(En)o(umeration)17 b(sp)q(eci\014ers)-723 
86 y(3.5.2.3)52 b(T)l(ags)-305 86 y @F14 @sf(As)15 b(with)f(all)f(blo)q(c)o
(k)h(structured)h(languages)f(that)f(also)h(p)q(ermit)g(forw)o(ard)f
(references,)i(C)f(has)h(a)-1651 56 y(problem)f(with)f(structure)h(and)g
(union)g(tags.)19 b(If)14 b(one)g(w)o(an)o(ts)e(to)i(declare,)f(within)h
(a)f(blo)q(c)o(k,)h(t)o(w)o(o)-1652 57 y(m)o(utually)g(referencing)i
(structures,)e(one)i(m)o(ust)e(write)g(something)h(lik)o(e:)138 124 y 
@F15 @sf(RA)m(TIONALE)-1763 b
51 @eop1

52 @bop0
@F14 @sf
[<
00060000000600000006000000060000000600000006000000060000000600000006000000
0600000006000000060000000600000006000000060000FFFFFFF0FFFFFFF0000600000006
00000006000000060000000600000006000000060000000600000006000000060000000600
0000060000000600000006000000060000>
. 28 32 -3 26 35] 43 @dc

52 @eop0

0 0 52 @bop1 112 50 a @F14 @sf(52)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1460 145 y @F8 @sf(struct)23 b(x)h({)g(struct)f(y)h(*p;)f
(/*...*/)g(};)-812 57 y(struct)g(y)h({)g(struct)f(x)h(*q;)f(/*...*/)g(};)
-1003 106 y @F14 @sf(But)15 b(if)f @F8 @sf(struct)23 b(y)15 b @F14 @sf(is)f
(already)g(de\014ned)i(in)e(a)g(con)o(taining)g(blo)q(c)o(k,)g(the)g(\014rst)h
(\014eld)f(of)h @F8 @sf(struct)23 b(x)-1651 56 y @F14 @sf(will)14 b(refer)h
(to)g(the)g(older)g(declaration.)-602 57 y(Th)o(us)g(sp)q(ecial)g(seman)o
(tics)f(has)i(b)q(een)g(giv)o(en)f(to)f(the)h(form:)-896 94 y @F8 @sf
(struct)23 b(y;)-406 94 y @F14 @sf(It)16 b(no)o(w)g(hides)g(the)g(outer)f
(declaration)g(of)g @F8 @sf(y)p @F14 @sf(,)h(and)g(\\op)q(ens")g(a)f(new)h
(instance)g(in)g(the)g(curren)o(t)-1651 56 y(blo)q(c)o(k.)542 107 y @F7 @sf
(QUIET)f(CHANGE)-876 75 y @F14 @sf(The)h(empt)o(y)e(declaration)g @F8 @sf
(struct)23 b(x;)15 b @F14 @sf(is)g(no)g(longer)g(inno)q(cuous.)-1268 122 y 
@F6 @sf(3.5.3)56 b(T)n(yp)r(e)18 b(quali\014ers)-538 86 y @F14 @sf(The)i
(Committee)f(has)g(added)h(to)f(C)h(t)o(w)o(o)e @F11 @sf(typ)n(e)i
(quali\014ers)t @F14 @sf(:)28 b @F8 @sf(const)19 b @F14 @sf(and)h @F8 @sf
(volatile)p @F14 @sf(.)32 b(Indi-)-1650 56 y(vidually)14 b(and)h(in)g(com)o
(bination)e(they)i(sp)q(ecify)g(the)g(assumptions)f(a)g(compiler)g(can)h
(and)g(m)o(ust)-1651 57 y(mak)o(e)g(when)h(accessing)f(an)g(ob)s(ject)g
(through)f(an)i(lv)m(alue.)-926 56 y(The)g(syn)o(tax)e(and)i(seman)o(tics)e
(of)h @F8 @sf(const)g @F14 @sf(w)o(ere)g(adapted)g(from)g(C++;)g(the)h
(concept)g(itself)-1652 56 y(has)j(app)q(eared)h(in)f(other)g(languages.)
31 b @F8 @sf(volatile)17 b @F14 @sf(is)i(an)g(in)o(v)o(en)o(tion)f(of)h
(the)g(Committee;)g(it)-1651 57 y(follo)o(ws)14 b(the)h(syn)o(tactic)f(mo)q
(del)h(of)g @F8 @sf(const)p @F14 @sf(.)-669 56 y(T)o(yp)q(e)22 b
(quali\014ers)f(w)o(ere)g(in)o(tro)q(duced)h(in)f(part)g(to)g(pro)o(vide)g
(greater)f(con)o(trol)g(o)o(v)o(er)h(opti-)-1651 57 y(mization.)j(Sev)o
(eral)16 b(imp)q(ortan)o(t)f(optimization)g(tec)o(hniques)i(are)g(based)g
(on)f(the)h(principle)g(of)-1651 56 y(\\cac)o(heing":)k(under)c(certain)e
(circumstances)g(the)h(compiler)g(can)g(remem)o(b)q(er)g(the)f(last)g(v)m
(alue)-1650 57 y(accessed)f(\(read)f(or)f(written\))g(from)g(a)h(lo)q
(cation,)o 12 x(and)g(use)h(this)e(retained)h(v)m(alue)g(the)g(next)g
(time)-1651 56 y(that)h(lo)q(cation)f(is)g(read.)20 b(\(The)13 b(memory)l
(,)h(or)g(\\cac)o(he",)f(is)h(t)o(ypically)e(a)i(hardw)o(are)f(register.\))
18 b(If)-1650 57 y(this)e(memory)f(is)g(a)g(mac)o(hine)h(register,)e(for)h
(instance,)g(the)h(co)q(de)g(can)g(b)q(e)g(smaller)e(and)i(faster)-1651 
56 y(using)f(the)h(register)e(rather)g(than)i(accessing)e(external)h
(memory)l(.)-1072 57 y(The)22 b(basic)g(quali\014ers)g(can)g(b)q(e)h(c)o
(haracterized)f(b)o(y)g(the)g(restrictions)e(they)j(imp)q(ose)e(on)-1650 
56 y(access)16 b(and)f(cac)o(heing:)-404 94 y @F8 @sf(const)23 b @F14 @sf
(No)18 b(writes)f(through)h(this)g(lv)m(alue.)29 b(In)19 b(the)g(absence)g
(of)f(this)g(quali\014er,)g(writes)f(ma)o(y)-1537 56 y(o)q(ccur)f(through)f
(this)f(lv)m(alue.)-625 94 y @F8 @sf(volatile)22 b @F14 @sf(No)12 b(cac)o
(heing)f(through)h(this)f(lv)m(alue:)18 b(eac)o(h)12 b(op)q(eration)f(in)h
(the)g(abstract)e(seman)o(tics)-1537 57 y(m)o(ust)18 b(b)q(e)h(p)q
(erformed.)29 b(\(That)18 b(is,)g(no)g(cac)o(heing)g(assumptions)g(ma)o(y)g
(b)q(e)h(made,)f(since)-1536 56 y(the)e(lo)q(cation)e(is)h(not)g(guaran)o
(teed)g(to)f(con)o(tain)h(an)o(y)g(previous)g(v)m(alue.\))20 b(In)c(the)g
(absence)-1536 57 y(of)d(this)g(quali\014er,)g(the)g(con)o(ten)o(ts)g(of)g
(the)g(designated)h(lo)q(cation)e(ma)o(y)g(b)q(e)i(assumed)g(to)f(b)q(e)
-1536 56 y(unc)o(hanged)j(\(except)f(for)g(p)q(ossible)g(aliasing.)o(\))
-851 94 y(A)21 b(translato)o(r)e(design)h(with)g(no)h(cac)o(heing)f
(optimizatio)o(ns)f(can)i(e\013ectiv)o(ely)f(ignore)f(the)-1650 57 y(t)o
(yp)q(e)d(quali\014ers,)e(except)i(insofar)e(as)h(they)g(a\013ect)f
(assignmen)o(t)g(compatibilit)n(y)l(.)-1316 56 y(It)j(w)o(ould)g(ha)o(v)o
(e)g(b)q(een)i(p)q(ossible,)e(of)g(course,)h(to)e(sp)q(ecify)i(a)f @F8 @sf
(nonconst)f @F14 @sf(k)o(eyw)o(ord)h(instead)-1651 57 y(of)j @F8 @sf
(const)p @F14 @sf(,)g(or)f @F8 @sf(nonvolatile)g @F14 @sf(instead)g(of)h 
@F8 @sf(volatile)p @F14 @sf(.)32 b(The)20 b(senses)h(of)e(these)h
(concepts)h(in)-1763 124 y
52 @eop1

53 @bop0

53 @eop0
0 0 53 @bop1 112 50 a @F10 @sf(3.5.)35 b(Declarati)o(ons)1250 b @F14 @sf
(53)-1651 145 y(the)15 b(Standard)f(w)o(ere)f(c)o(hosen)i(to)e(assure)h
(that)f(the)h(default,)g(unquali\014ed,)g(case)g(w)o(as)f(the)h(most)-1651 
57 y(common,)g(and)h(that)f(it)g(corresp)q(onded)h(most)e(clearly)h(to)g
(traditiona)o(l)f(practice)h(in)g(the)h(use)g(of)-1651 56 y(lv)m(alue)h
(expressions.)-366 104 y(F)l(our)d(com)o(binations)f(of)g(the)h(t)o(w)o(o)f
(quali\014ers)h(is)f(p)q(ossible;)h(eac)o(h)g(de\014nes)h(a)f(useful)g
(set)g(of)g(lv)m(alue)-1651 56 y(prop)q(erties.)20 b(The)15 b(next)h(sev)o
(eral)e(paragraphs)g(describ)q(e)i(t)o(ypical)e(uses)i(of)f(these)g
(quali\014ers.)-1523 57 y(The)g(translator)e(ma)o(y)i(assume,)f(for)h(an)g
(unquali\014ed)g(lv)m(alue,)g(that)f(it)g(ma)o(y)h(read)g(or)f(write)-1651 
56 y(the)20 b(referenced)g(ob)s(ject,)g(that)f(the)g(v)m(alue)h(of)f(this)g
(ob)s(ject)g(cannot)g(b)q(e)h(c)o(hanged)g(except)f(b)o(y)-1650 57 y
(explicitly)12 b(programmed)f(actions)h(in)g(the)g(curren)o(t)h(thread)f
(of)g(con)o(trol,)f(but)i(that)f(other)g(lv)m(alue)-1651 56 y(expressions)j
(could)h(reference)g(the)f(same)g(ob)s(ject.)-807 57 y @F8 @sf(const)20 b 
@F14 @sf(is)g(sp)q(eci\014ed)h(in)g(suc)o(h)g(a)f(w)o(a)o(y)f(that)h(an)g
(implemen)o(tation)f(is)h(at)g(lib)q(ert)o(y)f(to)h(put)-1650 56 y @F8 @sf
(const)13 b @F14 @sf(ob)s(jects)g(in)h(read-only)f(storage,)g(and)g(is)h
(encouraged)g(to)f(diagnose)g(ob)o(vious)f(attempts)-1651 56 y(to)19 b(mo)q
(dify)g(them,)h(but)f(is)g(not)g(required)g(to)g(trac)o(k)f(do)o(wn)h(all)f
(the)h(subtle)g(w)o(a)o(ys)g(that)f(suc)o(h)-1650 57 y(c)o(hec)o(king)j
(can)g(b)q(e)h(sub)o(v)o(erted.)36 b(If)21 b(a)g(function)g(parameter)f
(is)g(declared)h @F8 @sf(const)p @F14 @sf(,)g(then)g(the)-1650 56 y
(referenced)d(ob)s(ject)e(is)g(not)h(c)o(hanged)g(\(through)f(that)g(lv)m
(alue\))g(in)g(the)h(b)q(o)q(dy)h(of)e(the)h(function)-1651 57 y(|)f(the)f
(parameter)g(is)g(read-only)l(.)-527 56 y(A)k(static)f @F8 @sf(volatile)g 
@F14 @sf(ob)s(ject)h(is)f(an)h(appropriate)f(mo)q(del)h(for)g(a)f
(memory-mapp)q(ed)i(I/O)-1650 57 y(register.)f(Implemen)o(tors)c(of)f(C)h
(translators)e(should)i(tak)o(e)g(in)o(to)f(accoun)o(t)g(relev)m(an)o(t)h
(hardw)o(are)-1651 56 y(details)i(on)h(the)g(target)e(systems)h(when)h
(implemen)o(ting)f(accesses)h(to)f(v)o(olati)o(le)f(ob)s(jects.)27 b(F)l
(or)-1651 57 y(instance,)d(the)e(hardw)o(are)g(logic)f(of)h(a)g(system)g
(ma)o(y)f(require)h(that)g(a)g(t)o(w)o(o-b)o(yte)f(memory-)-1651 56 y
(mapp)q(ed)15 b(register)e(not)h(b)q(e)h(accessed)g(with)e(b)o(yte)h(op)q
(erations;)f(a)h(compiler)f(for)h(suc)o(h)g(a)g(system)-1651 57 y(w)o
(ould)k(ha)o(v)o(e)f(to)g(assure)h(that)f(no)h(suc)o(h)g(instructions)f(w)o
(ere)h(generated,)g(ev)o(en)g(if)f(the)h(source)-1650 56 y(co)q(de)d(only)e
(accesses)h(one)g(b)o(yte)g(of)f(the)h(register.)19 b(Whether)14 b
(read-mo)q(dify-write)f(instructions)-1652 56 y(can)f(b)q(e)g(used)g(on)f
(suc)o(h)h(device)g(registers)e(m)o(ust)h(also)f(b)q(e)i(considered.)19 b
(Whatev)o(er)11 b(decisions)g(are)-1651 57 y(adopted)18 b(on)f(suc)o(h)g
(issues)g(m)o(ust)g(b)q(e)g(do)q(cumen)o(ted,)h(as)f(v)o(olatil)o(e)f
(access)h(is)g(implemen)o(tation-)-1652 56 y(de\014ned.)30 b(A)18 b @F8 @sf
(volatile)f @F14 @sf(ob)s(ject)h(is)f(an)h(appropriate)f(mo)q(del)h(for)g
(a)g(v)m(ariable)f(shared)h(among)-1651 57 y(m)o(ultiple)d(pro)q(cesses.)
-302 56 y(A)g(static)f @F8 @sf(const)h(volatile)f @F14 @sf(ob)s(ject)h
(appropriately)f(mo)q(dels)h(a)g(memory-mapp)q(ed)g(input)-1650 57 y(p)q
(ort,)d(suc)o(h)f(as)g(a)g(real-time)f(clo)q(c)o(k.)18 b(Similarly)l(,)10 b
(a)h @F8 @sf(const)f(volatile)h @F14 @sf(ob)s(ject)f(mo)q(dels)h(a)g(v)m
(ariable)-1651 56 y(whic)o(h)16 b(can)f(b)q(e)h(altered)e(b)o(y)i(another)e
(pro)q(cess)i(but)f(not)g(b)o(y)g(this)g(one.)-1213 104 y(Although)d(the)g
(t)o(yp)q(e)g(quali\014ers)g(are)f(formally)g(treated)g(as)h(de\014ning)g
(new)h(t)o(yp)q(es)f(they)g(actually)-1652 56 y(serv)o(e)k(as)e(mo)q
(di\014ers)h(of)g(declarators.)k(Th)o(us)c(the)g(declarations)-910 91 y 
@F8 @sf(const)24 b(struct)f(s)g({int)h(a,b;})f(x;)-669 57 y(struct)g(s)48 b
(y;)-478 90 y @F14 @sf(declare)15 b @F8 @sf(x)g @F14 @sf(as)f(a)h @F8 @sf
(const)f @F14 @sf(ob)s(ject,)g(but)g(not)h @F8 @sf(y)p @F14 @sf(.)k(The)c 
@F8 @sf(const)f @F14 @sf(prop)q(ert)o(y)h(can)g(b)q(e)g(asso)q(ciated)f
(with)-1651 57 y(the)i(aggregate)d(t)o(yp)q(e)j(b)o(y)f(means)g(of)g(a)g
(t)o(yp)q(e)g(de\014nition:)-789 90 y @F8 @sf(typedef)23 b(const)g(struct)h
(s)f({int)h(a,b;})f(stype;)-956 57 y(stype)h(x;)-192 56 y(stype)g(y;)-383 
91 y @F14 @sf(In)15 b(these)e(declarations)f(the)i @F8 @sf(const)e @F14 @sf
(prop)q(ert)o(y)h(is)g(asso)q(ciated)g(with)g(the)g(declarator)f @F8 @sf
(stype)p @F14 @sf(,)h(so)-1651 57 y @F8 @sf(x)j @F14 @sf(and)f @F8 @sf(y)g 
@F14 @sf(are)g(b)q(oth)g @F8 @sf(const)g @F14 @sf(ob)s(jects.)760 124 y 
@F15 @sf(RA)m(TIONALE)-1763 b
53 @eop1

54 @bop0
@F11 @sf
[<
0800100010002000600060004000C000C000C000C000C000C000C000C000C000C000C000C0
00C000E000E000600060007000700030003800380018001C000C000E000600070003000180
018000C00060002000100008000400020001>
. 16 46 -7 33 19] 40 @dc
[<
8000006000003000001800000C000006000003000001000001800000C00000E00000600000
7000003000003800001800001C00000C00000C00000E000006000006000007000007000003
00000300000300000380000380000380000180000180000180000180000180000180000180
000100000300000300000300000200000600000400000800001000>
. 17 46 0 33 19] 41 @dc

54 @eop0

0 0 54 @bop1 112 50 a @F14 @sf(54)1114 b @F10 @sf(Section)15 b(3.)30 b
(LANGUA)o(GE)-1580 145 y @F14 @sf(The)12 b(Committee)f(considered)h
(making)f @F8 @sf(const)h @F14 @sf(and)g @F8 @sf(volatile)e @F14 @sf
(storage)h(classes,)h(but)g(this)-1651 57 y(w)o(ould)17 b(ha)o(v)o(e)f
(ruled)i(out)e(an)o(y)h(n)o(um)o(b)q(er)g(of)g(desirable)f(constructs,)h
(suc)o(h)g(as)g @F8 @sf(const)f @F14 @sf(mem)o(b)q(ers)-1650 56 y(of)f
(structures)g(and)h(v)m(ariable)e(p)q(oin)o(ters)h(to)f @F8 @sf(const)h 
@F14 @sf(t)o(yp)q(es.)-936 98 y(A)h(cast)g(of)g(a)g(v)m(alue)g(to)g(a)g
(quali\014ed)g(t)o(yp)q(e)g(has)h(no)f(e\013ect;)g(the)g(quali\014cation)f
(\()p @F8 @sf(volatile)p @F14 @sf(,)-1652 57 y(sa)o(y\))g(can)h(ha)o(v)o
(e)f(no)g(e\013ect)g(on)h(the)f(access)h(since)f(it)g(has)g(o)q(ccurred)h
(prior)f(to)g(the)g(cast.)20 b(If)c(it)f(is)-1651 56 y(necessary)j(to)f
(access)h(a)f(non-v)o(olatil)o(e)f(ob)s(ject)h(using)g(v)o(olatile)f
(seman)o(tics,)h(the)g(tec)o(hnique)h(is)-1651 57 y(to)e(cast)g(the)h
(address)f(of)g(the)h(ob)s(ject)e(to)h(the)h(appropriate)e(p)q(oin)o
(ter-to-quali\014ed)h(t)o(yp)q(e,)g(then)-1650 56 y(dereference)h(that)d
(p)q(oin)o(ter.)-490 120 y @F6 @sf(3.5.4)56 b(Declarators)-454 86 y @F14 @sf
(The)16 b(function)f(protot)o(yp)q(e)f(syn)o(tax)h(w)o(as)f(adapted)h
(from)g(C++.)20 b(\(See)c @F12 @sf(x)p @F14 @sf(3.3.2.2)o 14 x(and)f 
@F12 @sf(x)p @F14 @sf(3.5.4.3\))o -1579 56 a(Some)k(curren)o(t)f(implemen)o
(tations)f(ha)o(v)o(e)h(a)g(limit)f(of)h(six)g(t)o(yp)q(e)g(mo)q(di\014ers)h
(\()p @F11 @sf(function)f(r)n(e-)-1650 57 y(turning)p @F14 @sf(,)i @F11 @sf
(arr)n(ay)h(of)p @F14 @sf(,)g @F11 @sf(p)n(ointer)f(to)s @F14 @sf(\),)g
(the)g(limit)e(used)i(in)g(Ritc)o(hie's)f(original)o 18 x(compiler.)33 b
(This)-1651 56 y(limit)19 b(has)i(b)q(een)g(raised)f(to)g(t)o(w)o(elv)o(e)f
(since)i(the)g(original)o 19 x(limit)e(has)h(pro)o(v)o(en)h(insu\016cien)o
(t)f(in)-1651 57 y(some)g(cases;)i(in)e(particular,)f(it)g(did)h(not)g
(allo)o(w)e(for)h(F)o(OR)l(TRAN-to-C)i(translat)o(ion,)e(since)-1650 56 y
(F)o(OR)l(TRAN)14 b(allo)o(ws)d(for)h(sev)o(en)h(subscripts.)19 b(\(Some)
12 b(users)h(ha)o(v)o(e)g(rep)q(orted)g(using)f(nine)h(or)f(ten)-1650 57 y
(lev)o(els,)j(particularl)o(y)f(in)h(mac)o(hine-generated)g(C)g(co)q(de.\))
-987 118 y @F9 @sf(3.5.4.1)52 b(P)o(oin)o(ter)16 b(declarators)-639 86 y 
@F14 @sf(A)c(p)q(oin)o(ter)f(declarator)f(ma)o(y)h(ha)o(v)o(e)h(its)e(o)o
(wn)h(t)o(yp)q(e)h(quali\014ers,)f(to)g(sp)q(ecify)h(the)g(attributes)e
(of)h(the)-1650 56 y(p)q(oin)o(ter)17 b(itself,)f(as)g(opp)q(osed)i(to)e
(those)g(of)h(the)g(reference)g(t)o(yp)q(e.)25 b(The)17 b(construct)g(is)f
(adapted)-1650 57 y(from)f(C++.)-153 56 y @F8 @sf(const)23 b(int)h(*)11 b 
@F14 @sf(means)h @F11 @sf(\(variable\))g(p)n(ointer)h(to)g(c)n(onstant)k 
@F8 @sf(int)p @F14 @sf(,)11 b(and)h @F8 @sf(int)24 b(*)f(const)11 b @F14 @sf
(means)-1650 57 y @F11 @sf(c)n(onstant)21 b(p)n(ointer)f(to)i(\(variable\))g 
@F8 @sf(int)p @F14 @sf(,)f(just)f(as)g(in)g(C++,)i(from)e(whic)o(h)g
(these)h(constructs)-1651 56 y(w)o(ere)15 b(adopted.)20 b(\(And)c @F11 @sf
(mutatis)g(mutandis)j @F14 @sf(for)c(the)g(other)g(t)o(yp)q(e)g
(quali\014ers.\))k(As)c(with)g(other)-1651 56 y(asp)q(ects)j(of)f(C)g(t)o
(yp)q(e)g(declarators,)g(judicious)g(use)g(of)g @F8 @sf(typedef)g @F14 @sf
(statemen)o(ts)f(can)h(clarify)f(the)-1650 57 y(co)q(de.)-102 118 y @F9 @sf
(3.5.4.2)52 b(Arra)o(y)o 16 x(declarators)-604 86 y @F14 @sf(The)12 b
(concept)g(of)f @F11 @sf(c)n(omp)n(osite)h(typ)n(es)j @F14 @sf(\()p @F12 @sf
(x)p @F14 @sf(3.1.2.6)o(\))10 b(w)o(as)g(in)o(tro)q(duced)i(to)f(pro)o
(vide)g(for)g(the)g(accretion)-1651 56 y(of)17 b(informati)o(on)e(from)h
(incomplete)g(declarations,)f(suc)o(h)i(as)g(arra)o(y)e(declarations)g
(with)h(miss-)-1651 57 y(ing)e(size,)h(and)f(function)g(declarations)f
(with)h(missing)f(protot)o(yp)q(e)h(\(argumen)o(t)f(declarations\).)-1652 
56 y(T)o(yp)q(e)k(declarators)d(are)i(therefore)f(said)h(to)f(sp)q(ecify)h 
@F11 @sf(c)n(omp)n(atible)h(typ)n(es)e @F14 @sf(if)g(they)h(agree)g
(except)-1650 57 y(for)f(the)g(fact)g(that)f(one)i(pro)o(vides)e(less)h
(information)f(of)g(this)h(sort)f(than)h(the)h(other.)-1392 56 y(The)h
(declaration)e(of)g(0-length)h(arra)o(ys)f(is)h(in)o(v)m(alid,)f(under)i
(the)f(general)g(principle)g(of)g(not)-1651 57 y(pro)o(viding)f(for)g
(0-length)h(ob)s(jects.)k(The)c(only)g(common)f(use)h(of)g(this)f
(construct)g(has)h(b)q(een)h(in)-1651 56 y(the)f(declaration)e(of)h
(dynamically)f(allo)q(cated)g(v)m(ariable-size)g(arra)o(ys,)g(suc)o(h)h
(as)-1172 84 y @F8 @sf(struct)23 b(segment)g({)-286 57 y(short)g(int)g
(count;)-382 56 y(char)g(c[N];)-335 57 y(};)-351 124 y
54 @eop1

55 @bop0
@F9 @sf
[<
0018007000E001C00380038007000E000E001E001C003C003C007800780078007800F800F0
00F000F000F000F000F000F000F000F000F80078007800780078003C003C001C001E000E00
0E0007000380038001C000E000700018>
. 13 45 -3 33 20] 40 @dc
[<
C000700038001C000E000E0007000380038003C001C001E001E000F000F000F000F000F800
780078007800780078007800780078007800F800F000F000F000F001E001E001C003C00380
038007000E000E001C0038007000C000>
. 13 45 -3 33 20] 41 @dc

55 @eop0

0 0 55 @bop1 112 50 a @F10 @sf(3.5.)35 b(Declarati)o(ons)1250 b @F14 @sf
(55)-1460 145 y @F8 @sf(struct)23 b(segment)g(*)h(new_segment\()e(const)h
(int)h(length)f(\))-1146 57 y({)72 56 y(struct)g(segment)g(*)h(result;)-574 
56 y(result)f(=)h(malloc\()f(sizeof)g(segment)f(+)i(\(length-N\))f(\);)-1122 
57 y(result->count)f(=)i(length;)-550 56 y(return)f(result;)-431 57 y(})
-215 89 y @F14 @sf(In)16 b(suc)o(h)e(usage,)g @F8 @sf(N)h @F14 @sf(w)o
(ould)f(b)q(e)h @F8 @sf(0)f @F14 @sf(and)h @F8 @sf(\(length-N\))e @F14 @sf
(w)o(ould)h(b)q(e)h(written)f(as)g @F8 @sf(length)p @F14 @sf(.)k(But)d
(this)-1651 57 y(paradigm)e(w)o(orks)f(just)h(as)g(w)o(ell,)g(as)g
(written,)f(if)h @F8 @sf(N)g @F14 @sf(is)g @F8 @sf(1)p @F14 @sf(.)19 b
(\(Note,)13 b(b)o(y)g(the)g(b)o(y)l(,)h(an)f(alternate)f(w)o(a)o(y)-1651 
56 y(of)j(sp)q(ecifying)g(the)h(size)f(of)g @F8 @sf(result)p @F14 @sf(:)
-350 82 y @F8 @sf(result)23 b(=)h(malloc\()f(offsetof\(str)o(uct)f
(segment,c\))h(+)h(length)f(\);)-1600 81 y @F14 @sf(This)15 b(illustrates)f
(one)h(of)g(the)g(uses)g(of)g(the)g @F8 @sf(offsetof)f @F14 @sf(macro.\))
-1113 118 y @F9 @sf(3.5.4.3)52 b(F)l(unction)17 b(declarators)g
(\(including)g(protot)o(yp)q(es\))-1199 86 y @F14 @sf(The)e(function)e
(protot)o(yp)q(e)g(mec)o(hanism)h(is)f(one)h(of)f(the)h(most)f(useful)h
(additions)f(to)g(the)h(C)g(lan-)-1651 56 y(guage.)19 b(The)13 b(feature,)g
(of)g(course,)g(has)g(preceden)o(t)g(in)g(man)o(y)g(of)f(the)h
(Algol-deriv)o(ed)f(languages)-1651 57 y(of)j(the)f(past)h(25)f(y)o(ears.)
19 b(The)14 b(particular)g(form)g(adopted)g(in)h(the)f(Standard)h(is)f
(based)h(in)f(large)-1651 56 y(part)h(up)q(on)h(C++.)-259 57 y(F)l
(unction)j(protot)o(yp)q(es)f(pro)o(vide)h(a)f(p)q(o)o(w)o(erful)h
(translati)o(on-time)e(error)i(detection)f(capa-)-1650 56 y(bilit)o(y)l(.)j
(In)16 b(traditional)o 14 x(C)g(practice)f(without)g(protot)o(yp)q(es,)g
(it)g(is)g(extremely)g(di\016cult)g(for)g(the)-1650 57 y(translator)i(to)g
(detect)i(errors)e(\(wrong)h(n)o(um)o(b)q(er)g(or)g(t)o(yp)q(e)h(of)e
(argumen)o(ts\))h(in)g(calls)f(to)h(func-)-1650 56 y(tions)13 b(declared)h
(in)g(another)g(source)f(\014le.)20 b(Detection)13 b(of)g(suc)o(h)h
(errors)f(has)h(either)g(o)q(ccurred)g(at)-1651 57 y(run)o(time,)h(or)f
(through)h(the)h(use)f(of)g(auxiliary)e(soft)o(w)o(are)h(to)q(ols.)-1026 
56 y(In)20 b(function)f(calls)f(not)h(in)g(the)g(scop)q(e)g(of)g(a)g
(function)g(protot)o(yp)q(e,)g(in)o(tegral)e(argumen)o(ts)-1651 57 y(ha)o
(v)o(e)h(the)g @F11 @sf(inte)n(gr)n(al)f(widening)h(c)n(onversions)i 
@F14 @sf(applied)e(and)g @F8 @sf(float)f @F14 @sf(argumen)o(ts)g(are)h
(widened)-1650 56 y(to)j @F8 @sf(double)p @F14 @sf(.)37 b(It)21 b(is)f(th)o
(us)h(imp)q(ossible)g(in)f(suc)o(h)i(a)f(call)f(to)g(pass)h(an)g(uncon)o
(v)o(erted)g @F8 @sf(char)g @F14 @sf(or)-1651 56 y @F8 @sf(float)f @F14 @sf
(argumen)o(t.)33 b(F)l(unction)20 b(protot)o(yp)q(es)f(giv)o(e)h(the)g
(programmer)e(explicit)i(con)o(trol)e(o)o(v)o(er)-1651 57 y(the)e
(function)f(argumen)o(t)g(t)o(yp)q(e)h(con)o(v)o(ersions,)e(so)h(that)g
(the)g(often)h(inappropriate)e(and)i(some-)-1651 56 y(times)22 b(ine\016cien)o
(t)g(default)g(widening)g(rules)g(for)g(argumen)o(ts)f(can)i(b)q(e)g
(suppressed)g(b)o(y)f(the)-1650 57 y(implemen)o(tation.)k(Mo)q(di\014cations)
16 b(of)h(function)h(in)o(terfaces)e(are)i(easier)f(in)g(cases)h(where)f
(the)-1650 56 y(actual)i(argumen)o(ts)f(are)h(still)f(assignmen)o(t)g
(compatible)h(with)f(the)i(new)f(formal)f(parameter)-1651 57 y(t)o(yp)q(e)f
(|)g(only)g(the)g(function)f(de\014nition)h(and)g(its)f(protot)o(yp)q(e)g
(need)h(to)f(b)q(e)i(rewritten)d(in)i(this)-1651 56 y(case;)e(no)g
(function)g(calls)g(need)h(b)q(e)g(rewritten.)-745 57 y(Allo)o(wing)k(an)i
(optional)e(iden)o(ti\014er)i(to)f(app)q(ear)h(in)g(a)f(function)h(protot)o
(yp)q(e)f(serv)o(es)h(t)o(w)o(o)-1652 56 y(purp)q(oses:)-117 82 y @F12 @sf
(\017)g @F14 @sf(the)12 b(programmer)e(can)i(asso)q(ciate)f(a)h
(meaningful)f(name)g(with)h(eac)o(h)f(argumen)o(t)g(p)q(osition)-1537 56 y
(for)k(do)q(cumen)o(tation)f(purp)q(oses,)i(and)-700 89 y @F12 @sf(\017)
22 b @F14 @sf(a)15 b(function)g(declarator)e(and)i(a)g(function)g(protot)o
(yp)q(e)f(can)h(use)g(the)g(same)g(syn)o(tax.)k(The)-1536 57 y(consisten)o
(t)12 b(syn)o(tax)g(mak)o(es)g(it)f(easier)h(for)g(new)h(users)g(of)f(C)g
(to)g(learn)g(the)h(language.)18 b(Au-)-1536 56 y(tomatic)12 b(generation)h
(of)g(function)g(protot)o(yp)q(e)g(declarators)f(from)g(function)i
(de\014nitions)-1537 57 y(is)h(also)f(facilitat)o(ed.)936 124 y @F15 @sf
(RA)m(TIONALE)-1763 b
55 @eop1

56 @bop0
@F14 @sf
[<
0000078000000FC000001FE000003FE000003FF0000038700000783000007010001FF01000
F0F01001E0F80007A0FE000F20CF000E20C7001E1087803C0F03C03C0003C07C0003E07800
01E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001
F0F80001F0780001E07C0003E07C0003E03C0003C03C0003C01E0007800E0007000F000F00
07801E0001C0380000F0F000001F8000>
. 28 41 -3 31 35] 81 @dc

56 @eop0

0 0 56 @bop1 112 50 a @F14 @sf(56)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1580 145 y @F14 @sf(Optimizers)13 b(can)g(also)f(tak)o(e)g
(adv)m(an)o(tage)h(of)f(function)h(protot)o(yp)q(e)g(informati)o(on.)18 b
(Consider)-1651 57 y(this)d(example:)-74 128 y @F8 @sf(extern)23 b(int)h
(compare\(const)e(char)h(*)h(string1,)-502 57 y(const)f(char)g(*)h
(string2\))f(;)-1003 112 y(void)h(func2\(int)e(x\))-406 57 y({)167 56 y
(char)i(*)f(str1,)h(*)f(str2)h(;)-406 57 y(/*)f(...)h(*/)-311 56 y(x)g(=)g
(compare\(str1,)o 23 x(str2\))f(;)-501 57 y(/*)g(...)h(*/)-502 56 y(})-215 
122 y @F14 @sf(The)13 b(optimizer)e(kno)o(ws)g(that)g(the)i(p)q(oin)o
(ters)e(passed)h(to)g @F8 @sf(compare)f @F14 @sf(are)g(not)h(used)h(to)e
(assign)g(new)-1650 56 y(v)m(alues)j(to)e(an)o(y)g(ob)s(jects)h(that)f
(the)h(p)q(oin)o(ters)f(reference.)20 b(Hence)14 b(the)f(optimizer)e(can)i
(mak)o(e)g(less)-1651 57 y(conserv)m(ativ)o(e)g(assumptions)f(ab)q(out)h
(the)g(side)g(e\013ects)g(of)f @F8 @sf(compare)g @F14 @sf(than)h(w)o(ould)g
(otherwise)f(b)q(e)-1650 56 y(necessary)l(.)-124 63 y(The)j(Standard)g
(requires)g(that)f(calls)g(to)g(functions)h(taking)f(a)h(v)m(ariable)f(n)o
(um)o(b)q(er)h(of)g(argu-)-1651 57 y(men)o(ts)f(m)o(ust)f(o)q(ccur)i(in)e
(the)h(presence)h(of)e(a)h(protot)o(yp)q(e)f(\(using)g(the)h(trailing)e
(ellipsis)h(notation)-1652 56 y @F8 @sf(,...)p @F14 @sf(\).)19 b(An)14 b
(implemen)o(tati)o(on)e(ma)o(y)h(th)o(us)g(assume)h(that)e(all)h(other)g
(functions)g(are)g(called)g(with)-1651 57 y(a)e(\014xed)h(argumen)o(t)e
(list,)g(and)h(ma)o(y)f(therefore)h(use)g(p)q(ossibly)g(more)f(e\016cien)o
(t)h(calling)f(sequences.)-1650 56 y(Programs)i(using)h(old-st)o(yle)f
(headers)h(in)g(whic)o(h)g(the)h(n)o(um)o(b)q(er)f(of)g(argumen)o(ts)f(in)h
(the)g(calls)f(and)-1650 57 y(the)i(de\014nition)g(di\013er)f(ma)o(y)g
(not)h(w)o(ork)f(in)g(implemen)o(tations)g(whic)o(h)g(tak)o(e)g(adv)m(an)o
(tage)h(of)f(suc)o(h)-1650 56 y(optimizations.)33 b(This)20 b(is)f(not)h
(a)g(Quiet)g(Change,)h(strictly)d(sp)q(eaking,)j(since)f(the)h(program)-1652 
57 y(do)q(es)e(not)e(conform)g(to)g(the)h(Standard.)28 b(A)17 b(w)o(ord)g
(of)h(w)o(arning)e(is)i(in)f(order,)h(ho)o(w)o(ev)o(er,)f(since)-1650 56 y
(the)f(st)o(yle)e(is)h(not)f(uncommon)i(in)f(extan)o(t)f(co)q(de,)h(and)h
(since)f(a)g(conforming)f(translator)f(is)i(not)-1651 57 y(required)e(to)e
(diagnose)h(suc)o(h)g(mismatc)o(hes)g(when)g(they)h(o)q(ccur)f(in)g
(separate)g(translati)o(on)f(units.)-1651 56 y(Suc)o(h)h(trouble)f(sp)q
(ots)g(can)h(b)q(e)g(made)f(manifest)g(\(assuming)f(an)h(implemen)o
(tation)f(pro)o(vides)h(rea-)-1651 56 y(sonable)k(diagnostics\))e(b)o(y)h
(pro)o(viding)g(new-st)o(yle)g(function)h(declarations)e(in)i(the)f
(translation)-1652 57 y(units)j(with)f(the)h(non-matc)o(hing)f(calls.)24 b
(Programmers)15 b(who)h(curren)o(tly)h(rely)f(on)h(b)q(eing)g(able)-1651 
56 y(to)e(omit)f(trailing)f(argumen)o(ts)i(are)g(advised)g(to)f(reco)q(de)i
(using)f(the)g @F8 @sf(<stdarg.h>)f @F14 @sf(paradigm.)-1561 64 y(F)l
(unction)h(protot)o(yp)q(es)f(ma)o(y)h(b)q(e)h(used)g(to)e(de\014ne)i
(function)f(t)o(yp)q(es)h(as)f(w)o(ell:)-1193 128 y @F8 @sf(typedef)47 b
(double)23 b(\(*d_binop\))g(\(double)g(A,)g(double)g(B\);)-1146 113 y
(struct)g(d_funct)g({)-286 57 y(d_binop)190 b(f1;)-430 56 y(int)286 b
(\(*f2\)\(double,)22 b(double\);)-980 57 y(};)-239 121 y @F14 @sf(The)12 b
(structure)f @F8 @sf(d)s 14 -2 z 14 x(funct)f @F14 @sf(has)h(t)o(w)o(o)f
(\014elds,)i(b)q(oth)f(of)g(whic)o(h)g(hold)g(p)q(oin)o(ters)g(to)g
(functions)f(taking)-1651 57 y(t)o(w)o(o)k(double)i(argumen)o(ts;)e(the)h
(function)g(t)o(yp)q(es)g(di\013er)g(in)g(their)g(return)g(t)o(yp)q(e.)-1474 
124 y
56 @eop1

57 @bop0
@F6 @sf
[<
FFFFE0FFFFE07C03E03E00E03F00601F80700F807007C03007E03003F03001F00000F80000
FC00C07E00C03E00C01F00E01F80600FC07007C07C03E07FFFF07FFFF0>
. 20 22 -2 21 25] 122 @dc

57 @eop0

0 0 57 @bop1 112 50 a @F10 @sf(3.5.)30 b(Declarati)o(ons)1255 b @F14 @sf
(57)-1651 145 y @F6 @sf(3.5.5)56 b(T)n(yp)r(e)18 b(names)-469 86 y @F14 @sf
(Empt)o(y)e(paren)o(theses)g(within)f(a)h(t)o(yp)q(e)g(name)g(are)f(alw)o
(a)o(ys)g(tak)o(en)g(as)h(meaning)f @F11 @sf(function)i(with)-1650 56 y
(unsp)n(e)n(ci\014e)n(d)k(ar)n(guments)k @F14 @sf(and)c(nev)o(er)h(as)f
(\(unnecessary\))h(paren)o(theses)f(around)h(the)f(elided)-1650 57 y(iden)o
(ti\014er.)f(This)15 b(sp)q(eci\014cation)g(a)o(v)o(oids)f(an)h(am)o
(biguit)o(y)e(b)o(y)i(\014at.)-1128 121 y @F6 @sf(3.5.6)56 b(T)n(yp)r(e)
18 b(de\014nitions)-570 85 y @F14 @sf(A)11 b @F8 @sf(typedef)e @F14 @sf
(ma)o(y)h(only)g(b)q(e)h(redeclared)f(in)g(an)h(inner)f(blo)q(c)o(k)g
(with)g(a)g(declaration)f(that)h(explicitly)-1652 57 y(con)o(tains)18 b(a)g
(t)o(yp)q(e)g(name.)29 b(This)18 b(rule)h(a)o(v)o(oids)e(the)h(am)o
(biguit)o(y)e(ab)q(out)j(whether)f(to)g(tak)o(e)f(the)-1650 56 y @F8 @sf
(typedef)e @F14 @sf(as)f(the)i(t)o(yp)q(e)f(name)g(or)g(the)g(candidate)g
(for)g(redeclaration.)-1152 57 y(Some)i(implemen)o(tations)e(of)h(C)h(ha)o
(v)o(e)g(allo)o(w)o -1 x(ed)f(t)o(yp)q(e)h(sp)q(eci\014ers)g(to)g(b)q(e)g
(added)h(to)e(a)g(t)o(yp)q(e)-1650 56 y(de\014ned)h(using)e @F8 @sf
(typedef)p @F14 @sf(.)k(Th)o(us)-385 89 y @F8 @sf(typedef)k(short)g(int)h
(small)f(;)-597 56 y(unsigned)g(small)g(x)h(;)-621 89 y @F14 @sf(w)o(ould)c
(giv)o(e)f @F8 @sf(x)g @F14 @sf(the)h(t)o(yp)q(e)g @F8 @sf(unsigned)j
(short)g(int)p @F14 @sf(.)33 b(The)20 b(Committee)e(decided)j(that)e
(since)-1650 56 y(this)d(in)o(terpretation)f(ma)o(y)g(b)q(e)i(di\016cult)f
(to)f(pro)o(vide)h(in)g(man)o(y)g(implemen)o(tati)o(ons,)f(and)h(since)-1650 
56 y(it)c(defeats)g(m)o(uc)o(h)g(of)g(the)g(utilit)o(y)f(of)g @F8 @sf
(typedef)h @F14 @sf(as)g(a)f(data)h(abstraction)f(mec)o(hanism,)h(suc)o(h)g
(t)o(yp)q(e)-1650 57 y(mo)q(di\014cations)j(are)g(in)o(v)m(alid.)k(This)c
(decision)g(is)f(incorp)q(orated)h(in)g(the)g(rules)g(of)g @F12 @sf(x)p 
@F14 @sf(3.5.2.)-1457 56 y(A)g(prop)q(osed)h @F8 @sf(typeof)e @F14 @sf(op)q
(erator)h(w)o(as)f(rejected)h(on)h(the)f(grounds)g(of)g(insu\016cien)o(t)g
(utilit)n(y)l(.)-1639 121 y @F6 @sf(3.5.7)56 b(Initializ)o(ation)-485 86 y 
@F14 @sf(An)25 b(implemen)o(tation)e(migh)o(t)h(conceiv)m(ably)h(ha)o(v)o
(e)f(co)q(des)i(for)e(\015oating)f(zero)i(and/or)f(n)o(ull)-1651 56 y(p)q
(oin)o(ter)14 b(other)g(than)g(all)g(bits)f(zero.)20 b(In)15 b(suc)o(h)f
(a)g(case,)g(the)h(implemen)o(tati)o(on)e(m)o(ust)h(\014ll)g(out)f(an)-1650 
57 y(incomplete)18 b(initializer)e(with)i(the)g(v)m(arious)g(appropriate)f
(represen)o(tations)g(of)h(zero;)h(it)e(ma)o(y)-1651 56 y(not)e(just)g
(\014ll)g(the)g(area)g(with)f(zero)h(b)o(ytes.)-659 57 y(The)e(Committee)f
(considered)h(prop)q(osals)f(for)g(p)q(ermitting)g(automati)o(c)g
(aggregate)f(initial-)-1652 56 y(izers)20 b(to)f(consist)h(of)f(a)h
(brace-enclosed)g(series)g(of)f(arbitrary)g(\(execute-time\))g
(expressions,)-1651 57 y(instead)g(of)g(just)g(those)g(usable)g(for)g(a)g
(translate-tim)o(e)f(static)g(initializer.)31 b(Ho)o(w)o(ev)o(er,)18 b
(cases)-1650 56 y(lik)o(e)d(this)f(w)o(ere)h(troubling:)-282 89 y @F8 @sf
(int)24 b(x[2])f(=)h({)g(f\(x[1]\),)e(g\(x[0]\))h(};)-955 88 y @F14 @sf
(Rather)16 b(than)g(determine)g(a)g(set)f(of)h(rules)g(whic)o(h)f(w)o
(ould)h(a)o(v)o(oid)e(pathological)g(cases)i(and)g(y)o(et)-1651 56 y(not)
11 b(seem)g(to)q(o)f(arbitrary)l(,)g(the)g(Committee)g(elected)h(to)f(p)q
(ermit)g(only)h(static)e(initializers.)o 18 x(Con-)-1651 57 y(sequen)o
(tly)l(,)16 b(an)g(implemen)o(tatio)o(n)f(ma)o(y)g(c)o(ho)q(ose)g(to)h
(build)f(a)h(hidden)g(static)f(aggregate,)o 15 x(using)-1651 56 y(the)h
(same)f(mac)o(hinery)g(as)g(for)g(other)g(aggregate)f(initiali)o(zers,)g
(then)i(cop)o(y)f(that)g(aggregate)f(to)-1651 57 y(the)i(automatic)d(v)m
(ariable)i(up)q(on)h(blo)q(c)o(k)f(en)o(try)l(.)-741 56 y(A)k(structure)g
(expression,)g(suc)o(h)g(as)f(a)h(call)f(to)g(a)g(function)h(returning)g
(the)f(appropriate)-1651 57 y(structure)h(t)o(yp)q(e,)g(is)g(p)q(ermitted)f
(as)h(an)g(automati)o(c)f(structure)g(initializer,)g(since)h(the)g(usage)
-1651 56 y(seems)d(unproblematic.)-358 57 y(F)l(or)d(programmer)f(con)o(v)o
(enience,)i(ev)o(en)g(though)g(it)f(is)g(a)g(minor)g(irregularit)o -1 x(y)f
(in)h(initializer)-1652 56 y(seman)o(tics,)j(the)g(trailing)f(n)o(ull)h(c)o
(haracter)f(in)i(a)f(string)f(literal)g(need)i(not)f(initial)o(ize)f(an)i
(arra)o(y)-1652 57 y(elemen)o(t,)e(as)g(in:)1111 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
57 @eop1

58 @bop0
@F6 @sf
[<
2070181C0C06060703033B7FFFFFFE7C38>
. 8 17 -4 6 16] 44 @dc
[<
FFE0FFC0FFE0FFC01F003C001F007C001F00F8001F01F0001F01E0001F03E0001F07C0001F
0F80001FCF00001FFF00001F7E00001F1C00001F0E00001F0700001F0380001F01C0001F00
60001F0038001F00FF801F00FF801F0000001F0000001F0000001F0000001F0000001F0000
001F0000001F0000001F0000001F0000001F000000FF000000FF000000>
. 26 35 -2 34 30] 107 @dc

58 @eop0

0 0 58 @bop1 112 50 a @F14 @sf(58)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1460 145 y @F8 @sf(char)24 b(mesg[5])f(=)g("help!")g(;)-764 
75 y @F14 @sf(\(Some)15 b(widely)g(used)h(implemen)o(tatio)o(ns)e(pro)o
(vide)h(preceden)o(t.\))-1040 57 y(The)j(Base)f(Do)q(cumen)o(t)h(allo)o(w)o
(s)e(a)h(trailing)f(comma)h(in)g(an)g(initializer)f(at)h(the)g(end)h(of)f
(an)-1650 56 y(initializer-li)o(st.)h(The)c(Standard)f(has)h(retained)f
(this)g(syn)o(tax,)g(since)g(it)g(pro)o(vides)g(\015exibilit)o(y)g(in)-1651 
57 y(adding)e(or)f(deleting)g(mem)o(b)q(ers)g(from)g(an)g(initializer)f
(list,)h(and)g(simpli\014es)g(mac)o(hine)g(generation)-1651 56 y(of)15 b
(suc)o(h)h(lists.)-177 57 y(V)l(arious)e(implemen)o(tations)f(ha)o(v)o(e)h
(parsed)h(aggregate)e(initiali)o(zers)h(with)g(partiall)o(y)f(elided)-1650 
56 y(braces)18 b(di\013eren)o(tly)l(.)24 b(The)17 b(Standard)g(has)g
(rea\016rmed)g(the)g(\(top-do)o(wn\))f(parse)h(describ)q(ed)h(in)-1651 56 y
(the)f(Base)f(Do)q(cumen)o(t.)22 b(Although)15 b(the)h(construct)g(is)f
(allo)o(w)o(ed,)f(and)j(its)e(parse)g(w)o(ell)g(de\014ned,)-1649 57 y(the)f
(Committ)o(ee)e(urges)h(programmers)f(to)h(a)o(v)o(oid)f(partiall)o(y)g
(elided)h(initiali)o(zers:)18 b(suc)o(h)13 b(initial-)-1652 56 y(izations)h
(can)i(b)q(e)g(quite)f(confusing)g(to)f(read.)-123 81 y @F7 @sf(QUIET)h
(CHANGE)-876 71 y @F14 @sf(Co)q(de)20 b(whic)o(h)g(relies)f(on)h(a)g(b)q
(ottom-up)g(parse)g(of)f(aggregate)g(initial)o(izers)f(with)-1423 56 y
(partially)13 b(elided)j(braces)f(will)f(not)h(yield)f(the)i(exp)q(ected)g
(initiali)o(zed)f(ob)s(ject.)-1458 116 y(The)h(Committee)d(has)i(adopted)g
(the)g(rule)g(\(already)f(used)i(successfully)f(in)g(some)f(implemen-)-1650 
56 y(tations\))e(that)h(the)h(\014rst)f(mem)o(b)q(er)h(of)f(the)g(union)h
(is)f(the)h(candidate)f(for)g(initiali)o(zati)o(on.)18 b(Other)-1650 56 y
(notations)10 b(for)g(union)h(initial)o(izat)o(ion)e(w)o(ere)i
(considered,)g(but)g(none)g(seemed)h(of)e(su\016cien)o(t)g(merit)-1651 57 y
(to)15 b(out)o(w)o(eigh)f(the)h(lac)o(k)g(of)f(prior)h(art.)-584 56 y
(This)h(rule)g(has)g(a)f(parallel)g(with)h(the)g(initial)o(izati)o(on)f
(of)g(structures.)23 b(Mem)o(b)q(ers)16 b(of)f(struc-)-1650 57 y(tures)h
(are)f(initial)o(ized)f(in)i(the)f(sequence)i(in)e(whic)o(h)g(they)g(are)g
(declared.)21 b(The)15 b(same)g(can)h(no)o(w)-1651 56 y(b)q(e)i(said)e(of)h
(unions,)g(with)f(the)h(signi\014can)o(t)e(di\013erence)i(that)f(only)h
(one)g(union)g(mem)o(b)q(er)g(\(the)-1651 57 y(\014rst\))e(can)g(b)q(e)h
(initiali)o(zed.)-465 139 y @F4 @sf(3.6)70 b(Statemen)n(ts)-493 104 y 
@F6 @sf(3.6.1)56 b(Lab)r(eled)17 b(statemen)n(ts)-647 85 y @F14 @sf(Since)c
(lab)q(el)e(de\014nition)g(and)h(lab)q(el)g(reference)g(are)f(syn)o
(tactically)f(distinctiv)o(e)g(con)o(texts,)i(lab)q(els)-1651 57 y(are)j
(established)g(as)g(a)g(separate)g(name)g(space.)-823 118 y @F6 @sf(3.6.2)
56 b(Comp)r(ound)19 b(statemen)n(t,)e(or)i(blo)r(c)n(k)-936 86 y @F14 @sf
(The)12 b(Committ)o(ee)e(considered)i(prop)q(osals)e(for)g(forbidding)h(a)f 
@F8 @sf(goto)h @F14 @sf(in)o(to)f(a)g(blo)q(c)o(k)h(from)f(outside,)-1651 
56 y(since)h(suc)o(h)g(a)f(restriction)g(w)o(ould)g(mak)o(e)g(p)q(ossible)g
(m)o(uc)o(h)h(easier)f(\015o)o(w)g(optimizati)o(on)f(and)i(w)o(ould)-1651 
57 y(a)o(v)o(oid)20 b(the)g(whole)g(issue)g(of)g(initial)o(izing)f @F8 @sf
(auto)g @F14 @sf(storage)g(\(see)i @F12 @sf(x)p @F14 @sf(3.1.2.)o(4\).)o 
34 x(The)g(Committee)-1652 56 y(rejected)15 b(suc)o(h)f(a)f(ban)h(out)f
(of)h(fear)f(of)g(in)o(v)m(alidating)f(w)o(orking)h(co)q(de)h(\(ho)o(w)o
(ev)o(er)e(undisciplined\))-1650 57 y(and)k(out)f(of)f(concern)i(for)f
(those)g(pro)q(ducing)g(mac)o(hine-generated)g(C.)-1221 118 y @F6 @sf
(3.6.3)56 b(Expression)17 b(and)i(n)n(ull)g(statemen)n(ts)-939 86 y @F14 @sf
(The)f @F8 @sf(void)e @F14 @sf(cast)g(is)h(not)f(needed)j(in)d(an)h
(expression)g(statemen)o(t,)f(since)h(an)o(y)g(v)m(alue)g(is)f(alw)o(a)o
(ys)-1652 56 y(discarded.)23 b(Some)17 b(c)o(hec)o(king)f(compilers)f
(prefer)h(this)g(reassurance,)g(ho)o(w)o(ev)o(er,)f(for)h(functions)-1651 
57 y(that)f(return)g(ob)s(jects)g(of)f(t)o(yp)q(es)i(other)e(than)i @F8 @sf
(void)p @F14 @sf(.)-1012 124 y
58 @eop1

59 @bop0
@F10 @sf
[<
07C000187000301800701C00600E00E00F00E00700E00780E00780F00780F003C0F003C0F0
03C0F003C0F80380F803807C03007A0700790E0078F8003800003C00001C00001E00000E00
C00701E00301E00180E000C020007040000F80>
. 19 31 -4 29 23] 54 @dc
@F8 @sf
[<
FFFFE0FFFFE0FFFFE07000E07800E03C00E01C00E01E00E00F000007000007800003C00001
C00001E00000F000007000007800003C00001C00001E00000F007007007007807003C07001
C07FFFE07FFFE03FFFE0>
. 19 28 -2 27 24] 90 @dc
@F6 @sf
[<
07F8001FFF007C1FC07E0FE0FF07E0FF07F0FF07F0FF07F07E07F01807F00007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007
F00007F00007F00007F00007F00007F00007F00007F003FFFF03FFFF>
. 24 34 -1 33 29] 74 @dc

59 @eop0

0 0 59 @bop1 112 50 a @F10 @sf(3.6.)35 b(Statemen)o(ts)1276 b @F14 @sf(59)
-1651 145 y @F6 @sf(3.6.4)56 b(Selecti)o(on)18 b(statemen)n(ts)-675 90 y 
@F9 @sf(3.6.4.1)52 b(The)18 b @F8 @sf(if)f @F9 @sf(statemen)o(t)-599 90 y 
@F14 @sf(See)f @F12 @sf(x)q @F14 @sf(3.6.2)o(.)-209 133 y @F9 @sf(3.6.4.2)
52 b(The)18 b @F8 @sf(switch)e @F9 @sf(statemen)o(t)-694 90 y @F14 @sf
(The)g(con)o(trolling)e(expression)h(of)g(a)g @F8 @sf(switch)g @F14 @sf
(statemen)o(t)f(ma)o(y)h(no)o(w)g(ha)o(v)o(e)g(an)o(y)g(in)o(tegral)f(t)o
(yp)q(e,)-1651 56 y(ev)o(en)f @F8 @sf(unsigned)23 b(long)p @F14 @sf(.)18 b
(Floating)10 b(t)o(yp)q(es)i(w)o(ere)g(rejected)h(for)e(switc)o(h)g
(statemen)o(ts)g(since)i(exact)-1651 56 y(equalit)o(y)h(in)i(\015oating)e
(p)q(oin)o(t)g(is)h(not)g(p)q(ortable.)-744 59 y @F8 @sf(case)j @F14 @sf
(lab)q(els)f(are)h(\014rst)g(con)o(v)o(erted)g(to)g(the)g(t)o(yp)q(e)g(of)g
(the)g(con)o(trolling)e(expression)j(of)e(the)-1650 57 y(switc)o(h,)d
(then)g(c)o(hec)o(k)o(ed)h(for)e(equalit)o(y)g(with)g(other)h(lab)q(els;)g
(no)g(t)o(w)o(o)e(ma)o(y)i(matc)o(h)f(after)h(con)o(v)o(er-)-1651 56 y
(sion.)-21 59 y(Case)k(ranges)h(\(of)f(the)h(form)f @F8 @sf(lo)23 b(..)h
(hi)p @F14 @sf(\))18 b(w)o(ere)h(seriously)f(considered,)h(but)g
(ultimately)-1652 56 y(not)e(adopted)g(in)g(the)g(Standard)g(on)g(the)g
(grounds)g(that)f(it)g(added)i(no)f(new)g(capabilit)o(y)l(,)f(just)-1651 
57 y(a)j(problematic)g(co)q(ding)g(con)o(v)o(enience.)32 b(The)20 b
(construct)f(seems)g(to)g(promise)f(more)h(than)g(it)-1651 56 y(could)d(b)q
(e)g(mandated)f(to)f(deliv)o(er:)-527 102 y @F12 @sf(\017)22 b @F14 @sf(A)
12 b(great)g(deal)g(of)g(co)q(de)g(\(or)g(jump)g(table)g(space\))g(migh)o
(t)f(b)q(e)i(generated)f(for)g(an)g(inno)q(cen)o(t-)-1536 57 y(lo)q(oking)i
(case)h(range)g(suc)o(h)h(as)f @F8 @sf(0)23 b(..)h(65535)p @F14 @sf(.)-835 
102 y @F12 @sf(\017)e @F14 @sf(The)14 b(range)e @F8 @sf(\015A\015..\015Z\015)h
@F14 @sf(w)o(ould)f(sp)q(ecify)i(all)e(the)h(in)o(tegers)f(b)q(et)o(w)o
(een)i(the)f(c)o(haracter)g(co)q(de)-1536 57 y(for)h @F8 @sf(A)h @F14 @sf
(and)g(that)f(for)g @F8 @sf(Z)p @F14 @sf(.)g(In)h(some)g(common)f(c)o
(haracter)g(sets)g(this)h(range)f(w)o(ould)g(include)-1536 56 y
(non-alphab)q(etic)e(c)o(haracters,)f(and)g(in)h(others)f(it)f(migh)o(t)h
(not)g(include)h(all)e(the)i(alphab)q(etic)-1537 57 y(c)o(haracters)j
(\(esp)q(ecially)f(in)h(non-English)g(c)o(haracter)f(sets\).)-1089 102 y
(No)h(serious)f(consideration)g(w)o(as)h(giv)o(en)f(to)h(making)f(the)h
(switc)o(h)f(more)h(structured,)g(as)g(in)-1651 57 y(P)o(ascal,)f(out)h
(of)g(fear)f(of)h(in)o(v)m(alidating)f(w)o(orking)g(co)q(de.)-290 117 y 
@F7 @sf(QUIET)h(CHANGE)-876 79 y @F8 @sf(long)e @F14 @sf(expressions)h
(and)g(constan)o(ts)f(in)h(switc)o(h)f(statemen)o(ts)f(are)i(no)g(longer)f
(trun-)-1423 57 y(cated)i(to)g @F8 @sf(int)p @F14 @sf(.)-376 134 y @F6 @sf
(3.6.5)56 b(Iteration)17 b(statemen)n(ts)-670 90 y @F9 @sf(3.6.5.1)52 b
(The)18 b @F8 @sf(while)e @F9 @sf(statemen)o(t)-670 90 y(3.6.5.2)52 b(The)
18 b @F8 @sf(do)f @F9 @sf(statemen)o(t)-599 90 y(3.6.5.3)52 b(The)18 b 
@F8 @sf(for)f @F9 @sf(statemen)o(t)-623 91 y @F6 @sf(3.6.6)56 b(Jump)18 b
(statemen)n(ts)-593 91 y @F9 @sf(3.6.6.1)52 b(The)18 b @F8 @sf(goto)f 
@F9 @sf(statemen)o(t)-647 90 y @F14 @sf(See)f @F12 @sf(x)q @F14 @sf(3.6.2)o
(.)1190 124 y @F15 @sf(RA)m(TIONALE)-1763 b
59 @eop1

60 @bop0
@F6 @sf
[<
FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F0180007F0180007F0180007F0180007F0380007F0780007FFF80007FFF80007F0
780007F0380007F0180007F0180007F0180C07F0180C07F0000C07F0000C07F0001C07F000
1C07F0001807F0003807F0007807F001F8FFFFFFF8FFFFFFF8>
. 30 34 -2 33 35] 70 @dc

60 @eop0

0 0 60 @bop1 112 50 a @F14 @sf(60)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F9 @sf(3.6.6.2)52 b(The)18 b @F8 @sf(continue)e 
@F9 @sf(statemen)o(t)-742 86 y @F14 @sf(The)23 b(Committee)f(rejected)g
(prop)q(osed)h(enhancemen)o(ts)h(to)e @F8 @sf(continue)f @F14 @sf(and)i 
@F8 @sf(break)f @F14 @sf(whic)o(h)-1651 56 y(w)o(ould)16 b(allo)o(w)e(sp)q
(eci\014cation)i(of)f(an)h(iteration)e(statemen)o(t)h(other)h(than)f(the)h
(immediately)f(en-)-1650 57 y(closing)g(one,)g(on)g(grounds)g(of)g
(insu\016cien)o(t)f(prior)h(art.)-945 117 y @F9 @sf(3.6.6.3)52 b(The)18 b 
@F8 @sf(break)e @F9 @sf(statemen)o(t)-670 86 y @F14 @sf(See)g @F12 @sf(x)q 
@F14 @sf(3.6.6)o(.2.)o -244 118 a @F9 @sf(3.6.6.4)52 b(The)18 b @F8 @sf
(return)e @F9 @sf(statemen)o(t)-694 104 y @F4 @sf(3.7)70 b(External)24 b
(de\014nitions)-749 103 y @F6 @sf(3.7.1)56 b(F)-5 b(unction)19 b
(de\014nitions)-659 86 y @F14 @sf(A)e @F11 @sf(function)g(de\014nition)i 
@F14 @sf(ma)o(y)d(ha)o(v)o(e)g(its)f(old)h(form)g(\(and)g(sa)o(y)g
(nothing)g(ab)q(out)g(argumen)o(ts)f(on)-1650 56 y(calls\),)e(or)g(it)g
(ma)o(y)g(b)q(e)i(in)o(tro)q(duced)f(b)o(y)f(a)h @F11 @sf(pr)n(ototyp)n(e)j 
@F14 @sf(\(whic)o(h)d(a\013ects)f(argumen)o(t)g(c)o(hec)o(king)g(and)-1650 
57 y(co)q(ercion)j(on)f(subsequen)o(t)h(calls\).)i(\(See)e(also)e @F12 @sf
(x)p @F14 @sf(3.1.2.2)o(.\))-982 96 y(T)l(o)g(a)o(v)o(oid)f(a)h(nast)o(y)g
(am)o(biguit)o(y)l(,)o 13 x(the)h(Standard)f(bans)g(the)g(use)h(of)f @F8 @sf
(typedef)f @F14 @sf(names)h(as)g(formal)-1652 56 y(parameters.)20 b(F)l
(or)14 b(instance,)h(in)g(translati)o(ng)f(the)h(text)-775 81 y @F8 @sf
(int)24 b(f\(size_t,)e(a_t,)i(b_t,)f(c_t,)g(d_t,)h(e_t,)f(f_t,)g(g_t,)-1002 
57 y(h_t,)g(i_t,)g(j_t,)h(k_t,)f(l_t,)g(m_t,)g(n_t,)h(o_t,)-931 56 y(p_t,)f
(q_t,)g(r_t,)h(s_t\))-789 81 y @F14 @sf(the)15 b(translato)o(r)e
(determines)h(that)f(the)i(construct)f(can)g(only)g(b)q(e)h(a)e(protot)o
(yp)q(e)h(declaration)f(as)-1651 57 y(so)q(on)j(as)g(it)f(scans)i(the)f
(\014rst)f @F8 @sf(size)s 14 -2 z 14 x(t)h @F14 @sf(and)g(follo)o(wing)e
(comma.)22 b(In)17 b(the)f(absence)h(of)e(this)h(rule,)-1651 56 y(it)d
(migh)o(t)f(b)q(e)i(necessary)g(to)f(see)h(the)f(tok)o(en)g(follo)o(wi)o
(ng)f(the)i(righ)o(t)e(paren)o(thesis)h(that)f(closes)h(the)-1650 56 y
(parameter)i(list,)g(whic)o(h)g(w)o(ould)h(require)f(a)h(sizeable)f(lo)q
(ok-ahead,)g(b)q(efore)h(deciding)g(whether)-1650 57 y(the)j(text)e(under)i
(scrutin)o(y)f(is)g(a)g(protot)o(yp)q(e)f(declaration)g(or)h(an)g(old-st)o
(yle)f(function)h(header)-1650 56 y(de\014nition.)-187 96 y(An)12 b
(argumen)o(t)g(list)f(m)o(ust)g(b)q(e)i(explicitly)e(presen)o(t)h(in)g
(the)h(declarator;)e(it)h(cannot)g(b)q(e)h(inherited)-1651 57 y(from)i(a)g 
@F8 @sf(typedef)f @F14 @sf(\(see)h @F12 @sf(x)p @F14 @sf(3.5.4.3\))o(.)k
(That)14 b(is)h(to)g(sa)o(y)l(,)f(giv)o(en)h(the)g(de\014nition)-1114 81 y 
@F8 @sf(typedef)23 b(int)h(p\(int)f(q,)h(int)f(r\);)-860 81 y @F14 @sf
(the)16 b(follo)o(w)o(ing)e(fragmen)o(t)g(is)g(in)o(v)m(alid:)-462 81 y 
@F8 @sf(p)24 b(funk)47 b(/*)24 b(weird)f(*/)-454 56 y({)h(return)f(q)h(+)g
(r)f(;)h(})-606 121 y @F14 @sf(Some)15 b(curren)o(t)f(implemen)o(tations)f
(rewrite)h(the)h(t)o(yp)q(e)g(of)f(a)g(\(for)g(instance\))g @F8 @sf(char)g 
@F14 @sf(parameter)-1651 56 y(as)21 b(if)f(it)g(w)o(ere)g(declared)h @F8 @sf
(int)p @F14 @sf(,)g(since)g(the)g(argumen)o(t)e(is)i(kno)o(wn)f(to)g(b)q
(e)h(passed)g(as)f(an)h @F8 @sf(int)-1651 57 y @F14 @sf(\(in)c(the)g
(absence)h(of)e(protot)o(yp)q(es\).)24 b(The)17 b(Standard)g(requires,)g
(ho)o(w)o(ev)o(er,)f(that)g(the)h(receiv)o(ed)-1650 56 y(argumen)o(t)e(b)q
(e)h(con)o(v)o(erted)f @F11 @sf(as)h(if)25 b @F14 @sf(b)o(y)16 b
(assignmen)o(t)e(up)q(on)i(function)f(en)o(try)l(.)20 b(T)o(yp)q(e)c
(rewriting)e(is)-1651 57 y(th)o(us)h(no)h(longer)e(p)q(ermissible.)-647 
124 y
60 @eop1

61 @bop0
@F10 @sf
[<
07E000181800300400600300C00100C00080C000C0C000C0C000C06000C06001C03003C010
07C00C0F80063F8001FF0001FC0003FC0007F6000FC1800F80C00E00600C00600C00300C00
300C003004003002006001006000C1C0003F00>
. 20 31 -3 29 23] 56 @dc
[<
07FC001C07003000C0600060C00030C00030C000306000303000301800F007FFE00FFFC00F
FF001C000018000008000008000004FC000787000703800703C00F01E00F01E00F01E00701
E00780E00381E001C1C200E1A3003E1100000E>
. 24 31 0 20 23] 103 @dc
@F6 @sf
[<
1F807FE078F8FC7CFC3CFC3E783E003E003E003E003E003E003E003E003E003E003E003E00
3E003E003E003E003E003E003E003E003E003E003E003E03FE03FE00000000000000000000
000000000038007C00FE00FE00FE007C0038>
. 15 46 3 35 17] 106 @dc

61 @eop0

0 0 61 @bop1 112 50 a @F10 @sf(3.8.)35 b(Prepro)q(cessing)15 b(directiv)o
(es)1022 b @F14 @sf(61)-991 145 y @F7 @sf(QUIET)15 b(CHANGE)-876 76 y 
@F14 @sf(F)l(unctions)d(that)g(dep)q(end)i(on)f @F8 @sf(char)f @F14 @sf
(or)g @F8 @sf(short)f @F14 @sf(parameter)h(t)o(yp)q(es)g(b)q(eing)h
(widened)-1422 56 y(to)i @F8 @sf(int)p @F14 @sf(,)f(or)h @F8 @sf(float)f 
@F14 @sf(to)h @F8 @sf(double)p @F14 @sf(,)f(ma)o(y)g(b)q(eha)o(v)o(e)i
(di\013eren)o(tly)l(.)-1125 159 y(Notes)21 b(for)h(implemen)o(tors:)o 32 x
(the)g(assignmen)o(t)f(con)o(v)o(ersion)g(for)g(argumen)o(t)g(passing)g
(often)-1651 57 y(requires)16 b(no)g(executable)h(co)q(de.)23 b(In)17 b
(most)e(t)o(w)o(os-complemen)o(t)g(mac)o(hines,)g(a)h @F8 @sf(short)f 
@F14 @sf(or)h @F8 @sf(char)-1651 56 y @F14 @sf(is)k(a)g(con)o(tiguous)f
(subset)h(of)g(the)g(b)o(ytes)g(comprising)f(the)h @F8 @sf(int)g @F14 @sf
(actually)f(passed)h(\(for)f(ev)o(en)-1650 57 y(the)c(most)f(un)o(usual)h
(b)o(yte)g(orderings\),)e(so)h(that)h(assignmen)o(t)e(con)o(v)o(ersion)h
(can)h(b)q(e)g(e\013ected)g(b)o(y)-1650 56 y(adjusting)g(the)g(address)h
(of)e(the)i(argumen)o(t)e(\(if)g(necessary\))h(.)-993 57 y(F)l(or)i(an)g
(argumen)o(t)f(declared)h @F8 @sf(float)p @F14 @sf(,)g(ho)o(w)o(ev)o(er,)f
(an)h(explicit)f(con)o(v)o(ersion)h(m)o(ust)f(usually)-1651 57 y(b)q(e)21 b
(p)q(erformed)g(from)e(the)i @F8 @sf(double)e @F14 @sf(actually)g(passed)i
(to)e(the)h @F8 @sf(float)g @F14 @sf(desired.)35 b(Not)20 b(man)o(y)-1651 
56 y(implemen)o(tations)13 b(can)h(subset)g(the)g(b)o(ytes)g(of)f(a)h 
@F8 @sf(double)f @F14 @sf(to)h(get)f(a)h @F8 @sf(float)p @F14 @sf(.)19 b
(\(Ev)o(en)13 b(those)h(that)-1651 56 y(apparen)o(tly)f(p)q(ermit)f
(simple)h(truncation)f(often)h(get)f(the)h(wrong)g(answ)o(er)f(on)h
(certain)f(negativ)o(e)-1651 57 y(n)o(um)o(b)q(ers.\))-183 108 y(Some)j
(curren)o(t)g(implemen)o(tati)o(ons)f(p)q(ermit)h(an)g(argumen)o(t)f(to)g
(b)q(e)i(mask)o(ed)f(b)o(y)g(a)g(declaration)-1652 56 y(of)k(the)g(same)f
(iden)o(ti\014er)h(in)g(the)f(outermost)g(blo)q(c)o(k)h(of)f(a)h
(function.)30 b(This)19 b(usage)g(is)f(almost)-1652 57 y(alw)o(a)o(ys)e
(an)i(erroneous)f(attempt)f(b)o(y)i(a)f(no)o(vice)g(C)g(programmer)g(to)g
(declare)g(the)h(argumen)o(t;)-1652 56 y(it)f(is)f(rarely)g(the)h(result)f
(of)g(a)h(delib)q(erate)f(attempt)g(to)g(render)i(the)f(argumen)o(t)f
(unreac)o(hable.)-1651 57 y(The)k(Committ)o(ee)e(decided,)i(therefore,)f
(that)f(argumen)o(ts)g(are)h(e\013ectiv)o(ely)f(declared)h(in)f(the)-1650 
56 y(outermost)d(blo)q(c)o(k,)f(and)h(hence)i(cannot)e(b)q(e)h(quietly)e
(redeclared)i(in)f(that)f(blo)q(c)o(k.)-1395 108 y(The)i(Committee)f
(considered)h(it)f(imp)q(ortan)o(t)g(that)g(a)h(function)g(taking)f(a)h(v)m
(ariable)f(n)o(um)o(b)q(er)-1650 57 y(of)g(argumen)o(ts,)e(suc)o(h)i(as)g 
@F8 @sf(printf)p @F14 @sf(,)e(b)q(e)j(expressible)f(p)q(ortably)f(in)g(C.)
20 b(Hence,)15 b(the)g(Committee)-1652 56 y(dev)o(oted)g(m)o(uc)o(h)f
(time)f(to)h(exploring)f(metho)q(ds)h(of)g(tra)o(v)o(ersing)e(v)m(ariable)i
(argumen)o(t)f(lists.)19 b(One)-1650 56 y(prop)q(osal)14 b(w)o(as)f(to)g
(require)h(argumen)o(ts)f(to)h(b)q(e)g(passed)g(as)g(a)g(\\bric)o(k")f
(\(i.e.,)f(a)i(con)o(tiguous)f(area)-1651 57 y(of)i(memory\),)f(the)g(la)o
(y)o(out)g(of)g(whic)o(h)h(w)o(ould)f(b)q(e)h(su\016cien)o(tly)g(w)o(ell)e
(sp)q(eci\014ed)j(that)e(a)h(p)q(ortable)-1651 56 y(metho)q(d)h(of)f(tra)o
(v)o(ersi)o(ng)f(the)h(bric)o(k)g(could)g(b)q(e)h(determined.)-968 57 y
(Sev)o(eral)25 b(div)o(erse)f(implemen)o(tations,)i(ho)o(w)o(ev)o(er,)g
(can)f(implemen)o(t)g(argumen)o(t)f(passing)-1651 57 y(more)e(e\016cien)o
(tly)g(if)g(the)h(argumen)o(ts)e(are)h(not)g(required)h(to)f(b)q(e)h(con)o
(tiguous.)41 b(Th)o(us,)23 b(the)-1650 56 y(Committee)15 b(decided)i(to)f
(hide)g(the)h(implemen)o(tati)o(on)e(details)g(of)h(determining)f(the)i
(lo)q(cation)-1652 56 y(of)12 b(successiv)o(e)g(elemen)o(ts)f(of)h(an)g
(argumen)o(t)f(list)f(b)q(ehind)j(a)f(standard)f(set)h(of)f(macros)g(\(see)h 
@F12 @sf(x)p @F14 @sf(4.8\).)-1652 124 y @F6 @sf(3.7.2)56 b(External)17 b
(ob)s(ject)h(de\014nitions)-825 87 y @F14 @sf(See)e @F12 @sf(x)q @F14 @sf
(3.1.2)o(.2.)o -244 145 a @F4 @sf(3.8)70 b(Prepro)r(cessing)24 b(directiv)n
(es)-885 102 y @F14 @sf(F)l(or)15 b(an)g(o)o(v)o(erview)f(of)h(the)g
(philosoph)o(y)g(b)q(ehind)h(the)f(prepro)q(cessor,)g(see)h @F12 @sf(x)p 
@F14 @sf(2.1.1.)o(2.)-1359 57 y(Di\013eren)o(t)c(implemen)o(tations)f(ha)o
(v)o(e)i(had)g(di\013eren)o(t)g(notions)f(ab)q(out)h(whether)g(white)g
(space)-1650 56 y(is)19 b(p)q(ermissible)f(b)q(efore)g(and/or)g(after)g
(the)h @F8 @sf(#)f @F14 @sf(signalling)f(a)h(prepro)q(cessor)h(line.)29 b
(The)19 b(Com-)-1651 57 y(mittee)f(decided)h(to)f(allo)o(w)f(an)o(y)h
(white)g(space)g(b)q(efore)h(the)f @F8 @sf(#)p @F14 @sf(,)h(and)g(horizon)o
(tal)o 17 x(white)f(space)-251 124 y @F15 @sf(RA)m(TIONALE)-1763 b
61 @eop1

62 @bop0

62 @eop0
0 0 62 @bop1 112 50 a @F14 @sf(62)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F14 @sf(\(spaces)17 b(or)g(tabs\))f(b)q(et)o(w)o
(een)i(the)f @F8 @sf(#)g @F14 @sf(and)g(the)g(directiv)o(e,)f(since)i(the)f
(white)f(space)i(in)o(tro)q(duces)-1651 57 y(no)e(am)o(biguit)o(y)l(,)e
(causes)i(no)g(particular)e(pro)q(cessing)h(problems,)h(and)f(allo)o(ws)f
(maxim)o(um)h(\015ex-)-1650 56 y(ibilit)o(y)f(in)i(co)q(ding)g(st)o(yle.)k
(Note)c(that)f(simila)o(r)f(considerations)h(apply)h(for)f(commen)o(ts,)g
(whic)o(h)-1651 56 y(are)g(reduced)i(to)d(white)h(space)g(early)g(in)g
(the)g(phases)h(of)e(translation)g(\()p @F12 @sf(x)p @F14 @sf(2.1.1)o(.2\))o
(:)-1200 101 y @F8 @sf(/*)24 b(here)f(a)h(comment)f(*/)g(#if)h(BLAH)-717 
57 y(#/*)g(there)f(a)h(comment)f(*/)g(if)h(BLAH)-717 56 y(#)g(if)g(/*)f
(every-)-239 57 y(where)g(a)h(comment)f(*/)g(BLAH)-836 99 y @F14 @sf(The)
16 b(lines)f(all)f(illustrat)o(e)g(legitimat)o(e)g(placemen)o(t)h(of)g
(commen)o(ts.)-1145 130 y @F6 @sf(3.8.1)56 b(Conditional)18 b(inclusion)
-692 89 y @F14 @sf(F)l(or)d(a)g(discussion)g(of)g(ev)m(aluation)f(of)h
(expressions)g(follo)o(w)o(ing)f @F8 @sf(#if)p @F14 @sf(,)g(see)i @F12 @sf
(x)p @F14 @sf(3.4.)-1278 58 y(The)i(op)q(erator)f @F8 @sf(defined)h @F14 @sf
(has)f(b)q(een)j(added)e(to)g(mak)o(e)f(p)q(ossible)h(writing)e(b)q(o)q
(olean)j(com-)-1651 56 y(binations)d(of)h(de\014ned)h(\015ags)e(with)g
(one)h(another)f(and)h(with)f(other)g(inclusion)h(conditions.)23 b(If)-1650 
57 y(the)16 b(iden)o(ti\014er)g @F8 @sf(defined)e @F14 @sf(w)o(ere)i(to)f
(b)q(e)h(de\014ned)h(as)e(a)h(macro,)e @F8 @sf(defined\(X\))h @F14 @sf(w)o
(ould)g(mean)g(the)-1650 56 y(macro)j(expansion)g(in)g(C)f(text)h(prop)q
(er)g(and)h(the)f(op)q(erator)f(expression)h(in)g(a)f(prepro)q(cessing)-1650 
57 y(directiv)o(e)j(\(or)f(else)g(that)g(the)h(op)q(erator)f(w)o(ould)g
(no)h(longer)f(b)q(e)i(a)o(v)m(ailable\).)o 33 x(T)l(o)e(a)o(v)o(oid)g
(this)-1651 56 y(problem,)c(suc)o(h)h(a)e(de\014nition)h(is)g(not)g(p)q
(ermitted)g(\()p @F12 @sf(x)p @F14 @sf(3.8.8\))o(.)-962 58 y @F8 @sf
(#elif)c @F14 @sf(has)g(b)q(een)i(added)f(to)f(minimize)f(the)i(stac)o
(king)e(of)h @F8 @sf(#endif)g @F14 @sf(directiv)o(es)f(in)h(m)o(ulti-w)o
(a)o(y)-1652 56 y(conditionals.)-181 58 y(Pro)q(cessing)i(of)f(skipp)q(ed)i
(material)o 12 x(is)e(de\014ned)j(suc)o(h)e(that)f(an)h(implemen)o(tatio)o
(n)f(need)i(only)-1651 57 y(examine)h(a)f(logical)e(line)i(for)g(the)h 
@F8 @sf(#)f @F14 @sf(and)g(then)h(for)f(a)g(directiv)o(e)g(name.)19 b(Th)o
(us,)14 b(assuming)g(that)-1651 56 y @F8 @sf(xxx)h @F14 @sf(is)g
(unde\014ned,)i(in)e(this)f(example:)-479 101 y @F8 @sf(#)24 b(ifndef)f
(xxx)-287 57 y(#)h(define)f(xxx)h("abc")-431 56 y(#)g(elif)f(xxx)h(>)g(0)
-239 57 y(/*)f(...)h(*/)-311 56 y(#)g(endif)-359 100 y @F14 @sf(an)13 b
(implemen)o(tation)f(is)g(not)h(required)g(to)f(diagnose)h(an)g(error)f
(for)h(the)g @F8 @sf(elif)f @F14 @sf(statemen)o(t,)g(ev)o(en)-1650 56 y
(though)k(if)e(it)h @F11 @sf(wer)n(e)g @F14 @sf(pro)q(cessed,)g(a)g(syn)o
(tactic)f(error)h(w)o(ould)f(b)q(e)i(detected.)-1206 58 y(V)l(arious)g
(prop)q(osals)g(w)o(ere)h(considered)g(for)f(p)q(ermitting)g(text)h(other)f
(than)h(commen)o(ts)f(at)-1651 56 y(the)g(end)f(of)g(directiv)o(es,)f
(particularly)f @F8 @sf(#endif)i @F14 @sf(and)g @F8 @sf(#else)p @F14 @sf
(,)f(presumably)h(to)f(lab)q(el)h(them)g(for)-1651 57 y(easier)k(matc)o(h)o
(up)g(with)f(their)g(corresp)q(onding)h @F8 @sf(#if)g @F14 @sf(directiv)o
(es.)30 b(The)19 b(Committee)f(rejected)-1650 56 y(all)k(suc)o(h)g(prop)q
(osals)f(b)q(ecause)i(of)f(the)g(di\016cult)o(y)g(of)f(sp)q(ecifying)h
(exactly)g(what)f(w)o(ould)h(b)q(e)-1650 57 y(p)q(ermitted,)15 b(and)g(ho)o
(w)g(the)g(translator)f(w)o(ould)g(ha)o(v)o(e)h(to)f(pro)q(cess)i(it.)-1120 
58 y(V)l(arious)i(prop)q(osals)f(w)o(ere)h(considered)g(for)g(p)q
(ermitting)f(additional)f(unary)j(expressions)-1651 56 y(to)14 b(b)q(e)g
(used)h(for)e(the)h(purp)q(ose)h(of)e(testing)g(for)g(the)h(system)g(t)o
(yp)q(e,)g(testing)f(for)g(the)h(presence)h(of)-1651 57 y(a)i(\014le)f(b)q
(efore)h @F8 @sf(#include)p @F14 @sf(,)f(and)g(other)g(extensions)h(to)f
(the)g(prepro)q(cessing)h(language.)23 b(These)-1650 56 y(prop)q(osals)12 b
(w)o(ere)g(all)f(rejected)i(on)f(the)h(grounds)f(of)g(insu\016cien)o(t)g
(prior)g(art)f(and/or)h(insu\016cien)o(t)-1651 57 y(utilit)o(y)l(.)-244 
124 y
62 @eop1

63 @bop0

63 @eop0
0 0 63 @bop1 112 50 a @F10 @sf(3.8.)35 b(Prepro)q(cessing)15 b(directiv)o
(es)1022 b @F14 @sf(63)-1651 145 y @F6 @sf(3.8.2)56 b(Source)18 b(\014le)g
(inclusion)-661 88 y @F14 @sf(Sp)q(eci\014cation)e(of)f(the)g @F8 @sf
(#include)f @F14 @sf(directiv)o(e)g(raises)g(distinctiv)o(e)g(grammatical)o 
14 x(problems)h(b)q(e-)-1650 57 y(cause)21 b(the)f(\014le)g(name)g(is)f
(con)o(v)o(en)o(tionally)f(parsed)j(quite)e(di\013eren)o(tly)g(than)h(an)g
(\\ordinary")-1652 56 y(tok)o(en)15 b(sequence:)-240 113 y @F12 @sf(\017)
22 b @F14 @sf(The)16 b(angle)e(brac)o(k)o(ets)h(are)g(not)f(op)q(erators,)g
(but)i(delimiters.)-1099 99 y @F12 @sf(\017)22 b @F14 @sf(The)d(double)g
(quotes)f(do)g(not)g(delimit)g(a)g(string)f(literal)g(with)h(all)f(its)h
(de\014ned)i(escap)q(e)-1536 57 y(sequences.)g(\(In)11 b(some)g(systems,)h
(bac)o(kslash)e(is)h(a)g(legitimat)o(e)f(c)o(haracter)h(in)g(a)g
(\014lename.\))-1537 56 y(The)16 b(construct)e(just)h(lo)q(oks)g(lik)o(e)f
(a)h(string)f(literal.)-926 100 y @F12 @sf(\017)22 b @F14 @sf(White)e
(space)h(or)f(c)o(haracters)g(not)h(in)f(the)h(C)f(rep)q(ertoire)h(ma)o(y)f
(b)q(e)h(p)q(ermissible)f(and)-1536 56 y(signi\014can)o(t)14 b(within)h
(either)g(or)f(b)q(oth)i(forms.)-888 113 y(These)i(p)q(oin)o(ts)e(in)h
(the)g(description)g(of)f(phases)h(of)g(translatio)o(n)f(are)h(of)f
(particular)g(relev)m(ance)-1650 56 y(to)f(the)g(parse)g(of)g(the)g @F8 @sf
(#include)f @F14 @sf(directiv)o(e:)-703 100 y @F12 @sf(\017)22 b @F14 @sf
(An)o(y)e(c)o(haracter)f(otherwise)g(unrecognized)h(during)g(tok)o
(enization)e(is)i(an)f(instance)h(of)-1537 56 y(an)i(\\in)o(v)m(alid)f
(tok)o(en.")40 b(As)23 b(with)e(v)m(alid)h(tok)o(ens,)h(the)f(sp)q(elling)g
(is)f(retained)h(so)g(that)-1537 56 y(later)14 b(phases)g(can,)h(if)e
(necessary)l(,)i(map)f(a)g(tok)o(en)g(sequence)i(\(bac)o(k\))e(in)o(to)f
(a)h(sequence)i(of)-1537 57 y(c)o(haracters.)-260 99 y @F12 @sf(\017)22 b 
@F14 @sf(Prepro)q(cessing)16 b(phases)g(m)o(ust)f(main)o(tain)f(the)i(sp)q
(elling)f(of)g(prepro)q(cessing)h(tok)o(ens;)f(the)-1536 56 y(\014lename)g
(is)e(based)i(on)f(the)g(original)f(sp)q(elling)h(of)f(the)i(tok)o(ens,)e
(not)h(on)g(an)o(y)g(in)o(terpreta-)-1537 57 y(tion)h(of)f(escap)q(e)i
(sequences.)-536 99 y @F12 @sf(\017)22 b @F14 @sf(The)14 b(\014lename)g
(on)f(the)h @F8 @sf(#include)e @F14 @sf(\(and)i @F8 @sf(#line)p @F14 @sf
(\))e(directiv)o(e,)h(if)g(it)g(do)q(es)h(not)f(b)q(egin)h(with)-1537 57 y 
@F8 @sf(")f @F14 @sf(or)f @F8 @sf(<)p @F14 @sf(,)h(is)g(macro)f(expanded)i
(prior)e(to)h(execution)g(of)f(the)i(directiv)o(e.)k(Allo)o(wing)11 b
(macros)-1537 56 y(in)j(the)f @F8 @sf(include)g @F14 @sf(directiv)o(e)g
(facilitat)o(es)f(the)i(parameterization)e(of)h(include)h(\014le)g(names,)
-1537 56 y(an)h(imp)q(ortan)o(t)f(issue)h(in)g(transp)q(ortabilit)o -1 x
(y)l(.)-877 155 y(The)20 b(\014le)g(searc)o(h)f(rules)g(used)h(for)f(the)g
(\014lename)g(in)h(the)f @F8 @sf(#include)f @F14 @sf(directiv)o(e)h(w)o
(ere)g(left)g(as)-1651 56 y(implemen)o(tation-de\014ned.)k(The)16 b
(Standard)g(in)o(tends)g(that)f(the)h(rules)g(whic)o(h)g(are)f(ev)o(en)o
(tually)-1651 57 y(pro)o(vided)g(b)o(y)g(the)g(implemen)o(tor)e(corresp)q
(ond)j(as)e(closely)g(as)h(p)q(ossible)f(to)g(the)h(original)e(K&R)-1649 
56 y(rules.)34 b(The)21 b(primary)d(reason)i(that)f(explicit)g(rules)h(w)o
(ere)g(not)f(included)i(in)f(the)g(Standard)-1651 57 y(is)h(the)h
(infeasibili)o(t)o(y)d(of)i(describing)g(a)g(p)q(ortable)g(\014le)g
(system)g(structure.)38 b(It)21 b(w)o(as)f(consid-)-1650 56 y(ered)14 b
(unacceptable)g(to)f(include)h(UNIX-lik)o(e)g(directory)e(rules)i(due)g
(to)f(signi\014can)o(t)f(di\013erences)-1650 56 y(b)q(et)o(w)o(een)k(this)f
(structure)g(and)g(other)g(p)q(opular)g(commercial)f(\014le)h(system)g
(structures.)-1439 58 y(Nested)h(include)g(\014les)g(raise)f(an)h(issue)g
(of)f(in)o(terpreting)g(the)h(\014le)g(searc)o(h)g(rules.)21 b(In)c(UNIX)
-1650 57 y(C)f(an)g(include)h(statemen)o(t)e(found)h(within)f(an)h
(include)g(\014le)g(en)o(tails)f(a)h(searc)o(h)g(for)f(the)h(named)-1650 
56 y(\014le)d(relativ)o(e)f(to)g(the)h(\014le)g(system)f @F11 @sf(dir)n(e)n
(ctory)17 b @F14 @sf(that)c(holds)f(the)h(outer)g @F8 @sf(#include)p 
@F14 @sf(.)18 b(Other)13 b(imple-)-1651 57 y(men)o(tations,)g(including)h
(the)h(earlier)e(UNIX)i(C)f(describ)q(ed)i(in)e(K&R,)h(alw)o(a)o(ys)e
(searc)o(h)h(relativ)o(e)-1652 56 y(to)h(the)g(same)g @F11 @sf(curr)n(ent)h
(dir)n(e)n(ctory)p @F14 @sf(.)j(The)d(Committee)d(decided,)j(in)f
(principle,)f(in)h(fa)o(v)o(or)f(of)g(the)-1650 57 y(K&R)i(approac)o(h,)f
(but)f(w)o(as)g(unable)h(to)g(pro)o(vide)f(explicit)g(searc)o(h)g(rules)h
(as)f(explained)h(ab)q(o)o(v)o(e.)-252 124 y @F15 @sf(RA)m(TIONALE)-1763 b
63 @eop1

64 @bop0

64 @eop0
0 0 64 @bop1 112 50 a @F14 @sf(64)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F14 @sf(The)13 b(Standard)f(sp)q(eci\014es)h(a)f
(set)h(of)e(include)i(\014le)g(names)f(whic)o(h)g(m)o(ust)g(map)g(on)o(to)f
(distinct)h(host)-1651 57 y(\014le)18 b(names.)28 b(In)18 b(the)g(absence)h
(of)e(suc)o(h)h(a)g(requiremen)o(t,)f(it)g(w)o(ould)h(b)q(e)g(imp)q
(ossible)f(to)g(write)-1651 56 y(p)q(ortable)e(programs)f(using)h(include)h
(\014les.)-746 93 y(Section)f @F12 @sf(x)p @F14 @sf(2.2.4.1)o 13 x(on)g
(translat)o(ion)e(limits)g(con)o(tains)g(the)i(required)f(n)o(um)o(b)q(er)h
(of)f(nesting)g(lev)o(els)-1651 57 y(for)20 b(include)g(\014les.)34 b(The)
20 b(limits)e(c)o(hosen)j(w)o(ere)e(in)o(tended)i(to)e(re\015ect)h
(reasonable)f(needs)i(for)-1651 56 y(users)16 b(constrained)f(b)o(y)g
(reasonable)f(system)h(resources)g(a)o(v)m(ailable)f(to)h(implemen)o
(tors.)-1513 93 y(By)g(de\014ning)f(a)g(failure)g(to)f(read)h(an)g
(include)h(\014le)f(as)g(a)g(syn)o(tax)f(error,)g(the)i(Standard)f
(requires)-1651 57 y(that)g(the)g(failure)f(b)q(e)i(diagnosed.)k(More)14 b
(than)g(one)g(prop)q(osal)f(w)o(as)g(presen)o(ted)i(for)e(some)h(form)-1651 
56 y(of)d(conditional)f(include,)i(or)e(a)h(directiv)o(e)f(suc)o(h)h(as)g 
@F8 @sf(#ifincludable)p @F14 @sf(,)o 11 x(but)g(none)g(w)o(ere)g(accepted)
-1650 57 y(b)o(y)16 b(the)f(Committee)f(due)i(to)e(lac)o(k)h(of)f(prior)h
(art.)-847 118 y @F6 @sf(3.8.3)56 b(Macro)19 b(replaceme)o(n)n(t)-644 86 y 
@F14 @sf(The)14 b(sp)q(eci\014cation)f(of)f(macro)h(de\014nition)g(and)g
(replacemen)o(t)g(in)g(the)g(Standard)g(w)o(as)f(based)h(on)-1650 57 y
(these)j(principles:)-251 77 y @F12 @sf(\017)22 b @F14 @sf(In)o(terfere)
15 b(with)g(existing)f(co)q(de)i(as)f(little)e(as)i(p)q(ossible.)-994 87 y 
@F12 @sf(\017)22 b @F14 @sf(Keep)16 b(the)g(prepro)q(cessing)f(mo)q(del)g
(simple)g(and)g(uniform.)-1056 88 y @F12 @sf(\017)22 b @F14 @sf(Allo)o(w)
14 b(macros)g(to)h(b)q(e)h(used)g(wherev)o(er)f(functions)g(can)g(b)q(e.)
-1080 87 y @F12 @sf(\017)22 b @F14 @sf(De\014ne)11 b(macro)f(expansion)g
(suc)o(h)h(that)e(it)h(pro)q(duces)h(the)g(same)f(tok)o(en)g(sequence)h
(whether)-1536 56 y(the)16 b(macro)f(calls)g(app)q(ear)h(in)f(op)q(en)i
(text,)e(in)g(macro)g(argumen)o(ts,)g(or)g(in)h(macro)f(de\014ni-)-1536 
57 y(tions.)-224 114 y(Prepro)q(cessing)j(is)f(sp)q(eci\014ed)h(in)f(suc)o
(h)h(a)f(w)o(a)o(y)g(that)f(it)h(can)h(b)q(e)g(implemen)o(ted)f(as)g(a)g
(separate)-1651 57 y(\(text-to-text\))c(pre-pass)i(or)f(as)g(a)g(\(tok)o
(en-orien)o(ted\))f(p)q(ortion)h(of)g(the)h(compiler)e(itself.)19 b(Th)o
(us,)-1651 56 y(the)d(prepro)q(cessing)f(grammar)f(is)g(sp)q(eci\014ed)j
(in)e(terms)f(of)h(tok)o(ens.)-1085 57 y(Ho)o(w)o(ev)o(er,)f(the)h
(new-line)g(c)o(haracter)g(m)o(ust)f(b)q(e)i(a)f(tok)o(en)g(during)g
(prepro)q(cessing,)f(b)q(ecause)-1649 56 y(the)d(prepro)q(cessing)f
(grammar)f(is)h(line-orien)o(ted.)17 b(The)11 b(presence)g(or)f(absence)h
(of)f(white)f(space)i(is)-1651 57 y(also)i(imp)q(ortan)o(t)f(in)h(sev)o
(eral)g(con)o(texts,)f(suc)o(h)i(as)f(b)q(et)o(w)o(een)h(the)f(macro)g
(name)g(and)h(a)f(follo)o(w)o(ing)-1652 56 y(paren)o(thesis)e(in)f(a)h 
@F8 @sf(#define)f @F14 @sf(directiv)o(e.)17 b(T)l(o)11 b(a)o(v)o(oid)e(o)o
(v)o(erly)h(constraining)g(the)g(implemen)o(tation,)-1652 56 y(the)j
(Standard)e(allo)o(ws)g(the)h(preserv)m(ation)f(of)h(eac)o(h)g(white)g
(space)g(c)o(haracter)f(\(whic)o(h)h(is)f(easy)h(for)-1651 57 y(a)17 b
(text-to-text)f(pre-pass\))h(or)f(the)h(mapping)f(of)h(white)f(space)i(in)o
(to)d(a)i(single)f(\\white)g(space")-1650 56 y(tok)o(en)f(\(whic)o(h)g(is)g
(easier)f(for)h(tok)o(en-orien)o(ted)f(translators\))o(.)-1058 94 y(The)i
(Committee)e(desired)h(to)g(disallo)n(w)f(\\p)q(ernicious)h(rede\014nitions")g
(suc)o(h)g(as)-1304 56 y(\(in)g(header1.h\))-161 78 y @F8 @sf(#define)23 b
(NBUFS)g(10)-502 77 y @F14 @sf(\(in)15 b(header2.h\))-161 78 y @F8 @sf
(#define)23 b(NBUFS)g(12)-502 77 y @F14 @sf(whic)o(h)e(are)g(clearly)f(in)o
(vitat)o(ions)f(to)i(serious)f(bugs)h(in)g(a)g(program.)36 b(There)21 b
(remained,)-1651 57 y(ho)o(w)o(ev)o(er,)14 b(the)i(question)f(of)f(\\b)q
(enign)i(rede\014nitions,")e(suc)o(h)i(as)-1218 124 y
64 @eop1

65 @bop0
@F8 @sf
[<
00700000F80000F80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E0007
07000707000707000707000F07800E03800E03800E03800E03801C01C01C01C01C01C01C01
C0FF07F8FF07F8FF07F8>
. 21 28 -1 27 24] 86 @dc
@F9 @sf
[<
03FC000FFF803E03C07C00E0780070F00070F00078F00078F000F8F001F87803F8780FF03C
3FF01FFFE007FFC007FF800FFE001FFF001FE3803FC3C03F01E03E01E03C01E03C01E01C01
E01E03C00F078007FF0001FC00>
. 21 29 -2 28 26] 56 @dc

65 @eop0

0 0 65 @bop1 112 50 a @F10 @sf(3.8.)35 b(Prepro)q(cessing)15 b(directiv)o
(es)1022 b @F14 @sf(65)-1580 145 y(\(in)15 b(header1.h\))-161 92 y @F8 @sf
(#define)23 b(NULL_DEV)g(0)-550 93 y @F14 @sf(\(in)15 b(header2.h\))-161 
92 y @F8 @sf(#define)23 b(NULL_DEV)g(0)-550 92 y @F14 @sf(The)c(Committ)o
(ee)e(concluded)i(that)f(safe)g(programming)e(practice)i(is)g(b)q(etter)g
(serv)o(ed)g(b)o(y)-1650 57 y(allo)o(wing)e(b)q(enign)i(rede\014nition)f
(where)h(the)g(de\014nitions)f(are)h(the)f(same.)27 b(This)17 b(allo)o(ws)f
(inde-)-1650 56 y(p)q(enden)q -1 x(t)g(headers)g(to)f(sp)q(ecify)h(their)f
(understanding)h(of)f(the)h(prop)q(er)g(v)m(alue)g(for)f(a)g(sym)o(b)q(ol)g
(of)-1651 57 y(in)o(terest)g(to)f(eac)o(h,)h(with)g(diagnostics)f
(generated)h(only)f(if)h(the)g(de\014nitions)g(di\013er.)-1362 56 y(The)f
(de\014nitions)f(are)h(considered)g(\\the)f(same")g(if)h(the)f(iden)o
(ti\014er-lists,)f(tok)o(en)i(sequences,)-1650 57 y(and)22 b(o)q
(ccurrences)g(of)f(white-space)g(\(ignoring)e(the)i(sp)q(elling)g(of)g
(white-space\))g(in)g(the)g(t)o(w)o(o)-1652 56 y(de\014nitions)15 b(are)g
(iden)o(tical.)-478 105 y(Existing)j(implemen)o(tations)f(ha)o(v)o(e)i
(di\013ered)g(on)g(whether)g(k)o(eyw)o(ords)f(can)h(b)q(e)h(rede\014ned)g
(b)o(y)-1650 57 y(macro)g(de\014nitions.)37 b(The)21 b(Committ)o(ee)f(has)h
(decided)g(to)f(allo)o(w)f(this)h(usage;)j(it)d(sees)h(suc)o(h)-1650 56 y
(rede\014nition)f(as)g(useful)h(during)f(the)g(transitio)o(n)f(from)h
(existing)f(to)g(Standard-conforming)-1651 57 y(translators.)o -156 56 a
(These)d(de\014nitions)f(illustra)o(te)f(p)q(ossible)h(uses:)-689 92 y 
@F8 @sf(#)24 b(define)f(char)71 b(signed)23 b(char)-645 57 y(#)h(define)f
(sizeof)g(\(int\))g(sizeof)-669 56 y(#)h(define)f(const)-526 93 y @F14 @sf
(The)13 b(\014rst)e(case)h(migh)o(t)e(b)q(e)j(useful)f(in)f(mo)o(ving)g
(extan)o(t)g(co)q(de)h(from)f(a)h(signed-c)o(har)f(implemen)o(ta-)-1651 
56 y(tion)j(to)f(one)i(in)f(whic)o(h)g @F8 @sf(char)f @F14 @sf(is)h
(unsigned.)20 b(The)14 b(second)h(case)f(migh)o(t)f(b)q(e)i(useful)f(in)g
(adapting)-1651 56 y(co)q(de)i(whic)o(h)f(assumes)f(that)h @F8 @sf(sizeof)f 
@F14 @sf(results)g(in)h(an)f @F8 @sf(int)h @F14 @sf(v)m(alue.)20 b(The)15 b
(rede\014nition)g(of)f @F8 @sf(const)-1651 57 y @F14 @sf(could)i(b)q(e)g
(useful)f(in)g(retro\014tting)e(more)i(mo)q(dern)h(C)f(co)q(de)h(to)e(an)h
(older)g(implemen)o(tation.)o -1516 56 a(As)g(with)g(an)o(y)g(other)g(p)q
(o)o(w)o(erful)f(language)h(feature,)f(k)o(eyw)o(ord)h(rede\014nition)g
(is)g(sub)s(ject)g(to)-1651 57 y(abuse.)33 b(Users)19 b(cannot)f(exp)q
(ect)i(an)o(y)f(meaningful)g(b)q(eha)o(vior)f(to)h(come)g(ab)q(out)g(from)f
(source)-1650 56 y(\014les)e(starting)d(with)-159 93 y @F8 @sf(#define)23 b
(int)h(double)-431 56 y(#include)f(<stdio.h>)-622 92 y @F14 @sf(or)15 b
(similar)f(sub)o(v)o(ersions)g(of)h(common)g(sense.)-793 120 y @F9 @sf
(3.8.3.1)52 b(Argumen)o(t)16 b(substitution)-724 86 y(3.8.3.2)52 b(The)18 b 
@F8 @sf(#)f @F9 @sf(op)q(erator)-544 86 y @F14 @sf(Some)f(implemen)o
(tations)e(ha)o(v)o(e)h(decided)i(to)e(replace)g(iden)o(ti\014ers)h(found)g
(within)e(a)i(string)e(lit-)-1651 56 y(eral)h(if)g(they)g(matc)o(h)g(a)f
(macro)h(argumen)o(t)f(name.)20 b(The)c(replacemen)o(t)e(text)h(is)g(a)g
(\\stringized")-1652 57 y(form)h(of)g(the)g(actual)g(argumen)o(t)f(tok)o
(en)h(sequence.)24 b(This)16 b(practice)g(app)q(ears)g(to)g(b)q(e)h(con)o
(trary)-1652 56 y(to)e(the)g(de\014nition,)g(in)g(K&R,)h(of)f(prepro)q
(cessing)h(in)f(terms)f(of)h(tok)o(en)g(sequences.)21 b(The)16 b(Com-)-1651 
57 y(mittee)k(declined)h(to)f(elab)q(orate)f(the)h(syn)o(tax)g(of)g
(string)f(literals)g(to)g(the)i(p)q(oin)o(t)e(where)i(this)-252 124 y 
@F15 @sf(RA)m(TIONALE)-1763 b
65 @eop1

66 @bop0

66 @eop0
0 0 66 @bop1 112 50 a @F14 @sf(66)1114 b @F10 @sf(Section)15 b(3.)30 b
(LANGUA)o(GE)-1651 145 y @F14 @sf(practice)14 b(could)f(b)q(e)h(condoned.)
20 b(Ho)o(w)o(ev)o(er,)13 b(since)g(the)h(facilit)n(y)e(pro)o(vided)i(b)o
(y)f(this)g(mec)o(hanism)-1651 57 y(seems)i(to)f(b)q(e)h(widely)e(used,)i
(the)f(Committee)f(in)o(tro)q(duced)i(a)f(more)g(tractable)f(mec)o(hanism)h
(of)-1651 56 y(comparable)h(p)q(o)o(w)o(er.)-303 57 y(The)k @F8 @sf(#)f 
@F14 @sf(op)q(erator)f(has)h(b)q(een)i(in)o(tro)q(duced)e(for)g
(stringizing.)o 28 x(It)g(ma)o(y)g(only)g(b)q(e)h(used)g(in)f(a)-1651 56 y 
@F8 @sf(#define)e @F14 @sf(expansion.)24 b(It)16 b(causes)h(the)g(formal)e
(parameter)g(name)i(follo)o(wi)o(ng)e(to)h(b)q(e)h(replaced)-1650 57 y(b)o
(y)j(a)f(string)g(literal)o 18 x(formed)h(b)o(y)f(stringizing)f(the)h
(actual)g(argumen)o(t)g(tok)o(en)g(sequence.)34 b(In)-1650 56 y
(conjunction)11 b(with)e(string)g(literal)g(concatenation)g(\(see)h @F12 @sf
(x)q @F14 @sf(3.1.4\))o(,)g(use)g(of)g(this)f(op)q(erator)h(p)q(ermits)-1651 
57 y(the)k(construction)e(of)h(strings)f(as)g(e\013ectiv)o(ely)g(as)h(b)o
(y)g(iden)o(ti\014er)g(replacemen)o(t)g(within)f(a)h(string.)-1652 56 y
(An)j(example)f(in)g(the)g(Standard)g(illustrates)f(this)g(feature.)-960 
57 y(One)21 b(problem)f(with)g(de\014ning)h(the)g(e\013ect)f(of)g
(stringizing)f(is)h(the)h(treatmen)o(t)e(of)h(white)-1651 57 y(space)13 b
(o)q(ccurring)e(in)h(macro)f(de\014nitions.)18 b(Where)12 b(this)g(could)f
(b)q(e)i(discarded)f(in)f(the)h(past,)g(no)o(w)-1651 56 y(up)o(w)o(ards)f
(of)g(one)g(logical)o 10 x(line)g(w)o(orth)f(\(o)o(v)o(er)f(500)i(c)o
(haracters\))f(ma)o(y)g(ha)o(v)o(e)g(to)h(b)q(e)h(retained.)18 b(As)11 b
(a)-1651 56 y(compromise)i(b)q(et)o(w)o(een)g(tok)o(en-based)g(and)g(c)o
(haracter-based)g(prepro)q(cessing)g(disciplines,)f(the)-1650 57 y
(Committee)j(decided)h(to)f(p)q(ermit)g(white)g(space)g(to)g(b)q(e)h
(retained)f(as)g(one)h(bit)f(of)g(informati)o(on:)-1652 56 y(none)g(or)f
(one.)19 b(Arbitrary)13 b(white)h(space)g(is)g(replaced)g(in)g(the)g
(string)f(b)o(y)h(one)g(space)h(c)o(haracter.)-1581 57 y(The)g(remaining)f
(problem)h(with)f(stringizing)f(w)o(as)h(to)h(asso)q(ciate)f(a)g(\\sp)q
(elling")g(with)g(eac)o(h)-1650 57 y(tok)o(en.)19 b(\(The)14 b(problem)f
(arises)f(in)h(tok)o(en-based)h(prepro)q(cessors,)f(whic)o(h)g(migh)o(t,)f
(for)h(instance,)-1651 56 y(con)o(v)o(ert)e(a)h(n)o(umeric)f(literal)f(to)h
(a)g(canonical)g(or)g(in)o(ternal)f(represen)o(tation,)h(losing)f
(information)-1652 57 y(ab)q(out)18 b(base,)f(leading)g(0's,)g(etc.\))26 b
(In)18 b(the)f(in)o(terest)f(of)h(simplicit)o(y)l(,)f(the)h(Committee)f
(decided)-1649 56 y(that)k(eac)o(h)g(tok)o(en)g(should)h(expand)f(to)g
(just)g(those)g(c)o(haracters)g(used)g(to)g(sp)q(ecify)h(it)e(in)h(the)-1650 
57 y(original)14 b(source)h(text.)263 108 y @F7 @sf(QUIET)g(CHANGE)-876 
76 y @F14 @sf(A)21 b(macro)e(that)h(relies)g(on)g(formal)f(parameter)h
(substitution)f(within)h(a)g(string)-1424 57 y(literal)14 b(will)f(pro)q
(duce)k(di\013eren)o(t)d(results.)-827 123 y @F9 @sf(3.8.3.3)52 b(The)18 b 
@F8 @sf(##)f @F9 @sf(op)q(erator)-568 86 y @F14 @sf(Another)12 b(facilit)o
(y)e(relied)h(on)g(in)h(m)o(uc)o(h)f(curren)o(t)h(practice)f(but)h(not)f
(sp)q(eci\014ed)i(in)e(the)h(Base)f(Do)q(c-)-1650 57 y(umen)o(t)j(is)f
(\\tok)o(en)g(pasting,")g(or)g(building)g(a)g(new)h(tok)o(en)g(b)o(y)f
(macro)g(argumen)o(t)g(substitution.)-1652 56 y(One)22 b(existing)e
(implemen)o(tatio)o(n)g(is)g(to)g(replace)h(a)f(commen)o(t)g(within)g(a)h
(macro)f(expansion)-1651 57 y(b)o(y)d(zero)g(c)o(haracters,)f(instead)h
(of)f(the)h(single)f(space)h(called)g(for)f(in)h(K&R.)26 b(The)17 b
(Committee)-1652 56 y(considered)f(this)f(practice)g(unacceptable.)-683 
57 y(As)i(with)f(\\stringizing,)o(")g(the)h(facilit)o -1 x(y)e(w)o(as)h
(considered)i(desirable,)e(but)h(not)f(the)h(extan)o(t)-1651 57 y
(implemen)o(tation)h(of)i(this)f(facilit)n(y)l(,)g(so)h(the)f(Committee)g
(in)o(v)o(en)o(ted)g(another)g(prepro)q(cessing)-1650 56 y(op)q(erator.)
28 b(The)19 b @F8 @sf(##)e @F14 @sf(op)q(erator)h(within)f(a)h(macro)f
(expansion)h(causes)g(concatenation)g(of)f(the)-1650 56 y(tok)o(ens)j(on)f
(either)h(side)f(of)g(it)g(in)o(to)g(a)g(new)h(comp)q(osite)f(tok)o(en.)
33 b(The)20 b(sp)q(eci\014cation)g(of)f(this)-1651 57 y(pasting)c(op)q
(erator)f(is)h(based)g(on)h(these)f(principles:)-829 96 y @F12 @sf(\017)
22 b @F14 @sf(P)o(aste)14 b(op)q(erations)h(are)g(explicit)f(in)h(the)g
(source.)-894 95 y @F12 @sf(\017)22 b @F14 @sf(The)16 b @F8 @sf(##)e 
@F14 @sf(op)q(erator)h(is)f(asso)q(ciativ)o(e.)-656 96 y @F12 @sf(\017)22 b 
@F14 @sf(A)12 b(formal)f(parameter)g(as)h(an)g(op)q(erand)g(for)f @F8 @sf
(##)h @F14 @sf(is)g(not)f(expanded)i(b)q(efore)g(pasting.)18 b(\(The)-1537 
57 y(actual)c(is)h(substituted)g(for)g(the)g(formal,)e(but)j(the)f(actual)f
(is)h(not)g(expanded:)-1574 124 y
66 @eop1

67 @bop0
@F8 @sf
[<
07C0001FF0003FFC00783E00780F007807803003800001C00001C00001C00000E003F0E00F
FEE01FFFE03C0FE07803E07001E0E001E0E001E0E001C0E001C0E001C07003807807803C0F
001FFE000FFC0003F000>
. 19 28 -2 27 24] 57 @dc

67 @eop0

0 0 67 @bop1 112 50 a @F10 @sf(3.8.)35 b(Prepro)q(cessing)15 b(directiv)o
(es)1022 b @F14 @sf(67)-1346 145 y @F8 @sf(#define)23 b(a\(n\))g(aaa)h(##)f
(n)-501 57 y(#define)g(b)95 b(2)-525 101 y @F14 @sf(Giv)o(en)15 b(these)g
(de\014nitions,)g(the)g(expansion)g(of)g @F8 @sf(a\(b\))f @F14 @sf(is)h 
@F8 @sf(aaab)p @F14 @sf(,)f(not)h @F8 @sf(aaa2)g @F14 @sf(or)g @F8 @sf
(aaan)p @F14 @sf(.\))-1521 91 y @F12 @sf(\017)22 b @F14 @sf(A)15 b(normal)g
(op)q(erand)g(for)g @F8 @sf(##)g @F14 @sf(is)f(not)h(expanded)h(b)q(efore)g
(pasting.)-1181 90 y @F12 @sf(\017)22 b @F14 @sf(P)o(asting)14 b(do)q(es)h
(not)g(cross)g(macro)f(replacemen)o(t)h(b)q(oundaries.)-1123 90 y @F12 @sf
(\017)22 b @F14 @sf(The)14 b(tok)o(en)f(resulting)g(from)g(a)h(paste)f(op)q
(eration)g(is)g(sub)s(ject)h(to)f(further)h(macro)f(expan-)-1536 56 y
(sion.)-206 85 y(These)19 b(principles)f(co)q(dify)g(the)g(essen)o(tial)f
(features)g(of)h(prior)f(art,)h(and)g(are)g(consisten)o(t)f(with)-1651 57 y
(the)f(sp)q(eci\014cation)f(of)g(the)g(stringizing)f(op)q(erator.)-873 118 y 
@F9 @sf(3.8.3.4)52 b(Rescanning)17 b(and)h(further)f(replacemen)o(t)-1036 
86 y @F14 @sf(A)g(problem)g(faced)g(b)o(y)f(most)g(curren)o(t)h(prepro)q
(cessors)f(is)g(ho)o(w)h(to)f(use)h(a)f(macro)g(name)h(in)f(its)-1651 56 y
(expansion)k(without)f(su\013ering)g(\\recursiv)o(e)g(death.")33 b(The)19 b
(Committee)g(agreed)g(simply)g(to)-1651 57 y(turn)e(o\013)f(the)g
(de\014nition)h(of)f(a)g(macro)g(for)g(the)g(duration)g(of)g(the)h
(expansion)g(of)f(that)f(macro.)-1651 56 y(An)h(example)f(of)g(this)f
(feature)h(is)g(included)h(in)f(the)g(Standard.)-1029 57 y(The)g
(rescanning)h(rules)f(incorp)q(orate)f(an)h(am)o(biguit)o(y)l(.)j(Giv)o
(en)d(the)g(de\014nitions)-1254 85 y @F8 @sf(#define)47 b(f\(a\))g(a*g)-430 
56 y(#define)g(g)119 b(f)-573 85 y @F14 @sf(it)13 b(is)g(clear)g(\(or)f
(at)h(least)f(unam)o(biguous\))g(that)h(the)g(expansion)g(of)g @F8 @sf
(f\(2\)\(9\))g @F14 @sf(is)f @F8 @sf(2*f\(9\))h @F14 @sf(|)g(the)-1650 56 y 
@F8 @sf(f)k @F14 @sf(in)g(the)g(result)g(clearly)f(w)o(as)g(in)o(tro)q
(duced)h(during)g(the)g(expansion)g(of)f(the)h(original)e @F8 @sf(f)p 
@F14 @sf(,)i(so)g(is)-1651 57 y(not)e(further)g(expanded.)-363 56 y(Ho)o
(w)o(ev)o(er,)f(giv)o(en)h(the)g(de\014nitions)-478 85 y @F8 @sf(#define)
23 b(f\(a\))47 b(a*g)-406 57 y(#define)23 b(g\(a\))47 b(f\(a\))-621 85 y 
@F14 @sf(the)18 b(expansion)g(rules)g(allo)o(w)o 17 x(the)f(result)h(to)f
(b)q(e)h(either)g @F8 @sf(2*f\(9\))f @F14 @sf(or)g @F8 @sf(2*9*g)g @F14 @sf
(|)h(it)f(is)g(unclear)-1650 56 y(whether)j(the)g @F8 @sf(f\(9\))f @F14 @sf
(tok)o(en)g(string)g(\(resulting)g(from)f(the)i(initial)e(expansion)i(of)f 
@F8 @sf(f)g @F14 @sf(and)h(the)-1650 57 y(examination)f(of)g(the)h(rest)g
(of)f(the)h(source)g(\014le\))f(should)h(b)q(e)g(considered)h(as)e(nested)h
(within)-1651 56 y(the)c(expansion)g(of)g @F8 @sf(f)f @F14 @sf(or)h(not.)
21 b(The)16 b(Committee)f(in)o(ten)o(tional)o(ly)f(left)h(this)h(b)q(eha)o
(vior)f(am)o(bigu-)-1651 56 y(ous:)23 b(it)16 b(sa)o(w)g(no)g(useful)h
(purp)q(ose)g(in)f(sp)q(ecifying)h(all)e(the)i(quirks)f(of)g(prepro)q
(cessing)h(for)f(suc)o(h)-1650 57 y(questionably)f(useful)g(constructs.)
-612 118 y @F9 @sf(3.8.3.5)52 b(Scop)q(e)18 b(of)g(macro)f(de\014nitions)
-805 86 y @F14 @sf(Some)d(pre-Standard)f(implemen)o(tations)f(main)o(tai)o
(n)g(a)h(stac)o(k)g(of)g @F8 @sf(#define)f @F14 @sf(instances)h(for)f(eac)o
(h)-1650 57 y(iden)o(ti\014er;)20 b @F8 @sf(#undef)e @F14 @sf(simply)g(p)q
(ops)h(the)g(stac)o(k.)29 b(The)19 b(Committee)f(agreed)g(that)g(more)h
(than)-1651 56 y(one)d(lev)o(el)e(of)h @F8 @sf(#define)f @F14 @sf(w)o(as)h
(more)f(prone)i(to)e(error)h(than)g(utilit)o(y)l(.)o -1153 99 a(It)k(is)f
(explicitly)f(p)q(ermitted)i(to)f @F8 @sf(#undef)f @F14 @sf(a)h(macro)g
(that)g(has)g(no)h(curren)o(t)f(de\014nition.)30 b(This)-1651 57 y
(capabilit)o(y)14 b(is)h(exploited)f(in)i(conjunction)f(with)f(the)i
(standard)e(library)g(\(see)h @F12 @sf(x)q @F14 @sf(4.1.3\))o(.)-108 124 y 
@F15 @sf(RA)m(TIONALE)-1763 b
67 @eop1

68 @bop0

68 @eop0
0 0 68 @bop1 112 50 a @F14 @sf(68)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F6 @sf(3.8.4)56 b(Line)17 b(con)n(trol)-467 101 y 
@F14 @sf(Aside)h(from)e(giving)g(v)m(alues)h(to)i 14 -2 z 18 x 14 -2 z 14 x 
@F8 @sf(LINE)s 14 -2 z 16 x 14 -2 z 32 x @F14 @sf(and)h 14 -2 z 17 x 14 
-2 z 14 x @F8 @sf(FILE)s 14 -2 z 17 x 14 -2 z 31 x @F14 @sf(\(see)d @F12 @sf
(x)p @F14 @sf(3.8.8\),)f(the)h(e\013ect)g(of)f @F8 @sf(#line)-1651 56 y 
@F14 @sf(is)h(unsp)q(eci\014ed.)26 b(A)17 b(go)q(o)q(d)g(implemen)o(tatio)o
(n)f(will)g(presumably)g(pro)o(vide)h(line)f(and)h(\014le)g(infor-)-1651 
57 y(mation)e(in)g(conjunction)g(with)f(most)h(diagnostics.)o -900 166 a 
@F6 @sf(3.8.5)56 b(Error)18 b(directiv)o -2 x(e)-536 101 y @F14 @sf(The)k
(directiv)o(e)f @F8 @sf(#error)g @F14 @sf(has)g(b)q(een)h(in)o(tro)q
(duced)g(to)f(pro)o(vide)g(an)g(explicit)g(mec)o(hanism)g(for)-1651 56 y
(forcing)e(translatio)o(n)g(to)g(fail)f(under)i(certain)f(conditions.)32 b
(\(F)l(ormally)18 b(the)h(Standard)h(only)-1651 57 y(requires,)15 b @F11 @sf
(c)n(an)g @F14 @sf(only)g(require,)f(that)h(a)g(diagnostic)f(b)q(e)i
(issued)f(when)h(the)f @F8 @sf(#error)f @F14 @sf(directiv)o(e)h(is)-1651 
56 y(e\013ected.)27 b(It)17 b(is)g(the)g(in)o(ten)o(t)f(of)h(the)g
(Committee,)f(ho)o(w)o(ev)o(er,)h(that)f(translatio)o(n)g(cease)i(imme-)
-1651 57 y(diately)g(up)q(on)i(encoun)o(tering)e(this)h(directiv)o(e,)f
(if)g(this)h(is)f(feasible)g(in)h(the)f(implemen)o(tation;)-1652 56 y
(further)e(diagnostics)f(on)h(text)g(b)q(ey)o(ond)g(the)g(directiv)o(e)g
(are)g(apt)f(to)h(b)q(e)g(of)g(little)e(v)m(alue.\))23 b(T)l(ra-)-1651 56 y
(ditionally)15 b(suc)o(h)h(failure)f(has)h(had)h(to)e(b)q(e)i(forced)f(b)o
(y)g(inserting)g(text)f(so)h(ill-formed)f(that)g(the)-1650 57 y
(translator)f(gagged)g(on)h(it.)-469 166 y @F6 @sf(3.8.6)56 b(Pragma)19 b
(directiv)o -2 x(e)-593 101 y @F14 @sf(The)g @F8 @sf(#pragma)e @F14 @sf
(directiv)o(e)g(has)h(b)q(een)h(added)g(as)f(the)g(univ)o(ersal)f(metho)q
(d)i(for)e(extending)h(the)-1650 56 y(space)e(of)f(directiv)o(es.)-375 166 y 
@F6 @sf(3.8.7)56 b(Null)17 b(directiv)n(e)-509 101 y @F14 @sf(The)12 b
(existing)f(practice)g(of)g(using)g(empt)o(y)g @F8 @sf(#)g @F14 @sf(lines)g
(for)g(spacing)g(is)g(supp)q(orted)h(in)f(the)h(Standard.)-1651 166 y 
@F6 @sf(3.8.8)56 b(Prede\014ned)18 b(macro)g(names)-774 101 y @F14 @sf
(The)c(rule)g(that)f(these)h(macros)e(ma)o(y)h(not)g(b)q(e)i(rede\014ned)g
(or)e(unde\014ned)i(reduces)g(the)e(complex-)-1650 56 y(it)o(y)k(of)g(the)h
(name)f(space)h(that)f(the)g(programmer)f(and)i(implemen)o(tor)e(m)o(ust)h
(understand;)i(it)-1651 57 y(recognizes)d(that)e(these)h(macros)g(ha)o(v)o
(e)g(sp)q(ecial)g(built-in)f(prop)q(erties.)-1140 64 y(The)e(macros)i 14 
-2 z 18 x 14 -2 z 14 x @F8 @sf(DATE)s 14 -2 z 16 x 14 -2 z 27 x @F14 @sf
(and)h 14 -2 z 17 x 14 -2 z 14 x @F8 @sf(TIME)s 14 -2 z 17 x 14 -2 z 26 x 
@F14 @sf(ha)o(v)o(e)d(b)q(een)h(added)g(to)e(mak)o(e)h(a)o(v)m(ailable)e
(the)i(time)g(of)-1651 56 y(translation.)17 b(A)12 b(particular)e(format)g
(for)g(the)i(expansion)f(of)g(these)h(macros)e(has)i(b)q(een)g(sp)q
(eci\014ed)-1649 57 y(to)j(aid)g(in)g(parsing)f(strings)g(initialized)g(b)o
(y)h(them.)-807 64 y(The)g(macros)i 14 -2 z 17 x 14 -2 z 14 x @F8 @sf
(LINE)s 14 -2 z 17 x 14 -2 z 29 x @F14 @sf(and)g 14 -2 z 18 x 14 -2 z 14 x 
@F8 @sf(FILE)s 14 -2 z 16 x 14 -2 z 29 x @F14 @sf(ha)o(v)o(e)e(b)q(een)h
(added)f(to)f(giv)o(e)g(programmers)f(access)-1650 57 y(to)i(the)g(source)h
(line)e(n)o(um)o(b)q(er)i(and)f(\014le)h(name.)-735 64 y(The)e(macro)j 14 
-2 z 17 x 14 -2 z 14 x @F8 @sf(STDC)s 14 -2 z 17 x 14 -2 z 28 x @F14 @sf
(allo)o(ws)12 b(for)i(conditional)f(translati)o(on)g(on)h(whether)g(the)h
(translat)o(or)-1652 56 y(claims)e(to)g(b)q(e)i(standard-conforming)d(or)h
(not.)19 b(It)14 b(is)f(de\014ned)i(as)e(ha)o(ving)g(v)m(alue)h(1;)g
(future)g(v)o(er-)-1651 57 y(sions)g(of)f(the)h(Standard)g(could)g(de\014ne)h
(it)e(as)h(2,)f(3,)g(...,)g(to)g(allo)o(w)f(for)i(conditional)e
(compilation)-1652 56 y(on)18 b(whic)o(h)f(v)o(ersion)f(of)h(the)g
(Standard)g(a)g(translato)o(r)f(conforms)g(to.)25 b(This)17 b(macro)g
(should)g(b)q(e)-1650 57 y(of)e(use)h(in)f(the)g(transition)f(to)o(w)o(a)o
(rd)g(conformance)h(to)g(the)g(Standard.)-1326 124 y
68 @eop1

69 @bop0
@F10 @sf
[<
3F000041C000806000E03000F01800F01C00600E00000E0000070000078000078003E3800C
13C01C0BC03807C03803C07803E07803E07801E07801E07801E07801E03C01E03C00E03C00
E01C00C00E01C00601C003018001C300007E00>
. 19 31 -4 29 23] 57 @dc
[<
FFFE000007C000000780000003C0000003C0000003C0000003C0000003C0000003C0000001
E0000001E0200001E0200001E0200001E0200001E0600000FFF00000F0700000F0300000F0
100000F0100000F01000007800080078000800780008007800080078000800780018003C00
18003C0038007C007807FFFFF8>
. 29 31 -2 30 30] 70 @dc
@F4 @sf
[<
01FE000007FF80000FFFE0001E03F0001F01F8003F807C003F807E003F803F003F803F001F
003F8000003F8000001FC000001FC000001FC000001FE0007E1FE003FF9FE007C1DFE00F80
7FE01F807FE03F003FE07F003FE07F001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
C0FF001FC0FF001FC0FF001F807F001F807F003F003F803F001F807E000FE0FC0007FFF800
01FFF000007F8000>
. 27 39 -3 38 34] 57 @dc

69 @eop0

0 0 69 @bop1 112 50 a @F10 @sf(3.9.)35 b(F)l(uture)15 b(language)f
(directions)969 b @F14 @sf(69)-1651 145 y @F4 @sf(3.9)70 b(F)-6 b(uture)
23 b(langua)q(ge)h(directions)-959 103 y @F14 @sf(This)c(section)g
(includes)h(sp)q(eci\014c)g(men)o(tion)f(of)g(the)g(future)g(direction)g
(in)g(whic)o(h)g(the)h(Com-)-1651 56 y(mittee)15 b(in)o(tends)g(to)g
(extend)h(and/or)f(restrict)f(the)i(language.)k(The)15 b(con)o(ten)o(ts)g
(of)g(this)g(section)-1651 57 y(should)e(b)q(e)g(considered)f(as)g(quite)g
(lik)o(ely)f(to)h(b)q(ecome)h(a)f(part)f(of)h(the)g(next)h(v)o(ersion)e
(of)h(the)g(Stan-)-1650 56 y(dard.)27 b(Implemen)o(tors)17 b(are)g
(advised)g(that)g(failure)f(to)h(tak)o(e)f(heed)j(of)d(the)i(p)q(oin)o(ts)f
(men)o(tioned)-1651 57 y(herein)f(is)e(considered)i(undesirable)f(for)f(a)h
(conforming)f(hosted)h(or)f(freestanding)g(implemen-)-1650 56 y(tation.)
19 b(Users)13 b(are)h(advised)g(that)f(failure)g(to)g(tak)o(e)g(heed)i(of)f
(the)g(p)q(oin)o(ts)f(men)o(tioned)h(herein)g(is)-1651 57 y(considered)i
(undesirable)f(for)g(a)g(conforming)f(program.)-988 126 y @F6 @sf(3.9.1)
56 b(External)17 b(names)-554 89 y(3.9.2)56 b(Character)19 b(escap)r(e)e
(sequences)-850 88 y(3.9.3)56 b(Storage-class)18 b(sp)r(eci\014ers)-730 
88 y @F14 @sf(See)e @F12 @sf(x)q @F14 @sf(3.5.1)o(.)-209 126 y @F6 @sf
(3.9.4)56 b(F)-5 b(unction)19 b(declarators)-675 87 y @F14 @sf(The)12 b(c)o
(haracterizati)o(on)e(as)h(obsolescen)o(t)f(of)h(the)g(use)g(of)g(the)g
(\\old)f(st)o(yle")g(function)h(declarations)-1652 56 y(and)17 b
(de\014nitions)g(|)f(that)g(is,)g(the)h(traditional)o 15 x(st)o(yle)f(not)g
(using)g(protot)o(yp)q(es)g(|)h(signals)e(the)-1650 57 y(Committee's)g(in)o
(ten)o(t)h(that)f(the)i(new)g(protot)o(yp)q(e)e(st)o(yle)h(should)g(ev)o
(en)o(tually)g(replace)g(the)h(old)-1651 56 y(st)o(yle.)-34 57 y(The)g
(case)g(for)f(the)h(protot)o(yp)q(e)g(st)o(yle)f(is)g(presen)o(ted)i(in)e 
@F12 @sf(x)q @F14 @sf(3.3.2)o(.2)f(and)i @F12 @sf(x)q @F14 @sf(3.5.4)o
(.3.)o 24 x(The)g(gist)-1651 57 y(of)g(this)g(case)g(is)f(that)h(the)g
(new)g(syn)o(tax)g(addresses)g(some)g(of)g(the)g(most)f(glaring)g(w)o
(eaknesses)-1651 56 y(of)e(the)h(language)e(de\014ned)j(in)e(the)g(Base)g
(Do)q(cumen)o(t,)g(that)g(the)g(new)h(st)o(yle)e(is)h(sup)q(erior)g(to)f
(the)-1650 57 y(old)i(st)o(yle)g(on)g(ev)o(ery)g(coun)o(t.)-418 57 y(It)f
(w)o(as)g(ob)o(viously)f(out)g(of)h(the)h(question)e(to)h(remo)o(v)o(e)f
(syn)o(tax)h(used)h(in)f(the)g(o)o(v)o(erwhelming)-1652 57 y(ma)s(jorit)o
(y)i(of)h(extan)o(t)f(C)i(co)q(de,)g(so)f(the)h(Standard)f(sp)q(eci\014es)i
(t)o(w)o(o)d(w)o(a)o(ys)g(of)i(writing)e(function)-1651 56 y(declarations)f
(and)g(function)h(de\014nitions.)k(Characterizing)15 b(the)g(old)g(st)o
(yle)g(as)g(obsolescen)o(t)g(is)-1651 56 y(mean)o(t)d(to)g(discourage)g
(its)g(use,)h(and)g(to)f(serv)o(e)g(as)g(a)g(strong)g(endorsemen)o(t)h(b)o
(y)f(the)h(Committee)-1652 57 y(of)g(the)g(new)h(st)o(yle.)k(It)13 b
(con\014den)o(tly)h(exp)q(ects)g(that)e(appro)o(v)m(al)g(and)i(adoption)e
(of)h(the)g(protot)o(yp)q(e)-1651 56 y(st)o(yle)f(will)f(mak)o(e)g(it)h
(feasible)f(for)h(some)g(future)g(C)g(Standard)g(to)g(remo)o(v)o(e)f(the)h
(old)g(st)o(yle)g(syn)o(tax.)-1652 126 y @F6 @sf(3.9.5)56 b(F)-5 b
(unction)19 b(de\014nitions)-659 88 y @F14 @sf(See)d @F12 @sf(x)q @F14 @sf
(3.9.4)o(.)-209 125 y @F6 @sf(3.9.6)56 b(Arra)n(y)19 b(parameters)-608 88 y 
@F14 @sf(As)14 b(v)o(ector)g(and)g(parallel)e(hardw)o(are,)h(and)h(n)o
(umeric)g(applications)e(in)i(C,)f(b)q(ecome)i(more)f(com-)-1651 56 y
(mon,)g(the)g(aliasing)e(seman)o(tics)h(of)h(C)f(ha)o(v)o(e)h(b)q(een)h(a)f
(source)g(of)f(frustration)f(for)i(implemen)o(tors)-1652 57 y(w)o(an)o
(ting)e(to)g(mak)o(e)g(optim)o(um)g(use)h(of)f(suc)o(h)i(hardw)o(are.)k
(If)13 b(arra)o(ys)e(are)i(kno)o(wn)f(not)h(to)f(o)o(v)o(erlap,)-1652 56 y
(certain)17 b(optimizati)o(ons)e(b)q(ecome)j(p)q(ossible,)e(but)h(C)f
(curren)o(tly)h(pro)o(vides)f(no)g(w)o(a)o(y)g(to)g(sp)q(ecify)-1650 57 y
(to)k(a)f(translator)f(that)h(argumen)o(t)g(arra)o(ys)f(indeed)j(do)f(not)f
(o)o(v)o(erlap.)32 b(The)20 b(Committee,)g(in)-252 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
69 @eop1

70 @bop0

70 @eop0
0 0 70 @bop1 112 50 a @F14 @sf(70)1109 b @F10 @sf(Section)15 b(3.)35 b
(LANGUA)o(GE)-1651 145 y @F14 @sf(adopting)17 b(this)f(future)h
(direction,)f(hop)q(es)h(to)g(pro)o(vide)f(common)h(ground)f(for)h
(implemen)o(tors)-1652 57 y(and)f(users)g(concerned)h(with)e(this)h
(problem,)f(so)g(that)g(some)h(future)g(C)f(Standard)h(can)g(adopt)-1651 
56 y(this)f(non-o)o(v)o(erlapping)f(rule)h(on)g(the)h(basis)e(of)h
(widespread)g(exp)q(erience.)-1383 2445 y
70 @eop1

71 @bop0
@F1 @sf
[<
0007FFFFFFC00007FFFFFFC00007FFFFFFC00007FFFFFFC0000001FFC000000001FFC00000
0001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000
01FFC000000001FFC000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0F80000
FFC0007C0000FFC0003C0000FFC0001E0000FFC0000F0000FFC0000F8000FFC00007C000FF
C00003C000FFC00001E000FFC00000F000FFC00000F800FFC000007C00FFC000003C00FFC0
00001E00FFC000000F00FFC000000F80FFC0000007C0FFC0000003C0FFC0000001E0FFC000
0000F0FFC0000000F8FFC00000007CFFC00000003CFFC00000001EFFC00000000FFFC00000
000FFFC000000007FFC000000003FFC000000001FFC000000000FFC000000000FFC0000000
007FC0000000003FC0000000001FC0000000000FC0000000000FC00000000007C000>
. 42 55 -3 54 50] 52 @dc
@F2 @sf
[<
FFFFFFFFFFFFF80000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFC00FF
FFFFFFFFFFFFFF00001FFF800001FFFF80001FFF8000003FFFE0001FFF8000001FFFE0001F
FF80000007FFF0001FFF80000007FFF8001FFF80000003FFFC001FFF80000001FFFC001FFF
80000001FFFE001FFF80000000FFFE001FFF80000000FFFE001FFF80000000FFFF001FFF80
000000FFFF001FFF80000000FFFF001FFF800000007FFF001FFF800000007FFF001FFF8000
00007FFF001FFF800000007FFF001FFF80000000FFFF001FFF80000000FFFE001FFF800000
00FFFE001FFF80000000FFFE001FFF80000000FFFC001FFF80000001FFFC001FFF80000001
FFF8001FFF80000003FFF8001FFF80000003FFF0001FFF80000007FFE0001FFF8000000FFF
C0001FFF8000003FFF00001FFF800000FFFC00001FFFFFFFFFFFF000001FFFFFFFFFFF8000
001FFFFFFFFFFE0000001FFFFFFFFFFFC000001FFF800007FFF000001FFF800001FFFC0000
1FFF8000007FFE00001FFF8000003FFF00001FFF8000001FFF80001FFF8000000FFFC0001F
FF8000000FFFE0001FFF80000007FFE0001FFF80000007FFF0001FFF80000003FFF0001FFF
80000003FFF8001FFF80000003FFF8001FFF80000003FFF8001FFF80000003FFF8001FFF80
000003FFF8001FFF80000003FFF8001FFF80000003FFF8001FFF80000003FFF8001FFF8000
0003FFF0001FFF80000007FFF0001FFF80000007FFF0001FFF80000007FFE0001FFF800000
0FFFC0001FFF8000001FFFC0001FFF8000003FFF80001FFF8000007FFF00001FFF800001FF
FE00FFFFFFFFFFFFFFF800FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFE00
00FFFFFFFFFFFFE00000>
. 72 71 -4 70 84] 66 @dc
[<
000000FFFFFFFFF8000000000000FFFFFFFFF8000000000000FFFFFFFFF8000000000000FF
FFFFFFF8000000000000FFFFFFFFF8000000000000001FFF8000000000000000001FFF8000
000000000000001FFF8000000000000000001FFF8000000000000000001FFF800000000000
0000001FFF8000000000000000001FFF8000000000000000001FFF8000000000000000001F
FF8000000000000000001FFF8000000000000000001FFF8000000000000000001FFF800000
0000000000001FFF8000000000000000001FFF8000000000000000001FFF80000000000000
00001FFF8000000000000000001FFF8000000000000000001FFF8000000000000000001FFF
8000000000000000001FFF8000000000000000001FFF8000000000000000001FFF80000000
00000000001FFF8000000000000000001FFF8000000000000000003FFFC000000000000000
003FFFE000000000000000007FFFF00000000000000000FFFFF00000000000000000FFFFF8
0000000000000001FFFFFC0000000000000003FFFFFC0000000000000003FFFE7E00000000
00000007FFFC3F000000000000000FFFFC3F000000000000000FFFF81F800000000000001F
FFF00FC00000000000003FFFF00FC00000000000003FFFE007E00000000000007FFFC003F0
000000000000FFFFC003F0000000000000FFFF8001F8000000000001FFFF0000FC00000000
0003FFFF0000FC000000000003FFFE00007E000000000007FFFC00003F00000000000FFFFC
00003F00000000000FFFF800001F80000000001FFFF000000FC0000000003FFFF000000FC0
000000003FFFE0000007E0000000007FFFC0000003F000000000FFFFC0000003F000000000
FFFF80000001F800000001FFFF00000000FC00000003FFFF00000000FC00000003FFFE0000
00007E00000007FFFC000000003F0000000FFFFC000000001F8000000FFFF8000000001F80
00001FFFF0000000000FC000003FFFF0000000001FF000FFFFFFFFF000000FFFFFF8FFFFFF
FFF000000FFFFFF8FFFFFFFFF000000FFFFFF8FFFFFFFFF000000FFFFFF8FFFFFFFFF00000
0FFFFFF8>
. 85 71 -2 70 90] 89 @dc
@F4 @sf
[<
FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001
FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
01FE00FFFFFCFFFFFCFFFFFC>
. 22 41 -2 40 26] 73 @dc

71 @eop0

0 0 71 @bop1 112 508 a @F1 @sf(Section)32 b(4)-398 209 y @F2 @sf(LIBRAR)
-10 b(Y)-548 242 y @F4 @sf(4.1)70 b(In)n(tro)r(duction)-535 103 y @F14 @sf
(The)14 b(Base)g(Do)q(cumen)o(t)f(for)g(this)g(section)g(of)g(the)h
(Standard)f(w)o(as)g(the)g @F11 @sf(1984)j(/usr/gr)n(oup)g(Stan-)-1651 57 y
(dar)n(d)p @F14 @sf(.)28 b(The)18 b(/usr/group)f(do)q(cumen)o(t)h(con)o
(tains)f(de\014nitions)h(of)f(some)g(facilities)f(whic)o(h)i(w)o(ere)-1651 
56 y(sp)q(eci\014c)i(to)d(the)h(UNIX)h(Op)q(erating)f(System)g(and)g(not)g
(relev)m(an)o(t)g(to)f(other)h(op)q(erating)g(en)o(vi-)-1651 57 y(ronmen)o
(ts,)c(suc)o(h)g(as)g(pip)q(es,)h(io)q(ctls,)e(\014le)h(access)g(p)q
(ermissions)g(and)g(pro)q(cess)h(con)o(trol)e(faciliti)o(es.)-1652 56 y
(Those)k(de\014nitions)e(w)o(ere)h(dropp)q(ed)h(from)f(the)g(Standard.)22 b
(Some)17 b(other)e(functions)h(w)o(ere)g(ex-)-1650 57 y(cluded)g(from)f
(the)g(Standard)g(b)q(ecause)h(they)g(w)o(ere)f(non-p)q(ortable)g(or)f(w)o
(ere)h(ill-de\014ned.)-1468 57 y(Other)k(facilities)e(not)i(in)g(the)g
(library)f(Base)h(Do)q(cumen)o(t)f(but)h(presen)o(t)g(in)g(man)o(y)g(UNIX)
-1650 57 y(implemen)o(tations,)13 b(suc)o(h)h(as)g(the)h(curses)f
(\(terminal-indep)q(enden)o(t)g(screen)h(handling\))f(library)-1652 56 y
(w)o(ere)g(considered)f(to)g(b)q(e)h(more)f(complex)g(and)h(less)f(essen)o
(tial)f(than)h(the)h(facilit)o(ies)e(of)h(the)g(Base)-1650 57 y(Do)q
(cumen)o(t;)i(these)h(functions)f(w)o(ere)f(not)h(added)h(to)f(the)g
(Standard.)-1193 129 y @F6 @sf(4.1.1)56 b(De\014nitions)17 b(of)i(terms)
-659 88 y @F14 @sf(The)c @F11 @sf(de)n(cimal-p)n(oint)h(char)n(acter)f 
@F14 @sf(is)f(the)h(c)o(haracter)f(used)h(in)g(the)g(input)f(or)h(output)f
(of)g(\015oating)-1651 56 y(p)q(oin)o(t)g(n)o(um)o(b)q(ers,)h(and)f(ma)o
(y)g(b)q(e)h(c)o(hanged)f(b)o(y)g @F8 @sf(setlocale)p @F14 @sf(.)19 b
(This)14 b(is)f(a)h(library)f(construct;)h(the)-1650 57 y(decimal)h(p)q
(oin)o(t)g(in)g(n)o(umeric)g(literals)e(in)i(C)g(source)h(text)e(is)h(alw)o
(a)o(ys)e(a)i(p)q(erio)q(d.)-1364 129 y @F6 @sf(4.1.2)56 b(Standard)19 b
(headers)-600 88 y @F14 @sf(Whereas)e(in)f(prior)g(practice)g(only)h
(certain)f(library)f(functions)h(ha)o(v)o(e)h(b)q(een)g(asso)q(ciated)f
(with)-1651 57 y(header)i(\014les,)g(the)f(Standard)h(no)o(w)e(mandates)h
(that)g @F11 @sf(al)r(l)22 b @F14 @sf(library)16 b(functions)h(ha)o(v)o(e)g
(a)g(header.)-1650 56 y(Sev)o(eral)e(headers)g(ha)o(v)o(e)f(therefore)h(b)q
(een)h(added,)f(and)g(the)g(con)o(ten)o(ts)f(of)g(a)h(few)g(old)f(ones)h
(ha)o(v)o(e)-1651 57 y(b)q(een)i(c)o(hanged.)-210 57 y(In)f(man)o(y)f
(implemen)o(tatio)o(ns)f(the)i(names)f(of)g(headers)g(are)g(the)g(names)h
(of)e(\014les)i(in)f(sp)q(ecial)-1651 57 y(directories.)22 b(This)15 b
(implemen)o(tation)g(tec)o(hnique)h(is)f(not)h(required,)g(ho)o(w)o(ev)o
(er:)k(the)d(Standard)-1651 56 y(mak)o(es)i(no)g(assumptions)f(ab)q(out)g
(the)h(form)f(that)g(a)h(\014le)g(name)g(ma)o(y)f(tak)o(e)g(on)h(an)o(y)f
(system.)-1651 57 y(Headers)e(ma)o(y)f(th)o(us)h(ha)o(v)o(e)f(a)g(sp)q
(ecial)h(status)e(if)i(an)f(implemen)o(tation)f(so)h(c)o(ho)q(oses.)22 b
(Standard)-1651 56 y(headers)e(ma)o(y)f(ev)o(en)h(b)q(e)g(built)f(in)o(to)g
(a)g(translator)o(,)g(pro)o(vided)h(that)e(their)h(con)o(ten)o(ts)g(do)h
(not)-1651 57 y(b)q(ecome)14 b(\\kno)o(wn")f(un)o(til)f(after)g(they)i
(are)e(explicitly)g(included.)20 b(One)14 b(purp)q(ose)g(of)e(p)q
(ermitting)-848 124 y(71)-961 b
71 @eop1

72 @bop0
@F10 @sf
[<
0FFFC000007C00000078000000380000003C0000003C0000003C0000003C0000003C000000
1C0000001E0000001E0000001E0000001F0000003F0000003C8000007C40000078600000F8
200000F0100001F0080001F00C0001E0040003E0020003C0010007C00180078000800F8000
400F0000601F8000F8FFF003FF>
. 32 31 -6 30 34] 89 @dc

72 @eop0

0 0 72 @bop1 112 50 a @F14 @sf(72)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F14 @sf(these)15 b(header)g(\\\014les")f(to)g
(b)q(e)h(\\built)f(in")g(to)g(the)h(translat)o(or)e(is)h(to)g(allo)o(w)f
(an)h(implemen)o(tation)-1652 57 y(of)k(the)h(C)f(language)g(as)g(an)g(in)o
(terpreter)g(in)g(an)g(un-hosted)i(en)o(vironmen)o(t,)e(where)g(the)h
(only)-1651 56 y(\\\014le")c(supp)q(ort)g(ma)o(y)g(b)q(e)h(a)f(net)o(w)o
(ork)f(in)o(terface.)-771 58 y(The)k(Committee)e(decided)i(to)f(mak)o(e)g
(library)f(headers)i(\\idemp)q(oten)o(t")f(|)h(they)f(should)-1650 57 y(b)q
(e)f(includable)f(an)o(y)g(n)o(um)o(b)q(er)g(of)g(times,)f(and)h
(includable)g(in)g(an)o(y)g(order.)20 b(This)14 b(requiremen)o(t,)-1651 
56 y(whic)o(h)j(re\015ects)f(widespread)h(existing)e(practice,)h(ma)o(y)g
(necessitate)g(some)g(protectiv)o(e)g(wrap-)-1651 56 y(p)q(ers)h(within)e
(the)g(headers,)h(to)f(a)o(v)o(oid,)f(for)i(instance,)f(rede\014nitions)g
(of)h(t)o(yp)q(edefs.)21 b(T)l(o)16 b(ensure)-1650 57 y(that)g(suc)o(h)h
(protectiv)o(e)e(wrapping)g(can)i(b)q(e)g(made)f(to)f(w)o(ork,)h(and)g(to)f
(ensure)i(prop)q(er)g(scoping)-1651 56 y(of)e(t)o(yp)q(edefs,)g(headers)h
(ma)o(y)e(only)h(b)q(e)h(included)g(outside)f(of)f(an)o(y)h(declaration.)
-1308 58 y(Note)i(to)f(implemen)o(tors:)22 b(a)16 b(common)g(w)o(a)o(y)g
(of)h(pro)o(viding)e(this)i(\\protectiv)o(e)e(wrapping")-1651 57 y(is:)147 
102 y @F8 @sf(#ifndef)23 b(__ERRNO_H)-407 56 y(#define)g(__ERRNO_H)-407 
57 y(/*)h(body)f(of)h(<errno.h>)f(*/)-550 56 y(/*)h(...)358 b(*/)-550 57 y
(#endif)-335 100 y @F14 @sf(where)19 b 14 -2 z 17 x 14 -2 z 14 x @F8 @sf
(ERRNO)s 14 -2 z 14 x(H)c @F14 @sf(is)g(an)g(otherwise)f(un)o(used)i
(macro)f(name.)-1062 114 y(Implemen)o(tors)g(often)f(desire)h(to)f(pro)o
(vide)h(implemen)o(tatio)o(ns)f(of)g(C)h(in)g(addition)f(to)g(that)g(pre-)
-1650 56 y(scrib)q(ed)21 b(b)o(y)g(the)f(Standard.)35 b(F)l(or)20 b
(instance,)h(an)f(implemen)o(tatio)o(n)f(ma)o(y)h(w)o(an)o(t)f(to)h(pro)o
(vide)-1651 57 y(system-sp)q(eci\014c)13 b(I/O)e(facilities)f(in)h @F8 @sf
(<stdio.h>)p @F14 @sf(.)18 b(A)11 b(tec)o(hnique)h(that)f(allo)o(w)o(s)f
(the)i(same)f(header)-1650 56 y(to)h(b)q(e)g(used)h(in)e(b)q(oth)h(the)g
(Standard-conforming)f(and)h(alternate)f(implemen)o(tatio)o(ns)g(is)g(to)g
(add)-1650 57 y(the)16 b(extra,)e(non-Standard,)h(declarations)f(to)h(the)g
(header)g(as)g(in)g(this)g(illustrat)o(ion:)-1279 102 y @F8 @sf(#ifdef)23 b
(__EXTENSIONS__)-503 56 y(typedef)g(int)h(file_no;)-479 57 y(extern)f(int)h
(read\(file_no)e(_N,)i(void)f(*)h(_Buffer,)e(int)i(_Nbytes\);)-1362 56 y
(/*...*/)-168 57 y(#endif)-335 100 y @F14 @sf(The)e(header)g(is)e(usable)i
(in)f(an)g(implemen)o(tatio)o(n)f(of)h(the)g(Standard)h(in)f(the)g
(absence)h(of)f(a)-1651 56 y(de\014nition)h(of)i 14 -2 z 18 x 14 -2 z 14 x 
@F8 @sf(EXTENSIONS)s 14 -2 z 16 x 14 -2 z 14 x @F14 @sf(,)f(and)f(the)g
(non-Standard)g(implemen)o(tatio)o(n)f(can)h(pro)o(vide)-1651 57 y(the)16 b
(appropriate)e(de\014nitions)h(to)f(enable)i(the)f(extra)g(declarations.)
-1189 129 y @F9 @sf(4.1.2.1)52 b(Reserv)o(ed)16 b(iden)o(ti\014ers)o -653 
89 a @F14 @sf(T)l(o)h(giv)o(e)f(implemen)o(tors)g(maxim)o(um)g(latit)o
(ude)g(in)h(pac)o(king)f(library)g(functions)h(in)o(to)f(\014les,)g(all)
-1651 56 y(external)i(iden)o(ti\014ers)h(de\014ned)h(b)o(y)e(the)h
(library)e(are)h(reserv)o(ed)h(\(in)f(a)g(hosted)h(en)o(vironmen)o(t\).)
-1652 57 y(This)j(means,)i(in)e(e\013ect,)h(that)f(no)g(user)g(supplied)h
(external)e(names)i(ma)o(y)e(matc)o(h)h(library)-1652 56 y(names,)15 b 
@F11 @sf(not)h(even)g(if)g(the)h(user)f(function)g(has)g(the)h(same)f(sp)n
(e)n(ci\014c)m(ation)p @F14 @sf(.)j(Th)o(us,)14 b(for)h(instance,)-1651 
57 y @F8 @sf(strtod)k @F14 @sf(ma)o(y)g(b)q(e)i(de\014ned)g(in)f(the)f
(same)h(ob)s(ject)f(mo)q(dule)h(as)f @F8 @sf(printf)p @F14 @sf(,)h(with)f
(no)h(fear)f(that)-1651 56 y(link-time)13 b(con\015icts)h(will)f(o)q
(ccur.)19 b(Equally)l(,)14 b @F8 @sf(strtod)f @F14 @sf(ma)o(y)g(call)g 
@F8 @sf(printf)p @F14 @sf(,)g(or)g @F8 @sf(printf)g @F14 @sf(ma)o(y)g
(call)-1651 57 y @F8 @sf(strtod)p @F14 @sf(,)h(for)h(whatev)o(er)g
(reason,)f(with)h(no)g(fear)f(that)h(the)g(wrong)g(function)g(will)f(b)q
(e)h(called.)-1724 124 y
72 @eop1

73 @bop0
/@F5 @newfont
@F5 @sf
[<
0000C00003E00007E0000FC0003F80007E0000FC0003F80007E0000FC0003F80007E0000FC
0000FC00007E00003F80000FC00007E00003F80000FC00007E00003F80000FC00007E00003
E00000C0>
. 19 26 -3 27 26] 60 @dc
[<
00FE0003FFC00FFFE01F01F03C0070780070700000700000E00000FFFFF0FFFFF0FFFFF0E0
0070E000707000E07800E03C01C01E07C00FFF8007FF0001F800>
. 20 21 -3 20 26] 101 @dc
[<
7FFF00FFFF007FFF0003800003800003800003800003800003800003800003800003800003
800003C00003C00003E00003F01803FC3C7FBFFCFF8FF87F83F0>
. 22 21 -2 20 26] 114 @dc
[<
FFE3FEFFE7FEFFE3FE0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00E00E00F00E00F80E00FC1C0FFFFC0FEFF80FE3E00>
. 23 21 -1 20 26] 110 @dc
[<
01F00007FC001FFF003E0F803C07807803C07001C0F001E0E000E0E000E0E000E0E000E0E0
00E0E000E07001C07803C03C07803E0F801FFF0007FC0001F000>
. 19 21 -3 20 26] 111 @dc
[<
3078FCFC7830>
. 6 6 -10 5 26] 46 @dc
[<
FFE3FEFFE7FEFFE3FE0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00E00E00F00E00F80E00FC1C00FFFC00EFF800E3E000E00000E00000E00000E00
000E00000E0000FE0000FE0000FE0000>
. 23 30 -1 29 26] 104 @dc
[<
600000F80000FC00007E00003F80000FC00007E00003F80000FC00007E00003F80000FC000
07E00007E0000FC0003F80007E0000FC0003F80007E0000FC0003F80007E0000FC0000F800
00600000>
. 19 26 -3 27 26] 62 @dc
@F5 @sf
[<
3FFF807FFFC03FFF8000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E000FFFFF0FFFFF07FFFF000E00000E00000E00000E0
0000F030007878003FF8001FF00007E0>
. 21 30 -1 29 26] 102 @dc
[<
FFFFE0FFFFE0FFFFE000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E000FFE000FFE000FFE000>
. 19 30 -3 29 26] 108 @dc
[<
07F0FC1FFDFC3FFFFC780F80700780E00380E00380E003807003807803803F83801FFF8007
FF80007F80000380000380300700780F007FFE003FFC001FF000>
. 22 21 -3 20 26] 97 @dc
[<
001F00007FC000FFE000E0E001C07001C07001C07001C07001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C000FFFFE0FFFFE07FFFE001C00001C00001C00001C0
0001C00001C00000C000>
. 20 28 -1 27 26] 116 @dc
@F5 @sf
[<
7FFF80FFFFC07FFF8000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E0007FE0007FE0007FE0000000000000000000000000
0000000000000000C00001E00001E00000C000>
. 18 31 -4 30 26] 105 @dc
[<
7F1F1F00FF9F9F807F1F1F001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C
1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001E1E1C001E1E1C001F1F1C007FFF
F800FFFBF8007CE0E000>
. 25 21 0 20 26] 109 @dc
[<
E3F800EFFE00FFFF00FC0780F003C0E001C0E001C06001C0000780003F8007FE003FFC007F
C000780000E00380E00380E003807807807FFF801FFF8007FB80>
. 18 21 -4 20 26] 115 @dc
/@F19 @newfont
@F19 @sf
[<
1E0063004180C1C0E1C041C001C001C00180030006000E003380718061C0E1C0E1C0E1C0E1
80638073001C00180030006000E000E000E080E1C0E0C0608031801E00>
. 10 33 -3 25 17] 120 @dc
@F20 @sf
[<
FF80101C00300800300800700800700800F00801D00801D0080390080390080710080E1008
0E10081C10081C1008381008701008701008E01008E01009C0100B80100B80100F00100F00
38FE01FF>
. 24 26 -2 25 29] 78 @dc
[<
7F0FE00E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E
07000E07000E0700FFFF000E00000E00000E00000E00000E00000E02000607000703000182
0000FC00>
. 19 26 0 25 21] 12 @dc
@F17 @sf
[<
000E003E007C00F003E007C01F003E00F800F000F8003E001F0007C003E000F0007C003E00
0E>
. 15 19 -2 20 20] 60 @dc
[<
00F003FC070C070E070E070E07000700070007000700070007000700FFFC7FFC0700070007
0007000300>
. 15 21 -1 20 20] 116 @dc
[<
FFFCFFFC0380038003800380038003800380038003800380038003807F807F800000000000
0000000300078007800300>
. 14 24 -3 23 20] 105 @dc
[<
FE79E0FEFBE038E38038E38038E38038E38038E38038E38038E38038E38038E38038E3803C
F3803CF380FFDF00FB8E00>
. 19 16 0 15 20] 109 @dc
[<
03F00FFC1C1E380E70006000E000FFFEFFFEE00EE00E700C301C1C380FF007E0>
. 15 16 -2 15 20] 101 @dc
[<
70F8F8F870>
. 5 5 -7 4 20] 46 @dc
[<
FF8FE0FF8FE01C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001E
07001F86001DFE001C78001C00001C00001C00001C00001C0000FC0000FC0000>
. 19 23 0 22 20] 104 @dc
[<
4000E000F8007C001E000F8007C001F000F8003E001E003E00F801F007C00F801E007C00F8
00E0004000>
. 15 21 -2 21 20] 62 @dc
@F17 @sf
[<
FFFEFFFE038003800380038003800380038003800380038003800380038003800380038003
8003800380FF80FF80>
. 15 23 -2 22 20] 108 @dc
[<
07C01FF03C78783C701CE00EE00EE00EE00EE00EE00E701C701C3C781FF007C0>
. 15 16 -2 15 20] 111 @dc
[<
03F00FFC1C1E380E70006000E000E000E000E0006000700038081C1C0FFC03F8>
. 15 16 -2 15 20] 99 @dc
[<
0F8F803FFF80707C00E01C00E01C00E01C00701C003C1C001FFC0007FC00001C00001C0020
18007078007FF0001FC000>
. 17 16 -2 15 20] 97 @dc
[<
CFE0FFF8F81CF006E0066006001C07F83FF07F80F000C038C03860383FF80FD8>
. 15 16 -2 15 20] 115 @dc
@F20 @sf
[<
8040202010101070F0F060>
. 4 11 -3 3 11] 44 @dc
@F20 @sf
[<
FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E00FFE0>
. 11 26 -1 25 14] 73 @dc
@F17 @sf
[<
FFF000FFF0000E00000E00000E00000E00000E00000E00000E00000E00000F00000F00000F
81000EE380FE7F80FE1F00>
. 17 16 -1 15 20] 114 @dc
[<
FF8FE0FF8FE01C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001E
07001F8600FDFE00FC7800>
. 19 16 0 15 20] 110 @dc
@F17 @sf
[<
07CFC01FEFC0383E00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E0030
1E001C3E000FFE0007CE00000E00000E00000E00000E00000E00007E00007E00>
. 18 23 -1 22 20] 100 @dc
[<
7FFC7FFC038003800380038003800380038003800380038003800380FFFE7FFE0380038003
80038401CE00FE007C>
. 15 23 -1 22 20] 102 @dc
@F20 @sf
[<
003F0001C0C00300300E00081C00081C0004380004780002700002700002F00000F00000F0
0000F00000F00000F000007000027000027800023800061C00061C000E0E001E03002E01C0
C6003F02>
. 23 26 -2 25 28] 67 @dc
[<
007FC0000E00000E00000E00000E00000E00000E0007CE001C2E00381E00700E00700E00E0
0E00E00E00E00E00E00E00E00E00E00E00700E00300E00381E000C260003C200>
. 18 23 -1 15 20] 113 @dc

73 @eop0

0 0 73 @bop1 112 50 a @F10 @sf(4.1.)35 b(In)o(tro)q(duction)1249 b @F14 @sf
(73)-1580 145 y(Also)21 b(reserv)o(ed)g(for)g(the)h(implemen)o(tor)e(are)h 
@F11 @sf(al)r(l)26 b @F14 @sf(external)21 b(iden)o(ti\014ers)g(b)q
(eginning)g(with)-1651 57 y(an)16 b(underscore,)g(and)f(all)g(other)g
(iden)o(ti\014ers)g(b)q(eginning)g(with)g(an)h(underscore)g(follo)n(w)o
(ed)e(b)o(y)i(a)-1651 56 y(capital)11 b(letter)g(or)g(an)h(underscore.)19 b
(This)12 b(giv)o(es)f(a)g(space)h(of)f(names)h(for)f(writing)g(the)g(n)o
(umerous)-1650 56 y(b)q(ehind-the-)q(scenes)19 b(non-external)f(macros)f
(and)h(functions)f(a)h(library)e(needs)j(to)e(do)h(its)f(job)-1651 57 y
(prop)q(erly)l(.)-105 57 y(With)11 b(these)h(exceptions,)g(the)f(Standard)h
(assures)f(the)h(programmer)e(that)h @F11 @sf(al)r(l)i(other)k @F14 @sf
(iden-)-1650 57 y(ti\014ers)i(are)g(a)o(v)m(ailable,)f(with)h(no)g(fear)g
(of)g(unexp)q(ected)h(collisions)e(when)i(mo)o(ving)e(programs)-1652 56 y
(from)g(one)g(implemen)o(tation)f(to)g(another.)p -16 w @F22 @sf(1)31 16 y 
@F14 @sf(Note,)h(in)g(particular,)f(that)h(part)f(of)h(the)g(name)-1650 
57 y(space)i(of)f(in)o(ternal)g(iden)o(ti\014ers)g(b)q(eginning)h(with)e
(underscore)j(is)e(a)o(v)m(ailable)f(to)h(the)g(user)h(|)-1650 56 y
(translator)11 b(implemen)o(tors)f(ha)o(v)o(e)i(not)g(b)q(een)h(the)f
(only)g(ones)g(to)g(\014nd)h(use)f(for)f(\\hidden")i(names.)-1651 57 y(C)g
(is)g(suc)o(h)g(a)g(p)q(ortable)f(language)h(in)f(man)o(y)h(resp)q(ects)g
(that)g(this)f(issue)h(of)g(\\name)f(space)i(p)q(ollu-)-1651 56 y(tion")h
(is)f(curren)o(tly)h(one)g(of)g(the)g(principal)g(barriers)f(to)g(writing)g
(completely)h(p)q(ortable)f(co)q(de.)-1650 56 y(Therefore)i(the)h
(Standard)e(assures)h(that)g(macro)f(and)h(t)o(yp)q(edef)h(names)f(are)f
(reserv)o(ed)h(only)g(if)-1651 57 y(the)g(asso)q(ciated)e(header)i(is)e
(explicitly)g(included.)-863 127 y @F6 @sf(4.1.3)56 b(Errors)-156 58 y 
@F5 @sf(<errn)o(o.h)o(>)-404 88 y @F8 @sf(<errno.h>)15 b @F14 @sf(is)h(a)f
(header)i(in)o(v)o(en)o(ted)e(to)g(encapsulate)h(the)g(error)g(handling)f
(mec)o(hanism)h(used)-1650 56 y(b)o(y)g(man)o(y)e(of)h(the)g(library)f
(routines)h(in)g @F8 @sf(math.h)f @F14 @sf(and)i @F8 @sf(strlib.h)p @F14 @sf
(.)p -16 w @F22 @sf(2)o -1091 73 a @F14 @sf(The)g(error)f(rep)q(orting)h
(mac)o(hinery)f(cen)o(tered)i(ab)q(out)e(the)h(setting)f(of)h @F8 @sf
(errno)f @F14 @sf(is)g(generally)-1651 57 y(regarded)k(with)e(tolerance)g
(at)h(b)q(est.)29 b(It)18 b(requires)g(a)g(\\patholog)o(ical)e(coupling")i
(b)q(et)o(w)o(een)g(li-)-1651 56 y(brary)i(functions)f(and)h(mak)o(es)f
(use)h(of)g(a)f(static)g(writable)f(memory)h(cell,)i(whic)o(h)e(in)o
(terferes)-1651 57 y(with)c(the)g(construction)f(of)g(shareable)h
(libraries.)j(Nev)o(ertheless,)d(the)g(Committ)o(ee)f(preferred)-1650 56 y
(to)h(standardize)g(this)g(existing,)f(ho)o(w)o(ev)o(er)h(de\014cien)o(t,)g
(mac)o(hinery)g(rather)g(than)g(in)o(v)o(en)o(t)g(some-)-1651 57 y(thing)g
(more)g(am)o(bitious.)o -369 57 a(The)j(de\014nition)f(of)h @F8 @sf(errno)f 
@F14 @sf(as)g(an)g(lv)m(alue)h(macro)f(gran)o(ts)f(implemen)o(tors)h(the)g
(license)h(to)-1651 57 y(expand)e(it)f(to)f(something)h(lik)o(e)f @F8 @sf
(*)s 14 -2 z 17 x 14 -2 z 15 x(errno)s 14 -2 z 13 x(addr\(\))p @F14 @sf(,)g
(where)h(the)h(function)f(returns)g(a)g(p)q(oin)o(ter)-1651 56 y(to)g(the)g
(\(curren)o(t\))g(mo)q(di\014able)g(cop)o(y)g(of)g @F8 @sf(errno.)-851 127 y 
@F6 @sf(4.1.4)56 b(Limits)-157 58 y @F5 @sf(<floa)o(t.h)o(>)17 b @F6 @sf
(and)i @F5 @sf(<limits)o(.h)o(>)-787 88 y @F14 @sf(Both)j @F8 @sf
(<float.h>)e @F14 @sf(and)i @F8 @sf(<limits.h>)e @F14 @sf(are)h(in)o(v)o
(en)o(tions.)38 b(Included)23 b(in)e(these)h(headers)g(are)-1651 56 y(v)m
(arious)f(parameters)f(of)h(the)g(execution)g(en)o(vironmen)o(t)g(whic)o
(h)g(are)f(p)q(oten)o(tially)g(useful)h(at)-1651 57 y(compile)15 b(time,)f
(and)i(whic)o(h)f(are)g(di\016cult)f(or)h(imp)q(ossible)f(to)h(determine)g
(b)o(y)g(other)g(means.)-1537 57 y(The)i(a)o(v)m(ailabilit)o -1 x(y)f(of)h
(this)f(information)f(in)j(headers)f(pro)o(vides)g(a)g(p)q(ortable)f(w)o
(a)o(y)g(of)h(tun-)-1650 57 y(ing)g(a)f(program)g(to)g(di\013eren)o(t)g
(en)o(vironmen)o(ts.)24 b(Another)16 b(p)q(ossible)h(metho)q(d)g(of)f
(determining)-1651 43 y 660 -2 z 52 27 a @F23 @sf(1)3 16 y @F20 @sf(See)g 
@F19 @sf(x)p @F20 @sf(3.1.2.1)g(for)f(a)h(discussion)h(of)f(some)g(of)g
(the)g(precautions)h(an)g(implemen)o(tor)f(should)h(tak)o(e)f(to)g(k)o
(eep)-1650 45 y(this)g(promise.)23 b(Note)15 b(also)h(that)f(an)o(y)h
(implemen)o(tation-de\014ned)h(mem)o(b)q(er)e(names)h(in)f(structures)h
(de\014ned)g(in)-1650 46 y @F17 @sf(<time.h)o(>)f @F20 @sf(and)j @F17 @sf
(<loca)o(ls.)o(h>)d @F20 @sf(m)o(ust)i(b)q(egin)h(with)e(an)h(underscore)q
(,)i(rather)e(than)h(follo)o(wing)e(the)h(pattern)h(of)-1651 46 y(other)c
(names)f(in)g(those)h(structures.)-489 29 y @F23 @sf(2)3 16 y @F20 @sf(In)d
(earlier)h(drafts)g(of)g(the)g(Standard,)h @F17 @sf(errno)o 11 x @F20 @sf
(and)f(related)g(macros)g(w)o(ere)g(de\014ned)h(in)f @F17 @sf(<stdd)o(ef.)o
(h>)o @F20 @sf(.)j(When)-1649 46 y(the)h(Committee)e(decided)i(that)f(the)g
(other)h(de\014nitions)g(in)e(this)h(header)h(w)o(ere)f(of)g(suc)o(h)g
(general)h(utilit)o(y)e(that)-1650 46 y(they)g(should)g(b)q(e)f(required)h
(ev)o(en)f(in)g(freestanding)h(en)o(vironmen)o(ts,)f(it)g(created)g @F17 @sf
(<errno)o(.h>)o @F20 @sf(.)30 124 y @F15 @sf(RA)m(TIONALE)-1763 b
73 @eop1

74 @bop0
@F5 @sf
[<
01F1FC07FDFC1FFFFC3E0FC03807C07003C07003C0E001C0E001C0E001C0E001C0E001C0E0
01C0E001C07001C07803C03C07C01E0FC00FFFC007FDC001F1C00001C00001C00001C00001
C00001C00001C0001FC0001FC0001FC0>
. 22 30 -2 29 26] 100 @dc
@F22 @sf
[<
0FE030304018C00CE00EE00E000E000E000C0018003007E0006000380018001C701C701C60
1830300FE0>
. 15 21 -1 20 18] 51 @dc
@F23 @sf
[<
1F0060808040C060C0600060004000800F000180008000C060C060C021801F00>
. 11 16 -1 15 15] 51 @dc
@F20 @sf
[<
00800100020004000C00080018003000300030006000600060006000E000E000E000E000E0
00E000E000E000E000E0006000600060006000300030003000180008000C00040002000100
0080>
. 9 38 -3 27 15] 40 @dc
[<
8000400020001000180008000C000600060006000300030003000300038003800380038003
800380038003800380038003000300030003000600060006000C0008001800100020004000
8000>
. 9 38 -2 27 15] 41 @dc

74 @eop0

0 0 74 @bop1 112 50 a @F14 @sf(74)1171 b @F10 @sf(Section)15 b(4.)30 b
(LIBRAR)q -4 x(Y)-1649 145 y @F14 @sf(some)17 b(of)f(this)g(informatio)o
(n)f(is)i(to)e(ev)m(aluate)i(arithmetic)e(expressions)h(in)h(the)f(prepro)q
(cessing)-1650 57 y(statemen)o(ts.)j(Requiring)14 b(that)g(prepro)q
(cessing)h(alw)o(a)o(ys)e(yield)h(the)g(same)h(results)e(as)i(run-time)-1651 
56 y(arithmetic,)e(ho)o(w)o(ev)o(er,)g(w)o(ould)g(cause)h(problems)f(for)g
(p)q(ortable)g(compilers)g(\(themselv)o(es)g(writ-)-1651 56 y(ten)19 b(in)g
(C\))g(or)f(for)g(cross)h(compilers,)f(whic)o(h)h(w)o(ould)f(then)h(b)q(e)h
(required)f(to)f(implemen)o(t)g(the)-1650 57 y(\(p)q(ossibly)h(wildly)g
(di\013eren)o(t\))f(arithmetic)g(of)h(the)h(target)e(mac)o(hine)i(on)f
(the)h(host)f(mac)o(hine.)-1651 56 y(\(See)d @F12 @sf(x)p @F14 @sf(3.4.\))
-209 107 y @F8 @sf(<float.h>)f @F14 @sf(mak)o(es)f(a)o(v)m(ailable)g(to)h
(programmers)f(a)h(set)g(of)g(useful)g(quan)o(tities)f(for)h(n)o(umerical)
-1651 56 y(analysis.)j(\(See)12 b @F12 @sf(x)q @F14 @sf(2.2.4.)o(2.)o(\))
18 b(This)11 b(set)h(of)g(quan)o(tities)e(has)i(seen)h(widespread)f(use)g
(for)g(suc)o(h)g(anal-)-1651 57 y(ysis,)i(in)h(C)f(and)h(in)g(other)f
(languages,)g(and)h(w)o(as)f(recommended)h(b)o(y)g(the)g(n)o(umerical)f
(analysts)-1652 56 y(on)i(the)h(Committ)o(ee.)k(The)c(set)e(w)o(as)h(c)o
(hosen)g(so)f(as)h(not)g(to)f(prejudice)i(an)f(implemen)o(tati)o(on's)-1652 
57 y(selection)f(of)g(\015oating-p)q(oin)o(t)f(represen)o(tation.)-745 56 y
(Most)h(of)h(the)g(limits)f(in)g @F8 @sf(<float.h>)g @F14 @sf(are)h(sp)q
(eci\014ed)h(to)f(b)q(e)h(general)e @F8 @sf(double)h @F14 @sf(expressions)
-1651 56 y(rather)f(than)g(restricted)g(constan)o(t)f(expressions)-782 94 y 
@F12 @sf(\017)22 b @F14 @sf(to)12 b(allo)o(w)o 11 x(use)h(of)e(v)m(alues)i
(whic)o(h)f(cannot)g(readily)f(\(or,)h(in)g(some)g(cases,)g(cannot)g(p)q
(ossibly\))-1537 57 y(b)q(e)k(constructed)f(as)g(manifest)f(constan)o(ts,)g
(and)-878 94 y @F12 @sf(\017)22 b @F14 @sf(to)17 b(allo)o(w)o 16 x(for)f
(run-time)h(selection)g(of)f(\015oating-p)q(oin)o(t)g(prop)q(erties,)h(as)g
(is)f(p)q(ossible,)h(for)-1537 56 y(instance,)e(in)g(IEEE-854)f(implemen)o
(tations.)-906 122 y @F6 @sf(4.1.5)56 b(Common)18 b(de\014nitions)-493 58 y 
@F5 @sf(<stdd)o(ef.)o(h>)-430 86 y @F8 @sf(<stddef.h>)c @F14 @sf(is)h(a)f
(header)i(in)o(v)o(en)o(ted)e(to)h(pro)o(vide)f(de\014nitions)h(of)g(sev)o
(eral)f(t)o(yp)q(es)h(and)g(macros)-1651 56 y(used)21 b(widely)e(in)h
(conjunction)f(with)g(the)h(library:)28 b @F8 @sf(ptrdiff)s 14 -2 z 13 x
(t)20 b @F14 @sf(\(see)f @F12 @sf(x)q @F14 @sf(3.3.6\))o(,)g @F8 @sf(size)s 
14 -2 z 14 x(t)g @F14 @sf(\(see)-1650 57 y @F12 @sf(x)q @F14 @sf(3.3.3.)o
(4\),)o 12 x @F8 @sf(wchar)s 14 -2 z 13 x(t)13 b @F14 @sf(\(see)g @F12 @sf
(x)p @F14 @sf(3.1.3.4)o(\),)e(and)i @F8 @sf(NULL)p @F14 @sf(.)f(Including)h
(an)o(y)g(header)g(that)f(references)h(one)-1650 56 y(of)j(these)h(macros)e
(will)g(also)h(de\014ne)h(it,)f(an)g(exception)g(to)g(the)g(usual)g
(library)g(rule)g(that)f(eac)o(h)-1650 57 y(macro)g(or)g(function)g(b)q
(elongs)g(to)f(exactly)h(one)g(header.)-902 56 y @F8 @sf(NULL)f @F14 @sf
(can)h(b)q(e)g(de\014ned)h(as)e(an)o(y)h @F11 @sf(nul)r(l)g(p)n(ointer)g
(c)n(onstant)p @F14 @sf(.)k(Th)o(us)c(existing)e(co)q(de)i(can)g(retain)
-1651 57 y(de\014nitions)k(of)g @F8 @sf(NULL)f @F14 @sf(as)g @F8 @sf(0)h 
@F14 @sf(or)f @F8 @sf(0L)p @F14 @sf(,)h(but)g(an)f(implemen)o(tation)f(ma)o
(y)i(c)o(ho)q(ose)f(to)h(de\014ne)h(it)e(as)-1651 56 y @F8 @sf(\(void)24 b
(*\)0)p @F14 @sf(;)19 b(this)f(latter)f(form)g(of)h(de\014nition)g(is)g
(con)o(v)o(enien)o(t)g(on)g(arc)o(hitectures)g(where)g(the)-1650 57 y(p)q
(oin)o(ter)d(size\(s\))g(do\(es\))f(not)h(equal)g(the)h(size)f(of)g(an)o
(y)g(in)o(teger)f(t)o(yp)q(e.)21 b(It)15 b(has)g(nev)o(er)g(b)q(een)i
(wise)-1651 56 y(to)e(use)h @F8 @sf(NULL)e @F14 @sf(in)h(place)g(of)g(an)g
(arbitrary)f(p)q(oin)o(ter)h(as)f(a)h(function)g(argumen)o(t,)f(ho)o(w)o
(ev)o(er,)g(since)-1650 56 y(p)q(oin)o(ters)d(to)g(di\013eren)o(t)f(t)o
(yp)q(es)h(need)h(not)f(b)q(e)h(the)f(same)g(size.)18 b(The)11 b(library)f
(a)o(v)o(oids)g(this)h(problem)-1651 57 y(b)o(y)17 b(pro)o(viding)e(sp)q
(ecial)h(macros)g(for)g(the)g(argumen)o(ts)f(to)h @F8 @sf(signal)p @F14 @sf
(,)g(the)g(one)g(library)g(function)-1651 56 y(that)f(migh)o(t)f(see)i(a)e
(n)o(ull)h(function)g(p)q(oin)o(ter.)-763 107 y(The)j @F8 @sf(offsetof)f 
@F14 @sf(macro)f(has)i(b)q(een)g(added)g(to)f(pro)o(vide)g(a)g(p)q
(ortable)g(means)h(of)f(determining)-1651 56 y(the)i(o\013set,)e(in)h(b)o
(ytes,)g(of)f(a)h(mem)o(b)q(er)g(within)f(its)g(structure.)28 b(This)18 b
(capabilit)o(y)e(is)i(useful)g(in)-1651 57 y(programs,)f(suc)o(h)g(as)g
(are)g(t)o(ypical)f(in)h(data-base)g(implemen)o(tatio)o(ns,)f(whic)o(h)h
(declare)g(a)g(large)-1651 56 y(n)o(um)o(b)q(er)c(of)e(di\013eren)o(t)h
(data)f(structures:)18 b(it)11 b(is)h(desirable)f(to)h(pro)o(vide)f
(\\generic")h(routines)f(that)-1651 57 y(w)o(ork)g(from)h(descriptions)f
(of)g(the)h(structures,)g(rather)f(than)h(from)f(the)h(structure)g
(declarations)-1652 56 y(themselv)o(es.)p -16 w @F22 @sf(3)-244 47 y 660 
-2 z 52 27 a @F23 @sf(3)3 16 y @F20 @sf(Consider,)j(for)f(instance,)h(a)g
(set)g(of)f(no)q(des)i(\(structures\))f(whic)o(h)f(are)h(to)g(b)q(e)g
(dynamically)g(allo)q(cated)g(and)-1762 124 y
74 @eop1

75 @bop0
@F20 @sf
[<
FF00FFC01C001E0008001C0008001C00040038000400380006007800020070000200700001
FFE0000100E0000100E0000081C0000081C0000081C0000043800000438000004380000027
000000270000003F0000001E0000001E0000000C0000000C0000000C0000>
. 26 26 -1 25 29] 65 @dc
[<
03FFE000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C000000
1C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000801C
0080801C0080801C0080C01C0180401C0100401C0100701C07007FFFFF00>
. 25 26 -1 25 28] 84 @dc
[<
7F0FF00E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E
07000E07000E0700FFFFF00E07000E07000E07000E07000E07000E070006070407078E0183
C600FC7C>
. 23 26 0 25 22] 11 @dc
[<
306078F0F9F0B1608100810081004080408020401830>
. 12 11 -5 25 19] 92 @dc
[<
C18020401020102008100810081068D0F9F0F1E060C0>
. 12 11 -1 25 19] 34 @dc

75 @eop0

0 0 75 @bop1 112 50 a @F10 @sf(4.1.)35 b(In)o(tro)q(duction)1249 b @F14 @sf
(75)-1580 145 y(In)16 b(man)o(y)f(implemen)o(tati)o(ons,)f @F8 @sf
(offsetof)g @F14 @sf(could)h(b)q(e)h(de\014ned)g(as)f(one)g(of)-1137 100 y 
@F8 @sf(\(size_t\)&\(\(\(s_name)o(*\)0)p(\)->m)o(_name\))-933 99 y @F14 @sf
(or)150 100 y @F8 @sf(\(size_t\)\(char)22 b(*\)&\(\(\(s_name*\)0\)->m)o
(_n)p(ame\))-1124 99 y @F14 @sf(or,)14 b(where)g @F8 @sf(X)g @F14 @sf(is)g
(some)g(predeclared)g(address)h(\(or)e(0\))g(and)i @F8 @sf(A\(Z\))e @F14 @sf
(is)h(de\014ned)i(as)d @F8 @sf(\(\(char*\)&Z\))p @F14 @sf(,)-1461 100 y 
@F8 @sf(\(size_t\)\()23 b(A\()h(\(s_name*\)X->)o(m_name)e(\))i(-)f(A\()h
(X)g(\)\))-1218 99 y @F14 @sf(It)13 b(w)o(as)f(not)g(feasible,)g(ho)o(w)o
(ev)o(er,)g(to)g(mandate)g(an)o(y)h(single)f(one)g(of)h(these)f(forms)g
(as)g(a)h(construct)-1651 57 y(guaran)o(teed)i(to)g(b)q(e)h(p)q(ortable.)
-460 57 y(Other)g(implemen)o(tations)e(ma)o(y)h(c)o(ho)q(ose)h(to)f
(expand)h(this)g(macro)f(as)g(a)h(call)e(to)i(a)f(built-in)-1651 57 y
(function)h(that)e(in)o(terrogat)o(es)g(the)i(translat)o(or's)d(sym)o(b)q
(ol)i(table.)-1113 129 y @F6 @sf(4.1.6)56 b(Use)18 b(of)h(library)f
(functions)-752 88 y @F14 @sf(T)l(o)d(mak)o(e)f(usage)h(more)f(uniform)h
(for)f(b)q(oth)h(implemen)o(tor)e(and)i(programmer,)f(the)h(Standard)-1651 
56 y(requires)20 b(that)f(ev)o(ery)h(library)f(function)g(\(unless)h(sp)q
(eci\014cally)g(noted)g(otherwise\))e(m)o(ust)i(b)q(e)-1650 57 y(represen)o
(ted)e(as)f(an)h(actual)e(function,)h(in)g(case)h(a)f(program)f(wishes)h
(to)g(pass)g(its)f(address)i(as)-1651 56 y(a)e(parameter)f(to)g(another)g
(function.)21 b(On)16 b(the)g(other)f(hand,)h(ev)o(ery)f(library)f
(function)i(is)f(no)o(w)-1651 57 y(a)21 b(candidate)h(for)e(rede\014nition,)j
(in)e(its)f(asso)q(ciated)h(header,)h(as)f(a)g(macro,)h(pro)o(vided)f
(that)-1651 56 y(the)e(macro)e(p)q(erforms)h(a)f(\\safe")h(ev)m(aluation)f
(of)g(its)h(argumen)o(ts,)f(i.e.,)h(it)f(ev)m(aluates)h(eac)o(h)g(of)-1651 
57 y(the)f(argumen)o(ts)e(exactly)h(once)g(and)g(paren)o(thesizes)g(them)h
(thoroughly)l(,)e(and)h(pro)o(vided)g(that)-1651 56 y(its)21 b(top-lev)o
(el)g(op)q(erator)g(is)g(suc)o(h)h(that)e(the)i(execution)g(of)f(the)h
(macro)e(is)i(not)f(in)o(terlea)o(v)o(ed)-1652 57 y(with)15 b(other)h
(expressions.)k(Tw)o(o)15 b(exceptions)h(are)f(the)g(macros)g @F8 @sf
(getc)g @F14 @sf(and)h @F8 @sf(putc)p @F14 @sf(,)f(whic)o(h)g(ma)o(y)-1651 
56 y(ev)m(aluate)h(their)e(argumen)o(ts)h(in)g(an)g(unsafe)g(manner.)20 b
(\(See)c @F12 @sf(x)p @F14 @sf(4.9.7.)o(5.\))o -1155 58 a(If)11 b(a)g
(program)f(requires)h(that)f(a)h(library)f(facilit)o(y)f(b)q(e)j(implemen)o
(ted)f(as)g(an)g(actual)f(function,)-1651 56 y(not)17 b(as)g(a)g(macro,)g
(then)h(the)f(macro)f(name,)i(if)f(an)o(y)l(,)g(ma)o(y)f(b)q(e)i(erased)g
(b)o(y)f(using)g(the)g @F8 @sf(#undef)-1651 57 y @F14 @sf(prepro)q
(cessing)f(directiv)o(e)e(\(see)h @F12 @sf(x)q @F14 @sf(3.8.3\))o(.)-633 
57 y(All)i(library)g(protot)o(yp)q(es)g(are)g(sp)q(eci\014ed)i(in)f(terms)f
(of)h(the)g(\\widened")g(t)o(yp)q(es:)25 b(an)18 b(argu-)-1651 57 y(men)o
(t)j(formerly)f(declared)i(as)e @F8 @sf(char)h @F14 @sf(is)g(no)o(w)f
(written)g(as)h @F8 @sf(int)p @F14 @sf(.)37 b(This)21 b(ensures)h(that)e
(most)-1651 56 y(library)15 b(functions)h(can)g(b)q(e)h(called)f(with)f
(or)h(without)f(a)g(protot)o(yp)q(e)h(in)g(scop)q(e)g(\(see)g @F12 @sf(x)p 
@F14 @sf(3.3.2.2\))o(,)-1652 57 y(th)o(us)f(main)o(taining)e(bac)o(kw)o
(ards)h(compatibilit)o -1 x(y)f(with)h(existing,)g(pre-Standard,)h(co)q
(de.)20 b(Note,)-1651 56 y(ho)o(w)o(ev)o(er,)c(that)h(since)g(functions)f
(lik)o(e)g @F8 @sf(printf)g @F14 @sf(and)h @F8 @sf(scanf)f @F14 @sf(use)h
(v)m(ariable-length)f(argumen)o(t)-1651 57 y(lists,)e(they)h(m)o(ust)g(b)q
(e)h(called)f(in)g(the)g(scop)q(e)h(of)e(a)h(protot)o(yp)q(e.)-992 57 y
(The)j(Standard)f(con)o(tains)g(an)g(example)g(sho)o(wing)g(ho)o(w)g
(certain)g(library)f(functions)h(ma)o(y)-1651 57 y(b)q(e)f(\\built)f(in")f
(in)h(an)h(implemen)o(tati)o(on)e(that)h(remains)f @F11 @sf(c)n(onforming)p 
@F14 @sf(.)-1213 44 y 660 -2 z 43 w @F20 @sf(garbage-collected,)g(and)f
(whic)o(h)g(can)g(con)o(tain)g(p)q(oin)o(ters)g(to)g(other)g(suc)o(h)g(no)q
(des.)18 b(A)12 b(p)q(ossible)h(implemen)o(tation)-1650 46 y(is)g(to)f(ha)o
(v)o(e)h(the)f(\014rst)h(\014eld)g(in)f(eac)o(h)h(no)q(de)g(p)q(oin)o(t)g
(to)f(a)h(descriptor)g(for)f(that)g(no)q(de.)18 b(The)12 b(descriptor)h
(includes)g(a)-1650 46 y(table)g(of)g(the)g(o\013sets)h(of)e(\014elds)h
(whic)o(h)g(are)g(p)q(oin)o(ters)g(to)g(other)g(no)q(des.)18 b(A)13 b
(garbage-collector)g(\\mark")h(routine)-1650 45 y(needs)j(no)e(further)h
(information)f(ab)q(out)i(the)e(con)o(ten)o(t)h(of)f(the)h(no)q(de)g
(\(except,)g(of)f(course,)i(where)e(to)g(put)h(the)-1650 46 y(mark\).)25 b
(New)15 b(no)q(de)i(t)o(yp)q(es)f(can)g(b)q(e)g(added)h(to)e(the)h
(program)g(without)g(requiring)g(the)g(mark)f(routine)h(to)g(b)q(e)-1650 
46 y(rewritten)d(or)g(ev)o(en)h(recompiled.)905 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
75 @eop1

76 @bop0
/@F0 @newfont
@F0 @sf
[<
00000E00001F00007F0000FF0003FE0007FC001FF0003FE000FF8001FF0007FC000FF8003F
E0007FC000FF0000FE0000FF00007FC0003FE0000FF80007FC0001FF0000FF80003FE0001F
F00007FC0003FE0000FF00007F00001F00000E>
. 24 31 -3 33 31] 60 @dc
[<
03F00FE00FFE3FE03FFFFFE03FFFFFE07E03F8007800F800F0007800F0007800F0007800F0
007800780078007E0078003FE078000FFFF80003FFF800007FF80000007800000078000000
78000000F8001C01F0003E03F0003FFFE0003FFFC0001FFF000007FC0000>
. 27 26 -3 25 31] 97 @dc
[<
E1FE00E7FFC0FFFFF0FFFFF0FF01F8FC007CF8003CF0003CF0003C70003C0000F80003F000
FFE007FFC01FFF007FE0007C0000F000F0F000F0F000F0F801F07C03F07FFFF03FFFF00FFF
F003FC70>
. 22 26 -4 25 31] 115 @dc
[<
003F8001FFE003FFF00FFFF81FE07C1F803E3E001E7C001E780000780000F00000F00000FF
FFFEFFFFFEFFFFFEFFFFFE78001E78001E7C003C3C003C3F00781F81F80FFFF007FFE001FF
C0007F00>
. 23 26 -3 25 31] 101 @dc
[<
FFFFF000FFFFF000FFFFF000FFFFF00001E0000001E0000001E0000001E0000001E0000001
E0000001E0000001E0000001E0000001E0000001E0000001F0000001F0000001F0000001F8
000001FC000001FE038001FF87C0FFEFFFC0FFE7FFC0FFE1FF80FFE07E00>
. 26 26 -2 25 31] 114 @dc
[<
0007E000001FF800003FFC00007FFE00007C1F0000F80F0000F0078000F0078000F0078000
F0078000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0
000000F0000000F0000000F00000FFFFFE00FFFFFE00FFFFFE007FFFFE0000F0000000F000
0000F0000000F0000000F0000000F0000000700000>
. 25 33 -1 32 31] 116 @dc
[<
387CFEFEFE7C38>
. 7 7 -12 6 31] 46 @dc
[<
FFFC7FF0FFFC7FF0FFFC7FF0FFFC7FF007801E0007801E0007801E0007801E0007801E0007
801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007C0
1E0007C01E0007E01E0007F83C0007FFFC0007BFF800079FF0000787E00007800000078000
000780000007800000078000000780000007800000FF800000FF800000FF800000FF800000
>
. 28 37 -1 36 31] 104 @dc
[<
700000F80000FE0000FF00007FC0003FE0000FF80007FC0001FF0000FF80003FE0001FF000
07FC0003FE0000FF00007F0000FF0003FE0007FC001FF0003FE000FF8001FF0007FC000FF8
003FE0007FC000FF0000FE0000F80000700000>
. 24 31 -3 33 31] 62 @dc
@F4 @sf
[<
FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE03FC00007F8003FC00007F8003FC00007F8003
FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC
00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00
007F8003FC00007F8003FFFFFFFF8003FFFFFFFF8003FFFFFFFF8003FC00007F8003FC0000
7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F80
03FC00007F80FFFFF01FFFFEFFFFF01FFFFEFFFFF01FFFFE>
. 47 41 -3 40 54] 72 @dc
@F0 @sf
[<
007E0001FF8007FFE00FFFE01FC1F03F00F83E00787C0078780000F80000F00000F00000F0
0000F00000F00000F00000F800007800007800003C00003E00701F80F80FFFF807FFF801FF
F0007FC0>
. 21 26 -5 25 31] 99 @dc
[<
0F8000003FC000007FE000007FF000007CF800007C3C0000381C0000001C0000000E000000
0E0000000E000000070000000700000007000000078000000F8000000F8000001DC000001D
C000001CC0000038E0000038E0000038E000007070000070700000F0700000E0380000E038
0001C0380001C03C0001C01C0003801C0003801E0007800E0007000E007FE07FE0FFF0FFF0
FFF0FFF07FE07FE0>
. 28 39 -1 25 31] 121 @dc
[<
FFFC0000FFFC0000FFFC0000FFFC0000078000000780000007800000078000000780000007
8000000780000007800000078000000787E000079FF80007BFFC0007FFFE0007F83F0007E0
0F8007C0078007C007C0078003C0078003E0078001E0078001E0078001E0078001E0078001
E0078001E0078003E0078003C007C003C007C0078007E00F8007F83F00FFFFFF00FFBFFE00
FF9FF800FF83E000>
. 27 39 -1 25 31] 112 @dc

76 @eop0

0 0 76 @bop1 112 50 a @F14 @sf(76)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F4 @sf(4.2)70 b(Diagnostics)-342 75 y @F0 @sf
(<asser)q(t.)q(h>)-469 103 y @F6 @sf(4.2.1)56 b(Program)18 b(diagnostics)
-672 86 y @F9 @sf(4.2.1.1)52 b(The)18 b @F8 @sf(assert)e @F9 @sf(macro)-608 
86 y @F14 @sf(Some)j(implemen)o(tations)e(tolerate)h(an)h(arbitrary)e
(scalar)h(expression)h(as)f(the)h(argumen)o(t)f(to)-1651 56 y @F8 @sf
(assert)p @F14 @sf(,)g(but)h(the)f(Committee)g(decided)h(to)f(require)g
(correct)g(op)q(eration)f(only)h(for)g @F8 @sf(int)g @F14 @sf(ex-)-1650 
56 y(pressions.)32 b(F)l(or)18 b(the)h(sak)o(e)g(of)g(implemen)o(tors,)f
(no)h(hard)h(and)f(fast)f(format)g(for)g(the)i(output)-1651 57 y(of)d(a)f
(failing)f(assertion)g(is)h(required;)h(but)f(the)h(Standard)f(mandates)g
(enough)h(mac)o(hinery)f(to)-1651 56 y(replicate)f(the)g(form)g(sho)o(wn)g
(in)g(the)g(fo)q(otnote.)-747 57 y(It)d(can)g(b)q(e)g(di\016cult)g(or)f
(imp)q(ossible)g(to)g(mak)o(e)g @F8 @sf(assert)g @F14 @sf(a)h(true)f
(function,)h(so)g(it)f(is)g(restricted)-1651 56 y(to)k(macro)g(form)f
(only)l(.)-323 57 y(T)l(o)h(minimize)g(the)h(n)o(um)o(b)q(er)g(of)f
(di\013eren)o(t)g(metho)q(ds)h(for)f(program)f(termination,)g @F8 @sf
(assert)-1651 56 y @F14 @sf(is)h(no)o(w)g(de\014ned)h(in)f(terms)g(of)g
(the)g @F8 @sf(abort)g @F14 @sf(function.)-847 57 y(Note)i(that)f(de\014ning)i
(the)f(macro)f @F8 @sf(NDEBUG)g @F14 @sf(to)h(disable)f(assertions)g(ma)o
(y)g(c)o(hange)h(the)h(b)q(e-)-1650 56 y(ha)o(vior)c(of)h(a)f(program)g
(with)g(no)h(failing)e(assertion)h(if)h(an)o(y)f(argumen)o(t)g(expression)h
(to)f @F8 @sf(assert)-1651 57 y @F14 @sf(has)i(side-e\013ects,)e(b)q
(ecause)i(the)g(expression)f(is)f(no)i(longer)e(ev)m(aluated.)-1164 56 y
(It)f(is)g(p)q(ossible)g(to)g(turn)g(assertions)f(o\013)h(and)g(on)g(in)h
(di\013eren)o(t)e(functions)h(within)g(a)g(transla-)-1652 56 y(tion)i
(unit)f(b)o(y)h(de\014ning)h(\(or)e(unde\014ning\))i @F8 @sf(NDEBUG)e 
@F14 @sf(and)h(including)g @F8 @sf(<assert.h>)e @F14 @sf(again.)19 b(The)
-1650 57 y(implemen)o(tation)g(of)h(this)f(b)q(eha)o(vior)h(in)g @F8 @sf
(<assert.h>)e @F14 @sf(is)i(simple:)29 b(unde\014ne)22 b(an)o(y)e
(previous)-1651 56 y(de\014nition)15 b(of)f @F8 @sf(assert)f @F14 @sf(b)q
(efore)i(pro)o(viding)e(the)i(new)f(one.)20 b(Th)o(us)14 b(the)h(header)f
(migh)o(t)g(lo)q(ok)f(lik)o(e)-1460 92 y @F8 @sf(#undef)23 b(assert)-311 
57 y(#ifdef)g(NDEBUG)-287 56 y(#define)g(assert\(ignore\))46 b(\(\(void\))
23 b(0\))-836 57 y(#else)-96 56 y(extern)g(void)h(__gripe\(char)o 23 x
(*_Expr,)f(char)g(*_File,)g(int)g(_Line\);)-1361 57 y(#define)g
(assert\(expr\))f(\\)-477 56 y(\()i(\(expr\)?)f(\(void\)0)g(:)g
(__gripe\(#expr,)f(__FILE__,)h(__LINE__\))f(\))-1408 57 y(#endif)-335 92 y 
@F14 @sf(Note)16 b(that)e @F8 @sf(assert)h @F14 @sf(m)o(ust)g(expand)h(to)e
(a)h(v)o(oid)g(expression,)g(so)g(the)g(more)g(ob)o(vious)g @F8 @sf(if)g 
@F14 @sf(state-)-1651 56 y(men)o(t)i(do)q(es)g(not)g(su\016ce)g(as)g(a)g
(de\014nition)f(of)h @F8 @sf(assert)p @F14 @sf(.)24 b(Note)17 b(also)f
(the)h(a)o(v)o(oidance)f(of)g(names)-1650 57 y(in)g(a)e(header)i(whic)o(h)f
(w)o(ould)g(con\015ict)g(with)f(the)i(user's)e(name)i(space)f(\(see)g 
@F12 @sf(x)p @F14 @sf(3.1.2.1\))o(.)-1483 143 y @F4 @sf(4.3)70 b
(Character)23 b(Handling)-596 74 y @F0 @sf(<ctype)q(.h)q(>)-438 102 y 
@F14 @sf(P)o(ains)18 b(w)o(ere)h(tak)o(en)f(to)g(eliminate)f(an)o(y)i
(ASCI)q(I)g(dep)q(end)q(encies)h(from)e(the)h(de\014nition)f(of)g(the)-1650 
56 y(c)o(haracter)d(handling)h(functions.)k(One)d(notable)e(result)g(of)g
(this)g(p)q(olicy)g(w)o(as)g(the)g(elimination)-1652 57 y(of)c(the)g
(function)g @F8 @sf(isascii)p @F14 @sf(,)g(b)q(oth)g(b)q(ecause)h(of)f
(the)g(name)g(and)h(b)q(ecause)g(its)e(function)h(w)o(as)f(hard)-1650 56 y
(to)j(generalize.)19 b(Nev)o(ertheless,)13 b(the)h(c)o(haracter)f
(functions)g(are)g(often)g(most)g(clearly)f(explained)-1650 57 y(in)k
(concrete)f(terms,)f(so)h(ASCI)q(I)h(is)f(used)h(frequen)o(tly)f(to)f
(express)i(examples.)-1454 124 y
76 @eop1

77 @bop0
@F10 @sf
[<
FFCFF81E03C01C03800E01C00E01C00E01C00E01C00E01C00E01C00700E00700E00700E007
00E00700E00780E003806003C06003A0E00390E0038F8003800001C00001C00001C00001C0
0001C00001C00000E00000E00001E00007E00000E000>
. 21 32 -2 31 25] 104 @dc
[<
FFF8FFF80007C00F800007800F000003C007800003C007800003C007800003C007800003C0
07800003C007800001E003C00001E003C00001E003C00001E003C00001E003C00001E003C0
0000F001E00000FFFFE00000F001E00000F001E00000F001E00000F001E000007800F00000
7800F000007800F000007800F000007800F000007800F000003C007800003C007800007C00
F80007FFC7FFC0>
. 34 31 -2 30 34] 72 @dc
@F12 @sf
[<
FFFFFFC0FFFFFFC0>
. 26 2 -4 12 35] 0 @dc

77 @eop0

0 0 77 @bop1 112 50 a @F10 @sf(4.3.)35 b(Character)14 b(Handling)h @F8 @sf
(<ctype.h>)874 b @F14 @sf(77)-1580 145 y(Since)21 b(these)f(functions)h
(are)f(often)g(used)h(primarily)o 19 x(as)f(macros,)h(their)f(domain)f(is)h
(re-)-1650 57 y(stricted)c(to)f(the)g(small)g(p)q(ositiv)o(e)f(in)o
(tegers)h(represen)o(table)h(in)f(an)h @F8 @sf(unsigned)23 b(char)p @F14 @sf
(,)15 b(plus)g(the)-1650 56 y(v)m(alue)j(of)f @F8 @sf(EOF)p @F14 @sf(.)f 
@F8 @sf(EOF)h @F14 @sf(is)g(traditional)o(ly)f @F12 @sf(\000)p @F14 @sf
(1,)h(but)g(ma)o(y)g(b)q(e)h(an)o(y)f(negativ)o(e)f(in)o(teger,)h(and)g
(hence)-1649 56 y(distinguishable)c(from)f(an)o(y)h(v)m(alid)g(c)o
(haracter)f(co)q(de.)20 b(These)13 b(macros)g(ma)o(y)f(th)o(us)h(b)q(e)h
(e\016cien)o(tly)-1651 57 y(implemen)o(ted)h(b)o(y)h(using)e(the)i
(argumen)o(t)e(as)h(an)g(index)h(in)o(to)e(a)h(small)f(arra)o(y)g(of)g
(attributes.)-1532 60 y(The)f(Standard)g(\()p @F12 @sf(x)p @F14 @sf
(4.13.1\))e(w)o(arns)i(that)f(names)h(b)q(eginning)g(with)g @F8 @sf(is)f 
@F14 @sf(and)i @F8 @sf(to)p @F14 @sf(,)f(when)g(these)-1650 57 y(are)23 b
(follo)o(w)n(ed)f(b)o(y)h(lo)o(w)o(er-case)f(letters,)h(are)g(sub)s(ject)f
(to)h(future)f(use)i(in)e(adding)h(items)f(to)-1651 56 y @F8 @sf
(<ctype.h>)p @F14 @sf(.)-229 144 y @F6 @sf(4.3.1)56 b(Character)19 b
(testing)e(functions)-842 94 y @F14 @sf(The)i(de\014nitions)g(of)f @F11 @sf
(printing)h(char)n(acter)24 b @F14 @sf(and)18 b @F11 @sf(c)n(ontr)n(ol)h
(char)n(acter)24 b @F14 @sf(ha)o(v)o(e)18 b(b)q(een)i(generalized)-1651 
56 y(from)15 b(ASCI)q(I.)-175 61 y(Note)c(that)g(none)g(of)g(these)h
(functions)f(returns)g(a)g(nonzero)g(v)m(alue)h(\(true\))e(for)h(the)g
(argumen)o(t)-1651 56 y(v)m(alue)16 b @F8 @sf(EOF)p @F14 @sf(.)-203 142 y 
@F9 @sf(4.3.1.1)52 b(The)18 b @F8 @sf(isalnum)e @F9 @sf(function)-679 94 y
(4.3.1.2)52 b(The)18 b @F8 @sf(isalpha)e @F9 @sf(function)-679 93 y @F14 @sf
(The)f(Standard)e(sp)q(eci\014es)i(that)e(the)h(set)g(of)f(letters,)g(in)h
(the)g(default)f @F11 @sf(lo)n(c)n(ale)p @F14 @sf(,)g(comprises)g(the)h
(26)-1651 57 y(upp)q(er-case)j(and)f(26)f(lo)o(w)o(er-case)g(letters)g(of)g
(the)h(Latin)f(\(English\))f(alphab)q(et.)21 b(This)16 b(set)f(ma)o(y)-1651 
56 y(v)m(ary)j(in)g(a)g @F11 @sf(lo)n(c)n(ale-sp)n(e)m(ci\014c)e @F14 @sf
(fashion)h(\(that)g(is,)h(under)g(con)o(trol)f(of)g(the)h @F8 @sf
(setlocale)f @F14 @sf(function,)-1651 57 y @F12 @sf(x)q @F14 @sf(4.4\))d
(so)g(long)h(as)-238 109 y @F12 @sf(\017)22 b @F8 @sf(isupper\(c\))14 b 
@F14 @sf(implies)g @F8 @sf(isalpha\(c\))-693 110 y @F12 @sf(\017)22 b 
@F8 @sf(islower\(c\))14 b @F14 @sf(implies)g @F8 @sf(isalpha\(c\))-693 109 y 
@F12 @sf(\017)22 b @F8 @sf(isspace\(c\))p @F14 @sf(,)14 b @F8 @sf
(ispunct\(c\))p @F14 @sf(,)o 14 x @F8 @sf(iscntrl\(c\))p @F14 @sf(,)f(or)i 
@F8 @sf(isdigit\(c\))f @F14 @sf(implies)g @F8 @sf(!isalpha\(c\))-1641 143 y 
@F9 @sf(4.3.1.3)52 b(The)18 b @F8 @sf(iscntrl)e @F9 @sf(function)-679 93 y
(4.3.1.4)52 b(The)18 b @F8 @sf(isdigit)e @F9 @sf(function)-679 93 y
(4.3.1.5)52 b(The)18 b @F8 @sf(isgraph)e @F9 @sf(function)-679 94 y
(4.3.1.6)52 b(The)18 b @F8 @sf(islower)e @F9 @sf(function)-679 93 y
(4.3.1.7)52 b(The)18 b @F8 @sf(isprint)e @F9 @sf(function)-679 94 y
(4.3.1.8)52 b(The)18 b @F8 @sf(ispunct)e @F9 @sf(function)-679 93 y
(4.3.1.9)52 b(The)18 b @F8 @sf(isspace)e @F9 @sf(function)-679 94 y @F8 @sf
(isspace)f @F14 @sf(is)f(widely)h(used)h(within)e(the)i(library)e(as)g
(the)i(w)o(orking)d(de\014nition)i(of)g(white)g(space.)-246 124 y @F15 @sf
(RA)m(TIONALE)-1763 b
77 @eop1

78 @bop0
@F9 @sf
[<
01FC0007FF001F8FC01E03C03E03E07C01F07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC
01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C01F07C01F03E03
E01E03C01F07C007FF0001FC00>
. 21 29 -2 28 26] 48 @dc
@F0 @sf
[<
FFFFFFFFFFFFFFFFFFFFFFFF003C00003C00003C00003C00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
00003C00003C00003C00003C00003C00003C00003C00003C00FFFC00FFFC00FFFC00FFFC00
>
. 24 37 -3 36 31] 108 @dc
[<
00FC0003FF0007FF801FFFE01F87E03E01F07C00F87C00F8780078F8007CF0003CF0003CF0
003CF0003CF0003CF0003CF0003C7800787800787C00F83E01F01F87E01FFFE007FF8003FF
0000FC00>
. 22 26 -4 25 31] 111 @dc
@F14 @sf
[<
FE3E000E73800E71C00E71E00E00E00E00F00E00F00E00F00E00F00E00F00E00F00E00F00E
00E00E01E00E01C00E01C00E03800E03000E0E00FE38000E0E000E07000E03800E03C00E03
C00E03C00E03C00E03C0060380030700018E0000FC00>
. 20 32 -1 31 23] 25 @dc
@F14 @sf
[<
387CFCFCB8808080404020201008>
. 6 14 -3 31 13] 96 @dc

78 @eop0

0 0 78 @bop1 112 50 a @F14 @sf(78)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F9 @sf(4.3.1.10)52 b(The)18 b @F8 @sf
(isupper)e @F9 @sf(function)-705 86 y(4.3.1.11)52 b(The)18 b @F8 @sf
(isxdigit)e @F9 @sf(function)-729 87 y @F6 @sf(4.3.2)56 b(Character)19 b
(case)f(mapping)h(functions)-1006 86 y @F14 @sf(Earlier)14 b(libraries)g
(had)i(\(almost)d(equiv)m(alen)o(t\))i(macros,)i 14 -2 z 15 x @F8 @sf
(tolower)d @F14 @sf(and)k 14 -2 z 15 x @F8 @sf(toupper)p @F14 @sf(,)13 b
(for)i(these)-1650 57 y(functions.)29 b(The)19 b(Standard)f(no)o(w)f(p)q
(ermits)h(an)o(y)g(library)f(function)h(to)g(b)q(e)h(additionall)o(y)e
(im-)-1651 56 y(plemen)o(ted)e(as)g(a)f(macro;)g(the)h(underlying)f
(function)h(m)o(ust)f(still)f(b)q(e)j(presen)o(t.)22 b 14 -2 z 15 x @F8 @sf
(toupper)13 b @F14 @sf(and)-1650 57 y 14 -2 z 15 x @F8 @sf(tolower)j 
@F14 @sf(are)h(th)o(us)g(unnecessary)h(and)f(w)o(ere)g(dropp)q(ed)h(as)f
(part)f(of)h(the)g(general)g(standard-)-1651 56 y(ization)d(of)h(library)f
(macros.)-502 118 y @F9 @sf(4.3.2.1)52 b(The)18 b @F8 @sf(tolower)e @F9 @sf
(function)-679 86 y(4.3.2.2)52 b(The)18 b @F8 @sf(toupper)e @F9 @sf
(function)-679 104 y @F4 @sf(4.4)70 b(Lo)r(calization)-361 75 y @F0 @sf
(<local)q(e.)q(h>)-469 101 y @F14 @sf(C)16 b(has)f(b)q(ecome)i(an)e(in)o
(ternational)f(language.)20 b(Users)c(of)f(the)h(language)e(outside)i(the)f
(United)-1650 57 y(States)h(ha)o(v)o(e)f(b)q(een)i(forced)f(to)f(deal)g
(with)g(the)h(v)m(arious)f(Americanisms)g(built)g(in)o(to)g(the)h(stan-)
-1651 56 y(dard)g(library)e(routines.)-357 56 y(Areas)h(a\013ected)g(b)o
(y)g(in)o(ternational)o 14 x(considerations)f(include:)-1149 84 y @F9 @sf
(Alphab)q(et.)23 b @F14 @sf(The)16 b(English)f(language)g(uses)h(26)g
(letters)f(deriv)o(ed)g(from)g(the)h(Latin)g(alphab)q(et.)-1537 56 y(This)g
(set)f(of)h(letters)f(su\016ces)h(for)g(English,)f(Sw)o(ahili,)o 15 x(and)h
(Ha)o(w)o(aiia)o(n;)f(all)g(other)h(living)-1538 57 y(languages)g(use)h
(either)f(the)h(Latin)f(alphab)q(et)h @F11 @sf(plus)f @F14 @sf(other)h(c)o
(haracters,)f(or)g(other,)g(non-)-1536 56 y(Latin)f(alphab)q(ets)g(or)g
(syllabaries.)o -604 73 a(In)j(English,)f(eac)o(h)g(letter)g(has)g(an)g
(upp)q(er-case)i(and)f(lo)o(w)o(er-case)e(form.)25 b(The)18 b(German)-1537 
56 y(\\sharp)f(S",)g(\031,)g(o)q(ccurs)g(only)g(in)g(lo)o(w)o(er-case.)25 b
(Europ)q(ean)18 b(F)l(renc)o(h)f(usually)g(omits)f(dia-)-1537 57 y
(criticals)c(on)h(upp)q(er-case)h(letters.)k(Some)13 b(languages)f(do)h
(not)g(ha)o(v)o(e)f(the)i(concept)f(of)g(t)o(w)o(o)-1538 56 y(cases.)-226 
90 y @F9 @sf(Collation.)22 b @F14 @sf(In)c(b)q(oth)g(EBCDIC)f(and)g(ASCI)q
(I)i(the)e(co)q(de)h(for)f(`z')g(is)g(greater)f(than)h(the)h(co)q(de)-1536 
56 y(for)e(`a',)f(and)i(so)f(on)g(for)g(other)g(letters)g(in)g(the)h
(alphab)q(et,)f(so)g(a)g(\\mac)o(hine)g(sort")f(giv)o(es)-1537 57 y(not)
22 b(unreasonable)g(results)f(for)g(ordering)g(strings.)39 b(In)23 b(con)o
(trast,)f(most)f(Europ)q(ean)-1536 56 y(languages)d(use)i(a)e(co)q(deset)i
(resem)o(bling)e(ASCI)q(I)i(in)f(whic)o(h)g(some)g(of)f(the)h(co)q(des)h
(used)-1536 57 y(in)c(ASCI)q(I)i(for)d(punctuation)i(c)o(haracters)e(are)h
(used)h(for)f(alphab)q(etic)g(c)o(haracters.)22 b(\(See)-1536 56 y @F12 @sf
(x)p @F14 @sf(2.2.1.\))34 b(The)21 b(ordering)f(of)g(these)h(co)q(des)g
(is)f(not)g(alphab)q(etic.)36 b(In)21 b(some)f(languages)-1537 57 y
(letters)12 b(with)f(diacritics)h(sort)f(as)h(separate)g(letters;)g(in)g
(others)g(they)h(should)f(b)q(e)h(collated)-1537 56 y(just)k(as)f(the)h
(unmark)o(ed)f(form.)24 b(In)17 b(Spanish,)g(\\ll")e(sorts)h(as)g(a)h
(single)f(letter)g(follo)o(w)o(ing)-1538 57 y(\\l";)e(in)h(German,)f(\\\031")h
(sorts)f(lik)o(e)g(\\ss".)-811 89 y @F9 @sf(F)l(ormatting)j(of)h(n)o(um)o
(b)q(ers)e(and)i(currency)e(amoun)o(ts.)22 b @F14 @sf(In)15 b(the)f
(United)h(States)e(the)i(p)q(e-)-1536 57 y(rio)q(d)20 b(is)g(in)o(v)m
(ariably)f(used)j(for)d(the)i(decimal)f(p)q(oin)o(t;)i(this)e(usage)g(w)o
(as)g(built)g(in)o(to)f(the)-1536 56 y(de\014nitions)d(of)f(suc)o(h)h
(functions)f(as)h @F8 @sf(printf)e @F14 @sf(and)i @F8 @sf(scanf)p @F14 @sf
(.)21 b(Prev)m(alen)o(t)15 b(practice)h(in)f(sev-)-1536 57 y(eral)j(ma)s
(jor)f(Europ)q(ean)i(coun)o(tries)f(is)g(to)g(use)h(a)g(comma;)g(a)f
(raised)g(dot)h(is)f(emplo)o(y)o(ed)-1763 124 y
78 @eop1

79 @bop0
@F10 @sf
[<
FFFE00700E003803001C01001C01000E008007008003808001C00000E00000700000700000
3800101C00080E000807000C03800401C00701E007FFE0>
. 19 20 -1 19 20] 122 @dc

79 @eop0

0 0 79 @bop1 112 50 a @F10 @sf(4.4.)35 b(Lo)q(calization)13 b @F8 @sf
(<locale.h>)1002 b @F14 @sf(79)-1537 145 y(in)17 b(some)f(lo)q(cales.)23 b
(Similarly)l(,)15 b(in)i(the)g(United)f(States)g(a)h(comma)f(is)g(used)h
(to)f(separate)-1537 57 y(groups)j(of)h(three)f(digits)g(to)g(the)g(left)g
(of)h(the)f(decimal)g(p)q(oin)o(t;)i(a)f(p)q(erio)q(d)g(is)f(common)-1537 
56 y(in)e(Europ)q(e,)g(and)g(in)f(some)g(coun)o(tries)g(digits)g(are)g
(not)h(group)q(ed)g(b)o(y)f(threes.)25 b(In)17 b(prin)o(t-)-1537 56 y(ing)j
(currency)i(amoun)o(ts,)f(the)g(currency)g(sym)o(b)q(ol)f(\(whic)o(h)h(ma)o
(y)f(b)q(e)h(more)g(than)f(one)-1536 57 y(c)o(haracter\))14 b(ma)o(y)h
(precede,)h(follo)n(w,)e(or)g(b)q(e)i(em)o(b)q(edded)h(in)e(the)g(digits.)
-1336 94 y @F9 @sf(Date)k(and)f(time.)j @F14 @sf(The)e(standard)f
(function)g @F8 @sf(asctime)f @F14 @sf(returns)i(a)f(string)f(whic)o(h)h
(includes)-1536 56 y(abbreviations)11 b(for)h(mon)o(th)f(and)h(w)o(eekda)o
(y)g(names,)h(and)f(returns)g(the)g(v)m(arious)g(elemen)o(ts)-1537 57 y
(in)j(a)g(format)f(whic)o(h)h(migh)o(t)f(b)q(e)i(considered)f(un)o(usual)h
(ev)o(en)f(in)g(its)g(coun)o(try)f(of)h(origin.)-1518 75 y(V)l(arious)g
(common)f(date)h(formats)f(include)-754 112 y(1776-07-04)292 b(ISO)16 b(F)l
(ormat)-744 56 y(4.7.76)388 b(customary)37 b(cen)o(tral)g(Europ)q(ean)h
(and)-719 57 y(British)14 b(usage)-766 48 y(7/4/76)368 b(customary)14 b
(U.S.)h(usage)-936 56 y(4.VI)q(I.76)344 b(Italian)14 b(usage)-760 57 y
(76186)391 b(Julian)15 b(date)g(\(YYDDD\))-953 56 y(04JUL76)329 b(airli)o
(ne)15 b(usage)-754 57 y(Th)o(ursda)o(y)l(,)g(July)g(4,)g(1776)50 b(full)
14 b(U.S.)h(format)-819 56 y(Donnerstag,)f(4.)19 b(Juli)c(1776)g(full)f
(German)h(format)-894 169 y(Time)g(formats)f(are)g(also)h(quite)g(div)o
(erse:)-717 112 y(3:30)f(PM)337 b(customary)14 b(U.S.)h(and)g(British)f
(format)-1200 56 y(1530)414 b(U.S.)14 b(military)f(format)-912 57 y
(15h.30)376 b(Italian)14 b(usage)-760 56 y(15.30)401 b(German)14 b(usage)
-789 57 y(15:30)401 b(common)14 b(Europ)q(ean)i(usage)-1117 168 y(The)j
(Committ)o(ee)e(has)h(in)o(tro)q(duced)g(mec)o(hanisms)g(in)o(to)e(the)i
(C)g(library)f(to)g(allo)o(w)f(these)i(and)-1650 57 y(other)d(issues)g(to)g
(b)q(e)h(treated)e(in)h(the)h(appropriate)e @F11 @sf(lo)n(c)n(ale-sp)n(e)n
(ci)o(\014c)g @F14 @sf(manner.)-1266 56 y(The)h(lo)q(calization)f
(features)g(of)h(the)h(Standard)f(are)g(based)g(on)g(these)h(principles:)
-1489 94 y @F9 @sf(English)h(for)g(C)g(source.)22 b @F14 @sf(The)g(C)e
(language)h(prop)q(er)g(is)g(based)g(on)h(English.)37 b(Keyw)o(ords)-1537 
56 y(are)17 b(based)h(on)f(English)f(w)o(ords.)25 b(A)17 b(program)f(whic)o
(h)i(uses)f(\\national)e(c)o(haracters")i(in)-1537 57 y(iden)o(ti\014ers)d
(is)f(not)h(strictly)f(conforming.)18 b(\(Use)c(of)g(national)f(c)o
(haracters)g(in)h(commen)o(ts)-1537 56 y(is)i(strictly)e(conforming,)h
(though)h(what)g(happ)q(ens)h(when)g(suc)o(h)f(a)g(program)f(is)h(prin)o
(ted)-1537 56 y(in)f(a)h(di\013eren)o(t)e(lo)q(cale)h(is)g(unsp)q
(eci\014ed.\))22 b(The)16 b(decimal)f(p)q(oin)o(t)g(m)o(ust)g(b)q(e)h(a)f
(p)q(erio)q(d)h(in)g(C)-1537 57 y(source,)f(and)g(no)h(thousands)f
(delimiter)f(ma)o(y)g(b)q(e)i(used.)-1086 94 y @F9 @sf(Run)o(time)h
(selectabilit)o(y)-5 b(.)21 b @F14 @sf(The)32 b(lo)q(cale)f(m)o(ust)g(b)q
(e)h(selectable)g(at)f(run)o(time,)k(from)30 b(an)-1536 56 y(implemen)o
(tation-de\014ned)17 b(set)f(of)g(p)q(ossibilities.)23 b(T)l
(ranslate-time)15 b(selection)h(do)q(es)h(not)-1537 57 y(o\013er)i
(su\016cien)o(t)h(\015exibilit)o(y)l(.)32 b(Soft)o(w)o(are)18 b(v)o
(endors)i(do)g(not)f(w)o(an)o(t)g(to)g(supply)h(di\013eren)o(t)-252 124 y 
@F15 @sf(RA)m(TIONALE)-1763 b
79 @eop1

80 @bop0
@F9 @sf
[<
3FF8FFF0003FF8FFF00007C01F000007C01F000007C01F000007C01F000007C01F000007C0
1F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F00
0007C01F000007C01F000007C01F0000FFFFFFF800FFFFFFF80007C01F000007C01F000007
C01F000007C01F000007C01F000007C03F078007C07F0FC003E07F0FC001E07F8FC000F83F
C7C0007FF9FF80000FF07F00>
. 34 32 0 31 30] 11 @dc
@F4 @sf
[<
FFFE007801FFFFC0FFFE007801FFFFC0FFFE00FC01FFFFC0038000FC0007F000038000FC00
07F000038001FE0007F000038001FE0007F000038003FF0007F000038003FF0007F0000380
07F38007F000038007F38007F00003800FE1C007F00003800FE1C007F00003800FE1C007F0
0003801FC0E007F00003801FC0E007F00003803F807007F00003803F807007F00003807F00
3807F00003807F003807F0000380FF003807F0000380FE001C07F0000380FE001C07F00003
81FC000E07F0000381FC000E07F0000383F8000707F0000383F8000707F0000387F0000387
F0000387F0000387F0000387F0000387F000038FE00001C7F000038FE00001C7F000039FC0
0000E7F000039FC00000E7F00003BF80000077F00003BF80000077F00003FF0000003FF000
03FF0000003FF000FFFF0000003FFFC0FFFE0000001FFFC0FFFE0000001FFFC0>
. 58 41 -3 40 65] 77 @dc
@F0 @sf
[<
FF8FF1FEFF9FF3FEFF9FF3FEFF8FF1FE1C0380701C0380701C0380701C0380701C0380701C
0380701C0380701C0380701C0380701C0380701C0380701C0380701C0380701C0380701E03
C0701E03C0701F03E0701F87F0F0FFFFFFE0FFFF7FE0FDFE3FC0FC780F00>
. 31 26 0 25 31] 109 @dc

80 @eop0

0 0 80 @bop1 112 50 a @F14 @sf(80)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1535 145 y @F14 @sf(ob)s(ject)16 b(forms)g(of)g(their)g
(programs)f(in)i(di\013eren)o(t)e(lo)q(cales.)24 b(Users)16 b(do)h(not)f
(w)o(an)o(t)f(to)h(use)-1536 57 y(di\013eren)o(t)i(v)o(ersions)g(of)g(a)h
(program)f(just)g(b)q(ecause)i(they)f(deal)f(with)g(sev)o(eral)g(di\013eren)o
(t)-1537 56 y(lo)q(cales.)-258 98 y @F9 @sf(F)l(unction)g(in)o(terface.)k 
@F14 @sf(Lo)q(cale)12 b(is)h(c)o(hanged)g(b)o(y)g(calling)e(a)i(function,)g
(th)o(us)f(allo)o(wing)f(the)i(im-)-1537 57 y(plemen)o(tation)f(to)g
(recognize)h(the)g(c)o(hange,)h(rather)e(than)h(b)o(y)l(,)g(sa)o(y)l(,)g
(c)o(hanging)f(a)h(memory)-1537 56 y(lo)q(cation)h(that)h(con)o(tains)f
(the)h(decimal)g(p)q(oin)o(t)f(c)o(haracter.)-1124 99 y @F9 @sf(Immediate)j
(e\013ect.)23 b @F14 @sf(When)e(a)f(new)g(lo)q(cale)g(is)g(selected,)h
(a\013ected)f(functions)g(re\015ect)g(the)-1536 56 y(c)o(hange)14 b
(immediately)l(.)k(\(This)13 b(is)h(not)f(mean)o(t)h(to)f(imply)g(if)g(a)h
(signal-handling)f(function)-1537 57 y(w)o(ere)k(to)g(c)o(hange)g(the)h
(selected)g(lo)q(cale)e(and)i(return)f(to)g(a)g(library)f(function,)i
(that)e(the)-1536 56 y(return)11 b(v)m(alue)f(from)g(that)g(library)f
(function)i(m)o(ust)f(b)q(e)h(completely)f(correct)g(with)g(resp)q(ect)-1536 
57 y(to)15 b(the)g(new)g(lo)q(cale.\))-485 128 y @F6 @sf(4.4.1)56 b(Lo)r
(cale)17 b(con)n(trol)-518 88 y @F9 @sf(4.4.1.1)52 b(The)18 b @F8 @sf
(setlocale)e @F9 @sf(function)-727 88 y @F8 @sf(setlocale)g @F14 @sf(pro)o
(vides)g(the)g(mec)o(hanism)h(for)f(con)o(troll)o(ing)f @F11 @sf(lo)n(c)n
(ale-sp)n(e)n(ci\014)o(c)g @F14 @sf(features)h(of)g(the)h(li-)-1651 56 y
(brary)l(.)k(The)15 b @F8 @sf(category)g @F14 @sf(argumen)o(t)f(allo)o(ws)g
(parts)g(of)h(the)h(library)e(to)h(b)q(e)h(lo)q(calized)f(as)g(neces-)-1650 
57 y(sary)e(without)f(c)o(hanging)g(the)i(en)o(tire)e(lo)q(cale-sp)q
(eci\014c)h(en)o(vironmen)o(t.)19 b(Sp)q(ecifying)13 b(the)g @F8 @sf
(locale)-1651 56 y @F14 @sf(argumen)o(t)18 b(as)g(a)g(string)f(giv)o(es)h
(an)g(implemen)o(tatio)o(n)f(maxim)o(um)h(\015exibilit)o(y)e(in)j(pro)o
(viding)e(a)-1651 57 y(set)e(of)f(lo)q(cales.)19 b(F)l(or)14 b(instance,)h
(an)f(implemen)o(tation)g(could)g(map)h(the)g(argumen)o(t)f(string)f(in)o
(to)-1651 56 y(the)g(name)g(of)f(a)h(\014le)g(con)o(taining)e(appropriate)h
(lo)q(calizati)o(on)g(parameters)g(|)h(these)g(\014les)f(could)-1650 57 y
(then)20 b(b)q(e)h(added)f(and)f(mo)q(di\014ed)h(without)f(requiring)f(an)o
(y)i(recompilati)o(on)e(of)h(a)h(lo)q(calizable)-1652 56 y(program.)-181 
128 y @F6 @sf(4.4.2)56 b(Numeric)17 b(formatting)h(con)n(v)n(en)n(tion)h
(inquiry)-1138 88 y @F9 @sf(4.4.2.1)52 b(The)18 b @F8 @sf(localeconv)e 
@F9 @sf(function)-751 89 y @F14 @sf(The)23 b @F8 @sf(localeconv)e @F14 @sf
(function)h(giv)o(es)g(a)g(programmer)f(access)h(to)g(information)f(ab)q
(out)h(ho)o(w)-1651 56 y(to)d(format)e(n)o(umeric)i(quan)o(tities)e
(\(monetary)g(or)i(otherwise\).)29 b(This)18 b(sort)g(of)g(in)o(terface)g
(w)o(as)-1651 56 y(considered)c(preferable)e(to)g(de\014ning)h(con)o(v)o
(ersion)f(functions)g(directly:)18 b(ev)o(en)13 b(with)f(a)g(sp)q(eci\014ed)
-1649 57 y(lo)q(cale,)19 b(the)g(set)g(of)f(distinct)h(formats)e(that)h
(can)h(b)q(e)h(constructed)f(from)f(these)h(elemen)o(ts)g(is)-1651 56 y
(large,)14 b(and)i(the)f(ones)g(desired)h(v)o(ery)f(application-dep)q
(enden)o(t.)-1099 150 y @F4 @sf(4.5)70 b(Mathematics)-389 75 y @F0 @sf
(<math.)q(h>)q -407 104 a @F14 @sf(F)l(or)14 b(historical)o 13 x(reasons,)f
(the)h(math)f(library)f(is)i(only)f(de\014ned)i(for)e(the)h(\015oating)f
(t)o(yp)q(e)h @F8 @sf(double)p @F14 @sf(.)-1652 56 y(All)i(the)h(names)f
(formed)g(b)o(y)h(app)q(ending)g @F8 @sf(f)f @F14 @sf(or)g @F8 @sf(l)g 
@F14 @sf(to)g(a)g(name)h(in)f @F8 @sf(<math.h>)f @F14 @sf(are)i(reserv)o
(ed)f(to)-1651 56 y(allo)o(w)e(for)g(the)i(de\014nition)f(of)g @F8 @sf
(float)f @F14 @sf(and)h @F8 @sf(long)24 b(double)14 b @F14 @sf(libraries.)
-1123 58 y(The)h(functions)f @F8 @sf(ecvt)p @F14 @sf(,)g @F8 @sf(fcvt)p 
@F14 @sf(,)g(and)h @F8 @sf(gcvt)f @F14 @sf(ha)o(v)o(e)g(b)q(een)i(dropp)q
(ed)g(since)f(their)f(capabilit)o(y)f(is)-1651 57 y(a)o(v)m(ailable)h
(through)h @F8 @sf(sprintf)p @F14 @sf(.)-652 124 y
80 @eop1

81 @bop0

81 @eop0
0 0 81 @bop1 112 50 a @F10 @sf(4.5.)35 b(Mathemati)o(cs)14 b @F8 @sf
(<math.h>)1035 b @F14 @sf(81)-1580 145 y(T)l(raditionall)o(y)l(,)17 b 
@F8 @sf(HUGE)s 14 -2 z 14 x(VAL)h @F14 @sf(has)g(b)q(een)h(de\014ned)h(as)d
(a)h(manifest)f(constan)o(t)h(that)f(appro)o(xi-)-1651 57 y(mates)e(the)g
(largest)e(represen)o(table)i @F8 @sf(double)f @F14 @sf(v)m(alue.)20 b(As)
15 b(an)g(appro)o(ximati)o(on)f(to)g @F11 @sf(in\014nity)k @F14 @sf(it)c
(is)-1651 56 y(problematic.)21 b(As)16 b(a)f(function)h(return)f(v)m(alue)h
(indicating)f(o)o(v)o(er\015o)o(w,)f(it)h(can)h(cause)g(trouble)f(if)-1651 
56 y(\014rst)h(assigned)g(to)f(a)h @F8 @sf(float)f @F14 @sf(b)q(efore)h
(testing,)f(since)h(a)g @F8 @sf(float)f @F14 @sf(ma)o(y)h(not)f
(necessarily)h(hold)f(all)-1651 57 y(v)m(alues)h(represen)o(table)f(in)g
(a)g @F8 @sf(double)p @F14 @sf(.)-590 56 y(After)26 b(considering)f(sev)o
(eral)g(alternativ)o(es,)o 27 x(the)h(Committee)f(decided)i(to)e
(generalize)-1651 57 y @F8 @sf(HUGE)s 14 -2 z 14 x(VAL)11 b @F14 @sf(to)f
(a)h(p)q(ositiv)o(e)f(double)i(expression,)f(so)g(that)g(it)f(could)h(b)q
(e)h(expressed)g(as)f(an)g(external)-1651 56 y(iden)o(ti\014er)k(naming)f
(a)h(lo)q(cation)e(initialized)h(precisely)g(with)h(the)g(prop)q(er)g(bit)f
(pattern.)19 b(It)c(can)-1650 57 y(ev)o(en)k(b)q(e)f(a)g(sp)q(ecial)g
(enco)q(ding)g(for)f @F11 @sf(machine)i(in\014nity)p @F14 @sf(,)e(on)h
(implemen)o(tations)e(that)h(supp)q(ort)-1650 56 y(suc)o(h)f(co)q(des.)k
(It)c(need)g(not)f(b)q(e)g(represen)o(table)g(as)g(a)g @F8 @sf(float)p 
@F14 @sf(,)f(ho)o(w)o(ev)o(er.)-1161 57 y(Similarly)l(,)j(domain)g(errors)h
(in)f(the)i(past)e(w)o(ere)h(t)o(ypically)e(indicated)i(b)o(y)g(a)g(zero)g
(return,)-1651 56 y(whic)o(h)d(is)g(not)g(necessarily)f(distinguishable)g
(from)h(a)f(v)m(alid)h(result.)k(The)d(Committee)e(agreed)-1651 57 y(to)i
(mak)o(e)f(the)g(return)h(v)m(alue)g(for)f(domain)g(errors)g @F11 @sf
(implementation-de\014ne)n(d)p @F14 @sf(,)f(so)i(that)f(sp)q(ecial)-1651 
56 y(mac)o(hine)j(co)q(des)g(can)f(b)q(e)h(used)g(to)f(adv)m(an)o(tage.)
26 b(This)17 b(mak)o(es)g(p)q(ossible)g(an)g(implemen)o(tation)-1652 56 y
(of)h(the)g(math)f(library)f(in)i(accordance)g(with)f(the)h(IEEE)g(P854)f
(prop)q(osal)g(on)g(\015oating)g(p)q(oin)o(t)-1651 57 y(represen)o(tation)e
(and)g(arithmetic.)-605 121 y @F6 @sf(4.5.1)56 b(T)-5 b(reatmen)n(t)18 b
(of)h(error)f(conditions)-901 86 y @F14 @sf(Whether)e(under\015o)o(w)h
(should)e(b)q(e)i(considered)f(a)g(range)f(error,)g(and)h(cause)g @F8 @sf
(errno)f @F14 @sf(to)h(b)q(e)g(set,)-1651 57 y(is)h(sp)q(eci\014ed)h(as)f 
@F11 @sf(implementation-de\014ne)n(d)j @F14 @sf(since)d(detection)g(of)f
(under\015o)o(w)i(is)e(ine\016cien)o(t)g(on)-1650 56 y(some)f(systems.)-210 
56 y(The)23 b(Standard)g(has)f(b)q(een)i(crafted)f(to)f(neither)h(require)f
(nor)h(preclude)g(an)o(y)g(p)q(opular)-1651 57 y(implemen)o(tation)c(of)h
(\015oating)g(p)q(oin)o(t.)35 b(This)20 b(principle)g(a\013ects)g(the)h
(de\014nition)f(of)g @F11 @sf(domain)-1650 56 y(err)n(or)p @F14 @sf(:)f
(an)12 b(implemen)o(tation)f(ma)o(y)g(de\014ne)j(extra)d(domain)h(errors)g
(to)f(deal)h(with)g(\015oating-p)q(oin)o(t)-1652 57 y(argumen)o(ts)j(suc)o
(h)g(as)g(in\014nit)o(y)g(or)f(\\not-a-n)o(um)o(b)q(er".)-898 105 y(The)
22 b(Committ)o(ee)f(considered)g(the)h(adoption)e(of)h(the)h @F8 @sf
(matherr)e @F14 @sf(capabilit)o(y)g(from)h(UNIX)-1650 56 y(System)14 b(V.)
20 b(In)15 b(this)e(feature)h(of)f(that)h(system's)f(math)g(library)l(,)g
(an)o(y)h(error)f(\(suc)o(h)h(as)g(o)o(v)o(er\015o)o(w)-1652 57 y(or)h
(under\015o)o(w\))h(results)f(in)g(a)g(call)g(from)f(the)i(library)e
(function)h(to)g(a)g(user-de\014ned)i(exception)-1650 56 y(handler)d
(named)f @F8 @sf(matherr)p @F14 @sf(.)18 b(The)13 b(Committee)f(rejected)h
(this)g(approac)o(h)g(for)f(sev)o(eral)g(reasons:)-1582 92 y @F12 @sf(\017)
22 b @F14 @sf(This)16 b(st)o(yle)g(is)g(incompatible)g(with)g(p)q(opular)g
(\015oating)g(p)q(oin)o(t)g(implemen)o(tations,)f(suc)o(h)-1536 57 y(as)g
(IEEE)g(754)g(\(with)f(its)g(sp)q(ecial)h(return)g(co)q(des\),)g(or)g
(that)g(of)f(V)-5 b(AX/VMS.)-1373 93 y @F12 @sf(\017)22 b @F14 @sf(It)16 b
(con\015icts)h(with)e(the)h(error-handling)g(st)o(yle)f(of)h(F)o(OR)l
(TRAN,)h(th)o(us)f(making)f(it)h(more)-1537 56 y(di\016cult)i(to)f
(translate)g(useful)i(b)q(o)q(dies)f(of)g(mathematical)e(co)q(de)j(from)f
(that)f(language)-1537 57 y(to)e(C.)-147 93 y @F12 @sf(\017)22 b @F14 @sf
(It)f(requires)f(the)h(math)f(library)g(to)g(b)q(e)h(reen)o(tran)o(t)f
(\(since)h(math)f(routines)g(could)h(b)q(e)-1536 56 y(called)15 b(from)f 
@F8 @sf(matherr)p @F14 @sf(\),)g(whic)o(h)h(ma)o(y)f(complicate)h(some)g
(implemen)o(tati)o(ons.)-1405 93 y @F12 @sf(\017)22 b @F14 @sf(It)c(in)o
(tro)q(duces)f(a)g(new)g(st)o(yle)g(of)g(library)f(in)o(terface:)23 b(a)
17 b(user-de\014ned)q 18 x(library)g(function)-1537 57 y(with)k(a)h
(library-de\014ned)g(name.)39 b(Note,)23 b(b)o(y)f(w)o(a)o(y)e(of)i
(comparison,)g(the)g(signal)e(and)-1536 56 y(exit)c(handling)h(mec)o
(hanisms,)g(whic)o(h)f(pro)o(vide)h(a)f(w)o(a)o(y)g(of)h(\\registering")o 
16 x(user-de\014ned)-1535 57 y(functions.)1091 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
81 @eop1

82 @bop0
/@F21 @newfont
@F21 @sf
[<
1E00218070C070600060003007B00C7018381818181818180C0C0C0C0C0C860C4606460626
061C02>
. 15 20 -1 13 17] 121 @dc
[<
78F000C50800E70400C3020003020003000001800001800001800041800020C30020C38011
A1800F1F00>
. 17 14 -1 13 20] 120 @dc
@F11 @sf
[<
FF800200001C000200000C000700000400070000040007000004000F000002000F80000200
0F800002001E800002001E800001001E400001003C400001003C400001003C400000807820
00008078200000807820000080F020000040F010000041F010000041E010000041E0100000
23C008000023C008000023C00800002780080000178004000017800400001F000400001F00
0F0001FF007FE0>
. 35 31 -3 30 34] 78 @dc
@F21 @sf
[<
1808001818000C18000C10000410000610000210000210000210008110004110002108001F
FFC00FFFC0>
. 18 14 -1 13 20] 25 @dc
@F12 @sf
[<
03E0001F000FF800FFC0100C01F8E0200603E030400307C01840018F80084000DF00088000
7E000480007E000480007C00048000F800048001F800048001F800044003EC00084007C600
08600F830008301F0180101C7E00C0200FFC007FC003E0001F00>
. 38 20 -3 19 45] 49 @dc
@F13 @sf
[<
180600380F001C0E001C0E000C0E000E0C00060C00060C00020C00030C00030C00010C0001
0400018400808400C084006082003FFFFC1FFFFC0FFFFC>
. 22 20 -2 19 26] 25 @dc

82 @eop0

0 0 82 @bop1 112 50 a @F14 @sf(82)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F6 @sf(4.5.2)56 b(T)-5 b(rigonometric)17 b
(functions)-759 105 y @F14 @sf(Implemen)o(tation)h(note:)25 b(trignometri)o
(c)17 b(argumen)o(t)g(reduction)h(should)g(b)q(e)h(p)q(erformed)f(b)o(y)g
(a)-1651 57 y(metho)q(d)j(that)f(causes)h(no)g(catastrophic)e(discon)o
(tin)o(uities)g(in)h(the)h(error)f(of)g(the)h(computed)-1650 56 y(result.)e
(In)c(particular,)e(metho)q(ds)h(based)g(solely)f(on)h(naiv)o(e)g
(application)e(of)i(a)g(calculation)e(lik)o(e)-1460 144 y @F8 @sf(x)24 b
(-)g(\(2*pi\))f(*)h(\(int\)\(x/\(2*p)o(i\)\))-861 134 y @F14 @sf(are)15 b
(ill-advised.)-291 177 y @F9 @sf(4.5.2.1)52 b(The)18 b @F8 @sf(acos)f 
@F9 @sf(function)-608 105 y(4.5.2.2)52 b(The)18 b @F8 @sf(asin)f @F9 @sf
(function)-608 105 y(4.5.2.3)52 b(The)18 b @F8 @sf(atan)f @F9 @sf
(function)-608 106 y(4.5.2.4)52 b(The)18 b @F8 @sf(atan2)e @F9 @sf
(function)-631 105 y @F14 @sf(The)23 b @F8 @sf(atan2)e @F14 @sf(function)h
(is)f(mo)q(delled)h(after)f(F)o(OR)l(TRAN's.)41 b(It)21 b(is)h(describ)q
(ed)h(in)e(terms)h(of)-1651 56 y(arctan)13 -20 y @F21 @sf(y)-18 10 y 20 
-2 z 26 w(x)21 -16 y @F14 @sf(for)16 b(simplicit)o -1 x(y;)f(the)h
(Committee)e(did)i(not)g(wish)g(to)f(complicate)g(the)h(descriptions)-1651 
57 y(b)o(y)11 b(sp)q(ecifying)f(in)g(detail)f(ho)o(w)h(the)g(determine)h
(the)f(appropriate)f(quadran)o(t,)h(since)h(that)e(should)-1650 56 y(b)q
(e)17 b(ob)o(vious)f(from)f(normal)g(mathematical)f(con)o(v)o(en)o(tion.)
22 b @F8 @sf(atan2\(y,x\))15 b @F14 @sf(is)h(w)o(ell-de\014ned)g(and)-1650 
57 y(\014nite,)g(ev)o(en)h(when)f @F8 @sf(x)g @F14 @sf(is)f(0;)h(the)g
(one)g(am)o(biguit)o(y)e(o)q(ccurs)j(when)f(b)q(oth)g(argumen)o(ts)f(are)h
(0,)g(b)q(e-)-1650 56 y(cause)d(at)f(that)g(p)q(oin)o(t)g(an)o(y)h(v)m
(alue)f(in)h(the)g(range)f(of)g(the)h(function)f(could)h(logicall)o(y)e(b)q
(e)j(selected.)-1651 57 y(Since)k(v)m(alid)f(reasons)f(can)i(b)q(e)f(adv)m
(anced)h(for)f(all)f(the)h(di\013eren)o(t)f(c)o(hoices)h(that)g(ha)o(v)o
(e)f(b)q(een)j(in)-1651 56 y(this)12 b(situation)e(b)o(y)i(v)m(arious)g
(implemen)o(ts,)f(the)h(Standard)g(preserv)o(es)g(the)g(implemen)o(tor's)e
(free-)-1650 57 y(dom)17 b(to)f(return)h(an)f(arbitrary)f(w)o(ell-de\014ned)i
(v)m(alue)g(suc)o(h)g(as)f(0,)h(to)f(rep)q(ort)g(a)g(domain)g(error,)-1651 
56 y(or)f(to)g(return)g(an)g(IEEE)g @F11 @sf(NaN)g @F14 @sf(co)q(de.)-646 
177 y @F9 @sf(4.5.2.5)52 b(The)18 b @F8 @sf(cos)f @F9 @sf(function)-584 
105 y(4.5.2.6)52 b(The)18 b @F8 @sf(sin)f @F9 @sf(function)-584 106 y
(4.5.2.7)52 b(The)18 b @F8 @sf(tan)f @F9 @sf(function)-584 105 y @F14 @sf
(The)d(tangen)o(t)f(function)h(has)f(singularities)f(at)h(o)q(dd)h(m)o
(ultiples)f(of)18 -18 y @F21 @sf(\031)-20 7 y 21 -2 z 2 26 a @F22 @sf(2)
6 -15 y @F14 @sf(,)h(approac)o(hing)f(+)p @F12 @sf(1)h @F14 @sf(from)-1651 
56 y(one)20 b(side)e(and)h @F12 @sf(\0001)h @F14 @sf(from)e(the)h(other.)
31 b(Implemen)o(tations)17 b(commonly)i(p)q(erform)f(argumen)o(t)-1651 57 y
(reduction)h(using)f(the)h(b)q(est)g(mac)o(hine)f(represen)o(tation)f(of)i 
@F13 @sf(\031)r @F14 @sf(;)g(for)f(argumen)o(ts)f(to)h @F8 @sf(tan)g 
@F14 @sf(su\016-)-1650 56 y(cien)o(tly)d(close)f(to)g(a)g(singularit)o(y)l
(,)f(suc)o(h)i(reduction)g(ma)o(y)f(yield)g(a)h(v)m(alue)g(on)f(the)h
(wrong)f(side)h(of)-1651 57 y(the)i(singularit)o(y)l(.)23 b(In)18 b(view)e
(of)g(suc)o(h)h(problems,)g(the)g(Committee)e(has)i(recognized)g(that)f 
@F8 @sf(tan)-1651 56 y @F14 @sf(is)g(an)g(exception)g(to)f(the)h @F11 @sf
(r)n(ange)g(err)n(or)g @F14 @sf(rule)g(\()p @F12 @sf(x)p @F14 @sf(4.5.1\))e
(that)h(an)h(o)o(v)o(er\015o)o(wing)e(result)i(pro)q(duces)-1650 57 y 
@F8 @sf(HUGE)s 14 -2 z 14 x(VAL)f @F14 @sf(prop)q(erly)g(signed.\))-649 
124 y
82 @eop1

83 @bop0

83 @eop0
0 0 83 @bop1 112 50 a @F10 @sf(4.5.)35 b(Mathemati)o(cs)14 b @F8 @sf
(<math.h>)1035 b @F14 @sf(83)-1651 145 y @F6 @sf(4.5.3)56 b(Hyp)r(erb)q
(olic)17 b(functions)-685 88 y @F9 @sf(4.5.3.1)52 b(The)18 b @F8 @sf(cosh)f 
@F9 @sf(function)-608 88 y(4.5.3.2)52 b(The)18 b @F8 @sf(sinh)f @F9 @sf
(function)-608 88 y(4.5.3.3)52 b(The)18 b @F8 @sf(tanh)f @F9 @sf(function)
-608 90 y @F6 @sf(4.5.4)56 b(Exp)r(onen)n(tial)17 b(and)i(logarithmic)e
(functions)-1111 88 y @F9 @sf(4.5.4.1)52 b(The)18 b @F8 @sf(exp)f @F9 @sf
(function)-584 88 y(4.5.4.2)52 b(The)18 b @F8 @sf(frexp)e @F9 @sf
(function)-631 88 y @F14 @sf(The)g(functions)f @F8 @sf(frexp)p @F14 @sf(,)g 
@F8 @sf(ldexp)p @F14 @sf(,)f(and)i @F8 @sf(modf)f @F14 @sf(are)g(primitiv)o
(es)f(used)i(b)o(y)f(the)h(remainder)f(of)g(the)-1650 56 y(library)l(.)33 b
(There)21 b(w)o(as)e(some)g(sen)o(timen)o(t)g(for)g(dropping)h(them)g(for)f
(the)h(same)g(reasons)f(that)-1651 57 y @F8 @sf(ecvt)p @F14 @sf(,)e @F8 @sf
(fcvt)p @F14 @sf(,)f(and)h @F8 @sf(gcvt)f @F14 @sf(w)o(ere)h(dropp)q(ed,)h
(but)f(their)f(adheren)o(ts)h(rescued)h(them)f(for)f(general)-1651 56 y
(use.)k(Their)13 b(use)h(is)f(problematic:)k(on)d(non)o(binary)f(arc)o
(hitectures)f @F8 @sf(ldexp)h @F14 @sf(ma)o(y)f(lose)h(precision,)-1651 
57 y(and)j @F8 @sf(frexp)e @F14 @sf(ma)o(y)h(b)q(e)h(ine\016cien)o(t.)-588 
126 y @F9 @sf(4.5.4.3)52 b(The)18 b @F8 @sf(ldexp)e @F9 @sf(function)-631 
88 y @F14 @sf(See)g @F12 @sf(x)q @F14 @sf(4.5.4)o(.2.)o -244 127 a @F9 @sf
(4.5.4.4)52 b(The)18 b @F8 @sf(log)f @F9 @sf(function)-584 88 y @F14 @sf
(Whether)23 b @F8 @sf(log\(0.\))42 b @F14 @sf(is)22 b(a)h(domain)f(error)g
(or)g(a)g(range)h(error)f(is)g(arguable.)42 b(The)23 b(c)o(hoice)-1651 57 y
(in)f(the)g(Standard,)h @F11 @sf(r)n(ange)f(err)n(or)p @F14 @sf(,)i(is)d
(for)g(compatibilit)n(y)g(with)g(IEEE)h(P854.)39 b(Some)22 b(suc)o(h)-1650 
56 y(implemen)o(tations)12 b(w)o(ould)h(represen)o(t)h(the)g(result)f(as)g 
@F12 @sf(\0001)p @F14 @sf(,)i(in)e(whic)o(h)h(case)f(no)h(error)f(is)g
(raised.)-1651 127 y @F9 @sf(4.5.4.5)52 b(The)18 b @F8 @sf(log10)e @F9 @sf
(function)-631 88 y @F14 @sf(See)g @F12 @sf(x)q @F14 @sf(4.5.4)o(.4.)o -244 
126 a @F9 @sf(4.5.4.6)52 b(The)18 b @F8 @sf(modf)f @F9 @sf(function)-608 
88 y @F14 @sf(See)f @F12 @sf(x)q @F14 @sf(4.5.4)o(.2.)o -244 129 a @F6 @sf
(4.5.5)56 b(P)n(o)n(w)n(er)20 b(functions)-564 88 y @F9 @sf(4.5.5.1)52 b
(The)18 b @F8 @sf(pow)f @F9 @sf(function)-584 88 y(4.5.5.2)52 b(The)18 b 
@F8 @sf(sqrt)f @F9 @sf(function)-608 88 y @F14 @sf(IEEE)f(P854,)d(unlik)o
(e)i(the)g(Standard,)g(requires)g @F8 @sf(sqrt\(-0.\))k @F14 @sf(to)14 b
(return)h(a)g(negativ)o(ely)e(signed)-1650 56 y(magnitude-zero)21 b
(result.)35 b(This)20 b(is)g(an)h(issue)f(on)h(implemen)o(tati)o(ons)e
(that)h(supp)q(ort)h(a)f(neg-)-1650 57 y(ativ)o(e)f(\015oating)f(zero.)33 b
(The)20 b(Standard)f(sp)q(eci\014es)h(that)f(taking)f(the)i(square)f(ro)q
(ot)g(of)g(a)g(neg-)-1650 56 y(ativ)o(e)i(n)o(um)o(b)q(er)h(\(in)f(the)g
(mathematical)f(sense:)33 b(less)21 b(than)g(0\))g(is)g(a)g(domain)g
(error)g(whic)o(h)-1651 57 y(requires)16 b(the)f(function)h(to)f(return)g
(an)h @F11 @sf(implementation-de\014ne)n(d)j @F14 @sf(v)m(alue.)i(This)15 b
(rule)h(p)q(ermits)-252 124 y @F15 @sf(RA)m(TIONALE)-1763 b
83 @eop1

84 @bop0
@F13 @sf
[<
0E00190038803840384038401C201C001C000E000E00070007008700438043804380238013
000E00000000000000000000000000000000C001E001E000E0>
. 11 31 -2 30 16] 105 @dc
@F12 @sf
[<
01800180018001800180C183F18F399C0FF003C003C00FF0399CF18FC18301800180018001
800180>
. 16 20 -3 20 23] 3 @dc
@F4 @sf
[<
FFFE00000380FFFE00000380FFFE00000780038000000F80038000001F80038000003F8003
8000007F80038000007F8003800000FF8003800001FF8003800003FF8003800007FF800380
0007FB800380000FF3800380001FE3800380003FE3800380007FC380038000FF8380038000
FF0380038001FE0380038003FC0380038007FC038003800FF8038003800FF0038003801FE0
038003803FC0038003807FC003800380FF8003800381FF0003800381FE0003800383FC0003
800387F8000380038FF8000380039FF0000380039FE000038003BFC000038003FF80000380
03FF80000380FFFF0000FFFEFFFE0000FFFEFFFC0000FFFE>
. 47 41 -3 40 54] 78 @dc
[<
0FF0003FFC007C3E00FE1F00FE1F80FE0FC0FE0FE07C0FE0000FE0000FE0000FE0000FE000
0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE001FFE0
01FFE001FFE0000000000000000000000000000000000000000000000700000F80001FC000
3FE0003FE0003FE0001FC0000F80000700>
. 19 55 4 42 21] 106 @dc
@F0 @sf
[<
1FE0007FF8007FFC00FFFE00F81F00700F802007800003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00FFFC00FFFC0
0FFFC00FFFC0000000000000000000000000000000000000000300000780000FC0000FC000
0780000300>
. 18 51 -3 37 31] 106 @dc

84 @eop0

0 0 84 @bop1 112 50 a @F14 @sf(84)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F14 @sf(implemen)o(tations)15 b(to)g(supp)q
(ort)h(either)g(the)g(IEEE)g(P854)f(or)g(v)o(endor-sp)q(eci\014c)i
(\015oating)e(p)q(oin)o(t)-1651 57 y(represen)o(tations.)-314 119 y @F6 @sf
(4.5.6)56 b(Nearest)17 b(in)n(teger,)h(absolute)g(v)m(alue,)f(and)i
(remainder)f(functions)-1563 85 y @F9 @sf(4.5.6.1)52 b(The)18 b @F8 @sf
(ceil)f @F9 @sf(function)-608 86 y @F14 @sf(Implemen)o(tation)c(note:)20 b
(The)14 b @F8 @sf(ceil)f @F14 @sf(function)h(returns)g(the)g(smallest)e
(in)o(tegral)g(v)m(alue)i(in)g(dou-)-1650 57 y(ble)j(format)d(not)i(less)g
(than)g @F8 @sf(x)p @F14 @sf(,)f(ev)o(en)i(though)f(that)f(in)o(teger)g
(migh)o(t)g(not)h(b)q(e)h(represen)o(table)f(in)-1651 56 y(a)i(C)g(in)o
(tegral)f(t)o(yp)q(e.)29 b @F8 @sf(ceil\(x\))17 b @F14 @sf(equals)h @F8 @sf
(x)g @F14 @sf(for)g(all)f @F8 @sf(x)h @F14 @sf(su\016cien)o(tly)f(large)h
(in)g(magnitude.)28 b(An)-1650 57 y(implemen)o(tation)14 b(that)g
(calculates)h @F8 @sf(ceil\(x\))f @F14 @sf(as)-663 79 y @F8 @sf
(\(double\)\(int\))22 b(x)-549 79 y @F14 @sf(is)15 b(ill-advised.)-261 118 y 
@F9 @sf(4.5.6.2)52 b(The)18 b @F8 @sf(fabs)f @F9 @sf(function)-608 86 y 
@F14 @sf(Adding)g(an)f(absolute)f(v)m(alue)i(op)q(erator)e(w)o(as)h
(rejected)g(b)o(y)g(the)g(Committee.)22 b(An)16 b(implemen-)-1650 56 y
(tation)e(can)i(pro)o(vide)e(a)h(built-in)g(function)g(for)f(e\016ciency)l
(.)-1015 117 y @F9 @sf(4.5.6.3)52 b(The)18 b @F8 @sf(floor)e @F9 @sf
(function)-631 86 y(4.5.6.4)52 b(The)18 b @F8 @sf(fmod)f @F9 @sf(function)
-608 86 y @F8 @sf(fmod)k @F14 @sf(is)g(de\014ned)i(ev)o(en)f(if)e(the)i
(quotien)o(t)e @F8 @sf(x/y)h @F14 @sf(is)g(not)g(represen)o(table)g(|)h
(this)f(function)g(is)-1651 56 y(prop)q(erly)15 b(implemen)o(ted)f(b)o(y)h
(scaled)f(subtraction)g(rather)g(than)g(b)o(y)h(division.)k(The)c
(Standard)-1651 57 y(de\014nes)k(the)f(result)g(in)f(terms)h(of)f(the)h
(form)o(ula)f @F8 @sf(x)12 b @F12 @sf(\000)g @F13 @sf(i)f @F12 @sf(\003)h 
@F8 @sf(y)p @F14 @sf(,)18 b(where)g @F13 @sf(i)g @F14 @sf(is)f(some)h(in)o
(teger.)27 b(This)-1651 56 y(in)o(teger)15 b(need)g(not)g(b)q(e)g
(represen)o(table,)g(and)g(need)g(not)g(ev)o(en)g(b)q(e)h(explicitly)d
(computed.)20 b(Th)o(us)-1650 57 y(implemen)o(tations)14 b(are)h(advised)g
(not)g(to)f(compute)i(the)f(result)g(using)f(a)h(form)o(ula)f(lik)o(e)-1309 
79 y @F8 @sf(x)24 b(-)g(y)g(*)f(\(int\)\(x/y\))-622 80 y @F14 @sf
(Instead,)c(the)f(result)f(can)g(b)q(e)i(computed)f(in)f(principle)h(b)o
(y)f(subtracting)g @F8 @sf(ldexp\(y,n\))f @F14 @sf(from)-1651 56 y @F8 @sf
(x)p @F14 @sf(,)f(for)f(appropriately)g(c)o(hosen)h(decreasing)g @F8 @sf
(n)p @F14 @sf(,)g(un)o(til)f(the)h(remainder)f(is)h(b)q(et)o(w)o(een)g(0)g
(and)g @F8 @sf(x)g @F14 @sf(|)-1650 57 y(e\016ciency)h(considerations)e
(ma)o(y)h(dictate)f(a)h(di\013eren)o(t)g(actual)f(implemen)o(tation.)o -1348 
56 a(The)h(result)f(of)f @F8 @sf(fmod\(x,0.0\))g @F14 @sf(is)h(either)g(a)g
(domain)g(error)g(or)g(0.0;)f(the)i(result)e(alw)o(a)o(ys)g(lies)-1651 57 y
(b)q(et)o(w)o(een)18 b(0.0)e(and)h @F8 @sf(y)p @F14 @sf(,)g(so)f(sp)q
(ecifying)h(the)g(non-erroneous)g(result)g(as)f(0.0)g(simply)h(recognizes)
-1651 56 y(the)f(limit)d(case.)-210 56 y(The)k(Committee)f(considered)h
(and)g(rejected)g(a)g(prop)q(osal)f(to)g(use)i(the)e(remainder)h(op)q(er-)
-1650 57 y(ator)f @F8 @sf(%)g @F14 @sf(for)g(this)g(function;)g(the)h(op)q
(erators)e(in)h(general)g(corresp)q(ond)h(to)f(hardw)o(are)g(faciliti)o
(es,)-1652 56 y(and)g @F8 @sf(fmod)e @F14 @sf(is)h(not)g(supp)q(orted)h
(in)f(hardw)o(are)f(on)h(most)g(mac)o(hines.)-1160 141 y @F4 @sf(4.6)70 b
(Nonlo)r(cal)24 b(jumps)-469 75 y @F0 @sf(<setjm)q(p.)q(h>)-469 101 y 
@F8 @sf(jmp)s 14 -2 z 14 x(buf)17 b @F14 @sf(m)o(ust)f(b)q(e)i(an)f(arra)o
(y)f(t)o(yp)q(e)h(for)f(compatibilit)n(y)g(with)g(existing)g(practice:)24 b
(programs)-1652 57 y(t)o(ypically)e(omit)g(the)h(address)g(op)q(erator)f
(b)q(efore)i(a)e @F8 @sf(jmp)s 14 -2 z 14 x(buf)h @F14 @sf(argumen)o(t,)g
(ev)o(en)h(though)f(a)-1763 124 y
84 @eop1

85 @bop0
@F10 @sf
[<
3F0000618000F0C000F0600060700000700000380000380000380000380000380000380000
1C00001C00001C00001C00001C00001C00000E00000E00000E00000E00000E00000E000007
00000700000F00007F00000700000000000000000000000000000000000000000300000780
0007C00007C0000380>
. 18 40 3 30 14] 106 @dc
@F22 @sf
[<
03FE00700070007000700070FFFEC0704070207010701870087004700270017001F000F000
7000300030>
. 15 21 -1 20 18] 52 @dc
@F23 @sf
[<
1FE00300030003000300FFE0C30043002300330013000B000F00070003000300>
. 11 16 -1 15 15] 52 @dc
@F17 @sf
[<
3F007F80E0C040E00070007000700070007000700070007000700070007000700070007000
700070007000701FF01FF00000000000000000006000F000F00060>
. 12 32 -2 23 20] 106 @dc
[<
FF8000FF80001C00001C00001C00001C00001C00001C00001CF8001DFC001F0E001E03001C
03801C01C01C01C01C01C01C01C01C01C01C01C01C03801E03001F0700FDFE00FCF800>
. 18 24 0 15 20] 112 @dc

85 @eop0

0 0 85 @bop1 112 50 a @F10 @sf(4.6.)35 b(Nonlo)q(cal)14 b(jumps)h @F8 @sf
(<setjmp.h>)934 b @F14 @sf(85)-1651 145 y(p)q(oin)o(ter)19 b(to)e(the)i
(argumen)o(t)f(is)g(desired,)h(not)f(the)h(v)m(alue)g(of)f(the)g(argumen)o
(t)g(itself.)29 b(Th)o(us,)19 b(a)-1651 57 y(scalar)12 b(or)h(struct)f(t)o
(yp)q(e)h(is)f(unsuitable.)19 b(Note)13 b(that)f(a)g(one-elemen)o(t)h
(arra)o(y)f(of)g(the)h(appropriate)-1651 56 y(t)o(yp)q(e)j(is)e(a)h(v)m
(alid)g(de\014nition.)-425 58 y @F8 @sf(setjmp)i @F14 @sf(is)f
(constrained)h(to)g(b)q(e)h(a)f(macro)g(only:)24 b(in)17 b(some)g
(implemen)o(tations)f(the)h(infor-)-1651 56 y(mation)g(necessary)i(to)e
(restore)h(con)o(text)f(is)h(only)g(a)o(v)m(ailable)e(while)i(executing)g
(the)h(function)-1651 57 y(making)c(the)g(call)f(to)h @F8 @sf(setjmp)p 
@F14 @sf(.)-535 130 y @F6 @sf(4.6.1)56 b(Sa)n(v)n(e)19 b(calling)e(en)n
(vironmen)n(t)-784 88 y @F9 @sf(4.6.1.1)52 b(The)18 b @F8 @sf(setjmp)e 
@F9 @sf(macro)-608 89 y @F14 @sf(One)k(prop)q(osed)f(requiremen)o(t)f(on)h 
@F8 @sf(setjmp)e @F14 @sf(is)i(that)e(it)h(b)q(e)i(usable)e(lik)o(e)g(an)o
(y)g(other)h(function)-1651 56 y(|)g(that)f(it)f(b)q(e)i(callable)e(in)h
(an)o(y)g(expression)g(con)o(text,)g(and)h(that)e(the)h(expression)h(ev)m
(aluate)-1651 57 y(correctly)f(whether)g(the)h(return)f(from)f @F8 @sf
(setjmp)g @F14 @sf(is)h(direct)g(or)g(via)f(a)h(call)g(to)f @F8 @sf
(longjmp)p @F14 @sf(.)28 b(Un-)-1650 56 y(fortunately)l(,)13 b(an)o(y)h
(implemen)o(tation)e(of)i @F8 @sf(setjmp)f @F14 @sf(as)h(a)g(con)o(v)o(en)o
(tional)e(called)i(function)g(cannot)-1651 57 y(kno)o(w)h(enough)h(ab)q
(out)f(the)g(calling)f(en)o(vironmen)o(t)g(to)h(sa)o(v)o(e)f(an)o(y)h
(temp)q(orary)f(registers)g(or)h(dy-)-1650 56 y(namic)h(stac)o(k)g(lo)q
(cations)f(used)i(part)e(w)o(a)o(y)h(through)g(an)g(expression)g(ev)m
(aluation.)22 b(\(A)16 b @F8 @sf(setjmp)-1651 57 y @F11 @sf(macr)n(o)f 
@F14 @sf(seems)g(to)f(help)g(only)h(if)e(it)h(expands)h(to)f(inline)g
(assem)o(bly)g(co)q(de)h(or)f(a)g(call)g(to)f(a)i(sp)q(ecial)-1651 56 y
(built-in)k(function.\))31 b(The)19 b(temp)q(oraries)f(ma)o(y)g(b)q(e)i
(correct)e(on)h(the)g(initial)e(call)h(to)h @F8 @sf(setjmp)p @F14 @sf(,)
-1652 56 y(but)c(are)f(not)h(lik)o(ely)e(to)h(b)q(e)h(on)g(an)o(y)f
(return)h(initiat)o(ed)f(b)o(y)g(a)h(corresp)q(onding)f(call)g(to)g @F8 @sf
(longjmp)p @F14 @sf(.)-1652 57 y(These)g(considerations)d(dictated)h(the)h
(constrain)o(t)e(that)h @F8 @sf(setjmp)g @F14 @sf(b)q(e)i(called)e(only)g
(from)g(within)-1651 56 y(fairly)i(simple)h(expressions,)g(ones)g(not)g
(lik)o(ely)f(to)g(need)i(temp)q(orary)f(storage.)-1282 58 y(An)i
(alternativ)o(e)e(prop)q(osal)i(considered)g(b)o(y)g(the)g(Committ)o(ee)f
(is)h(to)f(require)h(that)f(imple-)-1651 57 y(men)o(tations)j(recognize)h
(that)f(calling)g @F8 @sf(setjmp)g @F14 @sf(is)g(a)h(sp)q(ecial)g(case,)p 
-16 w @F22 @sf(4)22 16 y @F14 @sf(and)g(hence)h(that)e(they)-1650 56 y
(tak)o(e)f(whatev)o(er)f(precautions)h(are)f(necessary)h(to)g(restore)f
(the)h @F8 @sf(setjmp)f @F14 @sf(en)o(vironmen)o(t)g(prop-)-1650 57 y
(erly)i(up)q(on)h(a)f @F8 @sf(longjmp)f @F14 @sf(call.)31 b(This)19 b
(prop)q(osal)f(w)o(as)g(rejected)i(on)f(grounds)g(of)g(consistency:)-1651 
56 y(implemen)o(tations)13 b(are)g(curren)o(tly)h @F11 @sf(al)r(lowe)n(d)k 
@F14 @sf(to)13 b(implemen)o(t)h(library)e(functions)i(sp)q(ecially)l(,)f
(but)-1650 57 y(no)j(other)e(situations)g @F11 @sf(r)n(e)n(quir)n(e)k 
@F14 @sf(sp)q(ecial)d(treatmen)o(t.)-899 129 y @F6 @sf(4.6.2)56 b(Restore)
17 b(calling)h(en)n(vironmen)n(t)-862 89 y @F9 @sf(4.6.2.1)52 b(The)18 b 
@F8 @sf(longjmp)e @F9 @sf(function)-679 89 y @F14 @sf(The)c(Committee)e
(also)g(considered)h(requiring)f(that)h(a)g(call)f(to)g @F8 @sf(longjmp)g 
@F14 @sf(restore)h(the)g(\()p @F8 @sf(setjmp)p @F14 @sf(\))-1652 56 y
(calling)17 b(en)o(vironmen)o(t)h(fully)f(|)i(that)e(up)q(on)i(execution)f
(of)g(a)f @F8 @sf(longjmp)p @F14 @sf(,)h(all)f(lo)q(cal)g(v)m(ariables)-1651 
56 y(in)f(the)h(en)o(vironmen)o(t)e(of)h @F8 @sf(setjmp)f @F14 @sf(ha)o(v)o
(e)h(the)g(v)m(alues)g(they)g(did)g(at)g(the)g(time)g(of)f(the)h @F8 @sf
(longjmp)-1651 57 y @F14 @sf(call.)j(Register)13 b(v)m(ariables)g(create)h
(problems)f(with)g(this)g(idea.)19 b(Unfortunately)l(,)13 b(the)h(b)q(est)g
(that)-1651 56 y(man)o(y)g(implemen)o(tations)f(attempt)h(with)f(register)h
(v)m(ariables)g(is)g(to)f(sa)o(v)o(e)h(them)g(\(in)g @F8 @sf(jmp)s 14 -2 z 
14 x(buf)p @F14 @sf(\))-1651 57 y(at)f(the)h(time)f(of)g(the)g(initial)f 
@F8 @sf(setjmp)h @F14 @sf(call,)f(then)i(restore)f(them)g(to)g(that)g
(state)f(on)i(eac)o(h)f(return)-1650 56 y(initiated)d(b)o(y)h(a)f @F8 @sf
(longjmp)g @F14 @sf(call.)17 b(Since)11 b(compilers)f(are)h(certainly)f
(at)g(lib)q(ert)o(y)g(to)g(c)o(hange)g(register)-1651 57 y(v)m(ariables)
17 b(to)g(automatic,)g(it)g(is)g(not)g(ob)o(vious)g(that)g(a)g(register)g
(declaration)f(will)g(indeed)j(b)q(e)-1650 56 y(rolled)g(bac)o(k.)33 b
(And)20 b(since)g(compilers)e(are)h(at)g(lib)q(ert)o(y)g(to)g(c)o(hange)g
(automatic)f(v)m(ariables)h(to)-1651 45 y 660 -2 z 52 27 a @F23 @sf(4)3 
16 y @F20 @sf(This)12 b(prop)q(osal)h(w)o(as)f(considered)h(prior)f(to)h
(the)f(adoption)h(of)f(the)h(stricture)f(that)g @F17 @sf(setjmp)o 11 x 
@F20 @sf(b)q(e)g(a)h(macro.)k(It)-1651 46 y(can)e(b)q(e)f(considered)h(as)f
(equiv)n(alen)o(t)h(to)f(prop)q(osing)h(that)f(the)h @F17 @sf(setjm)o(p)d 
@F20 @sf(macro)i(expand)i(to)e(a)g(call)f(to)h(a)g(sp)q(ecial)-1650 46 y
(built-in)f(compiler)g(function.)958 124 y @F15 @sf(RA)m(TIONALE)-1763 b
85 @eop1

86 @bop0
@F0 @sf
[<
7FFFFCFFFFFEFFFFFE7FFFFC003C00003C00003C00003C00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C007FFC007FFC007FFC
007FFC0000000000000000000000000000000000000000300000780000FC0000FC00007800
003000>
. 23 38 -4 37 31] 105 @dc
[<
007F800003FFF0000FFFFC001FFFFE003F003F007C000F8070000380E00001C0E00001C0E0
0001C0E00001C070000380780007803C001F003FFFFE001FFFF8000FFFE0000E0000001C00
00001C0000001CFC00001FFF00001FFF80000FFFC0000F87C0001F03E0001E01E0003C00F0
003C00F0003C00F0003C00F0003C00F0003C00F0001E01E0001F03E0000F87E1C00FFFFFE0
07FFFFE003FF3FC000FC0F80>
. 27 40 -2 25 31] 103 @dc
[<
FFFC7FF0FFFC7FF0FFFC7FF0FFFC7FF007801E0007801E0007801E0007801E0007801E0007
801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007C0
1E0007C01E0007E01E0007F83C00FFFFFC00FFBFF800FF9FF000FF87E000>
. 28 26 -1 25 31] 110 @dc

86 @eop0

0 0 86 @bop1 112 50 a @F14 @sf(86)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F14 @sf(register)20 b(\(if)g(their)g
(addresses)g(are)h(nev)o(er)f(tak)o(en\),)h(it)f(is)g(not)g(ob)o(vious)g
(that)g(an)g(automatic)-1652 57 y(declaration)f(will)g @F11 @sf(not)24 b 
@F14 @sf(b)q(e)c(rolled)f(bac)o(k.)34 b(Hence)21 b(the)f(v)m(ague)g(w)o
(ording.)32 b(In)21 b(fact,)f(the)g(only)-1651 56 y(reliable)13 b(w)o(a)o
(y)g(to)g(ensure)h(that)f(a)g(lo)q(cal)g(v)m(ariable)g(retain)g(the)h(v)m
(alue)g(it)f(had)g(at)g(the)h(time)f(of)g(the)-1650 56 y(call)i(to)f @F8 @sf
(longjmp)h @F14 @sf(is)f(to)h(de\014ne)h(it)f(with)f(the)h @F8 @sf
(volatile)f @F14 @sf(attribute.)-1107 60 y(Some)j(implemen)o(tatio)o(ns)e
(lea)o(v)o(e)h(a)h(pro)q(cess)f(in)h(a)f(sp)q(ecial)g(state)g(while)g(a)h
(signal)e(is)h(b)q(eing)-1650 57 y(handled.)k(An)14 b(explicit)f
(reassurance)h(m)o(ust)f(b)q(e)h(giv)o(en)g(to)f(the)h(en)o(vironmen)o(t)f
(when)h(the)g(signal)-1652 56 y(handler)20 b(is)f(done.)34 b(T)l(o)19 b(k)o
(eep)h(this)f(job)h(manageable,)f(the)h(Committee)e(agreed)i(to)f
(restrict)-1652 57 y @F8 @sf(longjmp)c @F14 @sf(to)f(only)h(one)g(lev)o
(el)g(of)g(signal)f(handling.)-820 59 y(The)k @F8 @sf(longjmp)f @F14 @sf
(function)h(should)g(not)f(b)q(e)i(called)e(in)h(an)g(exit)f(handler)h
(\(i.e.,)f(a)h(function)-1651 57 y(registered)g(with)g(the)h @F8 @sf
(atexit)e @F14 @sf(function)h(\(see)h @F12 @sf(x)p @F14 @sf(4.10.4.)o(2\)\))o
(,)f(since)g(it)g(migh)o(t)f(jump)i(to)f(some)-1651 56 y(co)q(de)e(whic)o
(h)f(is)g(no)g(longer)g(in)g(scop)q(e.)-654 162 y @F4 @sf(4.7)70 b(Signal)
24 b(Handling)-478 75 y @F0 @sf(<signa)q(l.)q(h>)-469 108 y @F14 @sf(This)
18 b(facilit)n(y)e(has)i(b)q(een)h(retained)e(from)g(the)g(Base)h(Do)q
(cumen)o(t)f(since)h(the)g(Committee)e(felt)-1651 57 y(it)e(imp)q(ortan)o
(t)e(to)h(pro)o(vide)h(some)f(standard)h(mec)o(hanism)f(for)h(dealing)f
(with)g(exceptional)h(pro-)-1651 56 y(gram)g(conditions.)19 b(Th)o(us)14 b
(a)g(subset)g(of)g(the)h(signals)e(de\014ned)i(in)f(UNIX)h(w)o(ere)f
(retained)g(in)g(the)-1650 56 y(Standard,)j(along)f(with)h(the)g(basic)f
(mec)o(hanisms)h(of)f(declaring)h(signal)e(handlers)i(and)g(\(with)-1651 
57 y(adaptations,)f(see)h @F12 @sf(x)p @F14 @sf(4.7.2.1)o(\))e(raising)h
(signals.)23 b(F)l(or)17 b(a)f(discussion)h(of)f(the)h(problems)f(created)
-1650 56 y(b)o(y)g(including)f(signals,)e(see)j @F12 @sf(x)p @F14 @sf
(2.2.3.)o -550 60 a(The)f(signal)e(mac)o(hinery)h(con)o(tains)g(man)o(y)g
(misnomers:)19 b @F8 @sf(SIGFPE)p @F14 @sf(,)13 b @F8 @sf(SIGILL)p @F14 @sf
(,)h(and)g @F8 @sf(SIGSEGV)-1651 57 y @F14 @sf(ha)o(v)o(e)e(their)g(ro)q
(ots)g(in)g(PDP-11)f(hardw)o(are)h(terminology)l(,)o 12 x(but)g(the)h
(names)f(are)g(to)q(o)g(en)o(trenc)o(hed)-1650 56 y(to)18 b(c)o(hange.)29 b
(\(The)18 b(o)q(ccurrence)i(of)e @F8 @sf(SIGFPE)p @F14 @sf(,)f(for)g
(instance,)i(do)q(es)f(not)g(necessarily)g(indicate)-1651 57 y(a)h
(\015oating-p)q(oin)o(t)e(error.\))28 b(A)19 b(conforming)f(implemen)o
(tati)o(on)f(is)h(not)g(required)h(to)f(\014eld)h @F11 @sf(any)-1651 56 y 
@F14 @sf(hardw)o(are)c(in)o(terrupts.)-338 60 y(The)i(Committee)e(has)h
(reserv)o(ed)h(the)f(space)h(of)f(names)h(b)q(eginning)f(with)g @F8 @sf
(SIG)g @F14 @sf(to)g(p)q(ermit)-1651 56 y(implemen)o(tations)e(to)i(add)f
(lo)q(cal)g(names)h(to)f @F8 @sf(<signal.h>)p @F14 @sf(.)20 b(This)c
(implies)e(that)h(suc)o(h)h(names)-1650 57 y(should)g(not)e(b)q(e)i
(otherwise)f(used)h(in)f(a)f(C)h(source)h(\014le)f(whic)o(h)g(includes)g 
@F8 @sf(<signal.h>)p @F14 @sf(.)-1502 140 y @F6 @sf(4.7.1)56 b(Sp)r(ecify)
17 b(signal)h(handling)-736 93 y @F9 @sf(4.7.1.1)52 b(The)18 b @F8 @sf
(signal)e @F9 @sf(function)-655 92 y @F14 @sf(When)d(a)f(signal)f(o)q
(ccurs)h(the)g(normal)f(\015o)o(w)h(of)g(con)o(trol)e(of)i(a)g(program)f
(is)g(in)o(terrupted.)19 b(If)12 b(a)g(sig-)-1651 56 y(nal)i(o)q(ccurs)g
(that)f(is)g(b)q(eing)h(trapp)q(ed)g(b)o(y)g(a)f(signal)g(handler,)g(that)g
(handler)h(is)f(in)o(v)o(ok)o(ed.)19 b(When)-1650 57 y(it)e(is)h(\014nished,)g
(execution)g(con)o(tin)o(ues)g(at)f(the)g(p)q(oin)o(t)h(at)f(whic)o(h)g
(the)h(signal)f(o)q(ccurred.)28 b(This)-1651 56 y(arrangemen)o(t)17 b
(could)h(cause)g(problems)f(if)h(the)f(signal)g(handler)h(in)o(v)o(ok)o
(es)f(a)g(library)g(function)-1651 57 y(that)g(w)o(as)g(b)q(eing)g
(executed)i(at)e(the)g(time)g(of)g(the)g(signal.)25 b(Since)18 b(library)f
(functions)g(are)g(not)-1651 56 y(guaran)o(teed)h(to)f(b)q(e)h(re-en)o
(tran)o(t,)g(they)f(should)h(not)f(b)q(e)i(called)e(from)g(a)h(signal)e
(handler)i(that)-1651 57 y(returns.)30 b(\(See)19 b @F12 @sf(x)p @F14 @sf
(2.2.3.\))28 b(A)19 b(sp)q(eci\014c)g(exception)g(to)f(this)g(rule)g(has)h
(b)q(een)h(gran)o(ted)d(for)h(calls)-1651 56 y(to)d @F8 @sf(signal)f 
@F14 @sf(from)g(within)g(the)h(signal)e(handler;)i(otherwise,)f(the)g
(handler)h(could)g(not)g(reliably)-1652 57 y(reset)g(the)h(signal.)-428 
124 y
86 @eop1

87 @bop0
@F10 @sf
[<
83E000C43800E81C00700E007007007007807003807003C07003C03801E03801E03801E038
01E03801E03801C01C01C01C01C01E03801D87001C7C001C00000E00000E00000E00000E00
000E00000E00000700000700000F00003F0000070000>
. 19 32 -5 31 25] 98 @dc
@F4 @sf
[<
000001C0000000000003E0000000000003E0000000000007F0000000000007F00000000000
0FF800000000000FF800000000000FF800000000001FFC00000000001FFC00000000003FFE
00000000003FCE00000000007FCF00000000007F870000000000FF878000000000FF038000
000000FF038000000001FF01C000000001FE01C000000003FE01E000000003FC00E0000000
07FC00F000000007F8007000000007F800700000000FF000380000000FF000380000001FF0
001C0000001FE0001C0000003FE0001E0000003FC0000E0000007FC0000F0000007F800007
0000007F800007000000FF000003800000FF000003800001FF000003C00001FE000001C000
03FE000001E000FFFFF0003FFF80FFFFF0003FFF80FFFFF0003FFF80>
. 49 41 -1 40 52] 86 @dc
[<
0E01FC00000F07FF80000F9E07E0000FF803F0000FF001F8000FE000FC000FE000FE000FE0
007F000FE0007F000FE0007F000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F
800FE0007F800FE0007F800FE0007F000FE0007F000FE0007F000FE000FE000FE000FC000F
F000F8000FF801F0000FFE07E0000FE7FF80000FE1FE00000FE00000000FE00000000FE000
00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000
0FE00000000FE0000000FFE0000000FFE0000000FFE0000000>
. 33 42 -2 41 38] 98 @dc
[<
FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE01C00000FF0001C00000FF0001E00001FF0000
E00001FE0000E00001FE0000700003FC0000700003FC0000780007FC00003FFFFFF800003F
FFFFF800001FFFFFF000001C000FF000001E001FF000000E001FE000000E003FE000000700
3FC0000007003FC0000007807FC0000003807F80000003C0FF80000001C0FF00000001C0FF
00000000E1FE00000000E1FE00000000F3FE0000000073FC0000000073FC000000003FF800
0000003FF8000000003FF8000000001FF0000000001FF0000000000FE0000000000FE00000
00000FE00000000007C00000000007C00000000003800000>
. 47 41 -2 40 52] 65 @dc
@F0 @sf
[<
00F83FE003FE3FE007FFBFE01FFFFFE01F83FC003E01FC003C00FC0078007C0078007C00F8
003C00F0003C00F0003C00F0003C00F0003C00F0003C00F0003C00F8003C0078003C007C00
3C003C007C003E00FC001F81FC000FFFFC0007FFBC0003FF3C0000FC3C0000003C0000003C
0000003C0000003C0000003C0000003C0000003C000007FC000007FC000007FC000007FC00
>
. 27 37 -2 36 31] 100 @dc
@F6 @sf
[<
0000380000000038000000007C000000007C00000000FE00000000FE00000000FE00000001
FF00000001FF00000003FD80000003F980000007F9C0000007F0C0000007F0C000000FF060
00000FE06000001FE03000001FC03000003FC03800003F801800003F801800007F800C0000
7F000C0000FF00060000FE00060001FE00070001FC00030001FC00030003F800018003F800
018007F80000C007F00000C0FFFF800FFEFFFF800FFE>
. 39 34 -1 33 42] 86 @dc

87 @eop0

0 0 87 @bop1 112 50 a @F10 @sf(4.8.)35 b(V)l(ariable)14 b(Argumen)o(ts)h 
@F8 @sf(<stdarg.h>)846 b @F14 @sf(87)-1580 145 y(The)15 b(sp)q(eci\014cation)h
(that)e(some)h(signals)f(ma)o(y)g(b)q(e)i(e\013ectiv)o(ely)e(set)h(to)g 
@F8 @sf(SIG)s 14 -2 z 13 x(IGN)g @F14 @sf(instead)g(of)-1651 57 y @F8 @sf
(SIG)s 14 -2 z 14 x(DFL)j @F14 @sf(at)g(program)f(startup)h(allo)o(ws)e
(programs)i(under)h(UNIX)g(systems)e(to)h(inherit)g(this)-1651 56 y
(e\013ectiv)o(e)d(setting)f(from)h(paren)o(t)f(pro)q(cesses.)-698 58 y(F)l
(or)f(p)q(erformance)h(reasons,)f(UNIX)h(do)q(es)g(not)f(reset)g @F8 @sf
(SIGILL)g @F14 @sf(to)g(default)g(handling)g(when)-1650 57 y(the)19 b
(handler)g(is)f(called)g(\(usually)f(to)h(em)o(ulate)g(missing)f
(instructions\).)29 b(This)18 b(treatmen)o(t)f(is)-1651 56 y(sanctioned)i
(b)o(y)f(sp)q(ecifying)g(that)g(whether)h(reset)f(o)q(ccurs)g(for)g @F8 @sf
(SIGILL)g @F14 @sf(is)g @F11 @sf(implementation-)-1651 57 y(de\014ne)n(d)p 
@F14 @sf(.)-151 132 y @F6 @sf(4.7.2)56 b(Send)18 b(signal)-449 90 y @F9 @sf
(4.7.2.1)52 b(The)18 b @F8 @sf(raise)e @F9 @sf(function)-631 89 y @F14 @sf
(The)e(function)g @F8 @sf(raise)f @F14 @sf(replaces)h(the)f(Base)h(Do)q
(cumen)o(t's)f @F8 @sf(kill)g @F14 @sf(function.)20 b(The)14 b(latter)e
(has)h(an)-1650 56 y(extra)k(argumen)o(t)g(whic)o(h)g(refers)h(to)e(the)i
(\\pro)q(cess)f(ID")h(a\013ected)f(b)o(y)g(the)h(signal.)25 b(Since)18 b
(the)-1650 57 y(execution)11 b(mo)q(del)g(of)f(the)h(Standard)g(do)q(es)g
(not)f(deal)h(with)f(m)o(ulti-pro)q(cessing,)g(the)h(Committee)-1652 56 y
(deemed)21 b(it)e(preferable)g(to)g(in)o(tro)q(duce)h(a)f(function)h(whic)o
(h)f(requires)h(no)f(\(dumm)o(y\))g(pro)q(cess)-1650 57 y(argumen)o(t.)g
(The)c(Committee)e(an)o(ticipates)g(that)h(IEEE)g(1003)g(will)f(wish)h(to)f
(standardize)h(the)-1650 56 y @F8 @sf(kill)h @F14 @sf(function)g(in)g(the)g
(POSIX)i(sp)q(eci\014cation.)-835 154 y @F4 @sf(4.8)70 b(V)-6 b(ariable)
24 b(Argumen)n(ts)-603 75 y @F0 @sf(<stdar)q(g.)q(h>)-469 105 y @F14 @sf
(F)l(or)15 b(a)g(discussion)g(of)g(argumen)o(t)f(passing)h(issues,)f(see)i 
@F12 @sf(x)p @F14 @sf(3.7.1.)o -1017 58 a(These)g(macros,)f(mo)q(deled)h
(after)f(the)h(UNIX)g @F8 @sf(<varargs.h>)e @F14 @sf(macros,)h(ha)o(v)o(e)g
(b)q(een)i(added)-1650 57 y(to)d(enable)g(the)g(p)q(ortable)f(implemen)o
(tation)f(in)i(C)g(of)f(library)g(functions)h(suc)o(h)g(as)f @F8 @sf
(printf)g @F14 @sf(and)-1650 56 y @F8 @sf(scanf)18 b @F14 @sf(\(see)h 
@F12 @sf(x)p @F14 @sf(4.9.6\).)o 29 x(Suc)o(h)h(implemen)o(tatio)o(n)e
(could)g(otherwise)g(b)q(e)h(di\016cult,)g(considering)-1651 57 y(new)o
(er)13 b(mac)o(hines)g(that)f(ma)o(y)g(pass)g(argumen)o(ts)g(in)h(mac)o
(hine)f(registers)g(rather)g(than)h(using)f(the)-1650 56 y(more)j
(traditional)o 14 x(stac)o(k-orien)o(ted)f(metho)q(ds.)-741 58 y(The)g
(de\014nitions)f(of)g(these)h(macros)f(in)g(the)h(Standard)g(di\013er)f
(from)f(their)i(foreb)q(ears:)k(they)-1650 57 y(ha)o(v)o(e)h(b)q(een)g
(extended)h(to)e(supp)q(ort)g(argumen)o(t)g(lists)f(that)h(ha)o(v)o(e)g(a)h
(\014xed)g(set)f(of)g(argumen)o(ts)-1651 56 y(preceding)e(the)f(v)m
(ariable)g(list.)-458 59 y @F8 @sf(va)s 14 -2 z 14 x(start)j @F14 @sf(and)h 
@F8 @sf(va)s 14 -2 z 14 x(arg)f @F14 @sf(m)o(ust)g(exist)g(as)g(macros,)g
(since)h @F8 @sf(va)s 14 -2 z 14 x(start)f @F14 @sf(uses)h(an)f(argumen)o
(t)-1651 56 y(that)e(is)g(passed)h(b)o(y)f(name)h(and)g @F8 @sf(va)s 14 
-2 z 14 x(arg)f @F14 @sf(uses)g(an)h(argumen)o(t)e(whic)o(h)i(is)f(the)g
(name)h(of)f(a)g(data)-1651 57 y(t)o(yp)q(e.)k(Using)15 b @F8 @sf(#undef)g 
@F14 @sf(on)g(these)g(names)g(leads)g(to)g @F11 @sf(unde\014ne)n(d)g(b)n
(ehavior)p @F14 @sf(.)-1203 58 y(The)h @F8 @sf(va)s 14 -2 z 14 x(list)f 
@F14 @sf(t)o(yp)q(e)g(is)h(not)f(necessarily)g(assignable.)20 b(Ho)o(w)o
(ev)o(er,)14 b(a)h(function)h(can)f(pass)h(a)-1651 56 y(p)q(oin)o(ter)f
(to)g(its)f(initiali)o(zed)h(argumen)o(t)f(list)g(ob)s(ject,)g(as)h(noted)g
(b)q(elo)o(w.)-1224 133 y @F6 @sf(4.8.1)56 b(V)-5 b(ariable)18 b(argumen)n
(t)h(list)f(access)g(macros)-1076 89 y @F9 @sf(4.8.1.1)52 b(The)18 b @F8 @sf
(va)s 14 -2 z 14 x(start)e @F9 @sf(macro)-649 90 y @F8 @sf(va)s 14 -2 z 
14 x(start)f @F14 @sf(m)o(ust)g(b)q(e)h(called)g(within)e(the)i(b)q(o)q
(dy)g(of)f(the)h(function)f(whose)h(argumen)o(t)f(list)f(is)h(to)-1651 56 y
(b)q(e)21 b(tra)o(v)o(ersed.)31 b(That)19 b(function)g(can)g(then)h(pass)f
(a)g(p)q(oin)o(ter)g(to)g(its)g @F8 @sf(va)s 14 -2 z 13 x(list)g @F14 @sf
(ob)s(ject)g @F8 @sf(ap)g @F14 @sf(to)-1651 57 y(other)14 b(functions)f
(to)g(do)h(the)g(actual)f(tra)o(v)o(ersal)o(.)18 b(\(It)c(can,)f(of)h
(course,)f(tra)o(v)o(erse)g(the)h(list)e(itself.\))-253 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
87 @eop1

88 @bop0
@F4 @sf
[<
60000000F0000000F0000000F800000078000000780000007C0000003C0000003E0000001E
0000001E0000001F0000000F0000000F0000000F8000000780000007C0000003C0000003C0
000003E0000001E0000001E0000001F0000000F0000000F800000078000000780000007C00
00003C0000003C0000003E0000001E0000001F0000000F0000000F0000000F800000078000
0007C0000003C0000003C0000003E0000001E0000001E0000001F0000000F0000000F80000
0078000000780000007C0000003C0000003C0000003E0000001E0000001F0000000F000000
0F0000000F80000007800000078000000300>
. 25 60 -4 44 34] 47 @dc

88 @eop0

0 0 88 @bop1 112 50 a @F14 @sf(88)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1578 145 y @F14 @sf(The)15 b @F8 @sf(parmN)g @F14 @sf
(argumen)o(t)f(to)g @F8 @sf(va)s 14 -2 z 14 x(start)g @F14 @sf(is)h(an)g
(aid)f(to)h(writing)e(conforming)h(ANSI)i(C)f(co)q(de)-1650 57 y(for)h
(existing)e(C)i(implemen)o(tatio)o(ns.)k(Man)o(y)15 b(implemen)o(tations)f
(can)i(use)g(the)g(second)g(param-)-1651 56 y(eter)g(within)e(the)i
(structure)f(of)g(existing)f(C)h(language)g(constructs)g(to)g(deriv)o(e)g
(the)g(address)h(of)-1651 56 y(the)d(\014rst)g(v)m(ariable)f(argumen)o(t.)
19 b(\(Declaring)11 b @F8 @sf(parmN)h @F14 @sf(to)g(b)q(e)i(of)e(storage)g
(class)g @F8 @sf(register)g @F14 @sf(w)o(ould)-1651 57 y(in)o(terfere)17 b
(with)f(use)i(of)e(these)h(constructs;)g(hence)i(the)e(e\013ect)f(of)h
(suc)o(h)g(a)g(declaration)f(is)g @F11 @sf(un-)-1650 56 y(de\014ne)n(d)g
(b)n(ehavior)p @F14 @sf(.)21 b(Other)15 b(restrictions)f(on)h(the)h(t)o
(yp)q(e)f(of)g @F8 @sf(parmN)g @F14 @sf(are)g(imp)q(osed)g(for)g(the)h
(same)-1651 57 y(reason.\))31 b(New)19 b(implemen)o(tatio)o(ns)f(ma)o(y)g
(c)o(ho)q(ose)h(to)f(use)i(hidden)f(mac)o(hinery)g(that)f(ignores)-1651 
56 y(the)h(second)h(argumen)o(t)e(to)g @F8 @sf(va)s 14 -2 z 14 x(start)p 
@F14 @sf(,)h(p)q(ossibly)f(ev)o(en)i(hiding)e(a)h(function)g(call)f
(inside)g(the)-1650 57 y(macro.)-64 57 y(Multiple)g @F8 @sf(va)s 14 -2 z 
14 x(list)h @F14 @sf(v)m(ariables)f(can)h(b)q(e)h(in)f(use)h(sim)o
(ulaneously)e(in)h(the)g(same)g(function;)-1651 56 y(eac)o(h)d(requires)f
(its)f(o)o(wn)30 b(calls)14 b(to)h @F8 @sf(va)s 14 -2 z 14 x(start)f 
@F14 @sf(and)i @F8 @sf(va)s 14 -2 z 13 x(end)p @F14 @sf(.)-1041 122 y 
@F9 @sf(4.8.1.2)52 b(The)18 b @F8 @sf(va)s 14 -2 z 14 x(arg)f @F9 @sf
(macro)-602 86 y @F14 @sf(Changing)e(an)h(arbitrar)o(y)e @F11 @sf(typ)n(e)j
(name)h @F14 @sf(in)o(to)d(a)g(t)o(yp)q(e)g(name)h(whic)o(h)f(is)g(a)g(p)q
(oin)o(ter)g(to)g(that)f(t)o(yp)q(e)-1650 57 y(could)j(require)g
(sophisticated)f(rewriting.)o 24 x(T)l(o)h(allo)o(w)o 16 x(the)g(implemen)o
(tati)o(on)f(of)g @F8 @sf(va)s 14 -2 z 14 x(arg)g @F14 @sf(as)h(a)-1651 
56 y(macro,)12 b @F8 @sf(va)s 14 -2 z 14 x(arg)g @F14 @sf(need)h(only)f
(correctly)f(handle)i(those)f(t)o(yp)q(e)g(names)g(that)g(can)g(b)q(e)h
(transformed)-1651 57 y(in)o(to)d(the)h(appropriate)f(p)q(oin)o(ter)g(t)o
(yp)q(e)h(b)o(y)f(app)q(ending)i(a)e @F8 @sf(*)p @F14 @sf(,)h(whic)o(h)g
(handles)g(most)f(simple)g(cases.)-1651 56 y(\(T)o(yp)q(edefs)19 b(can)g
(b)q(e)g(de\014ned)i(to)d(reduce)h(more)f(complicated)g(t)o(yp)q(es)h(to)f
(a)g(tractable)g(form.\))-1652 57 y(When)c(using)f(these)g(macros)g(it)f
(is)h(imp)q(ortan)o(t)f(to)g(remem)o(b)q(er)h(that)g(the)g(t)o(yp)q(e)g
(of)g(an)g(argumen)o(t)-1651 56 y(in)j(a)g(v)m(ariable)f(argumen)o(t)g
(list)g(will)f(nev)o(er)i(b)q(e)h(an)f(in)o(teger)f(t)o(yp)q(e)h(smaller)e
(than)i @F8 @sf(int)p @F14 @sf(,)f(nor)h(will)-1652 56 y(it)f(ev)o(er)g(b)q
(e)h @F8 @sf(float)p @F14 @sf(.)j(\(See)d @F12 @sf(x)p @F14 @sf(3.5.4.)o
(3.\))o -564 57 a @F8 @sf(va)s 14 -2 z 14 x(arg)h @F14 @sf(can)h(only)f(b)q
(e)h(used)g(to)f(access)h(the)g(v)m(alue)g(of)f(an)g(argumen)o(t,)g(not)g
(to)g(obtain)g(its)-1651 57 y(address.)-160 122 y @F9 @sf(4.8.1.3)52 b
(The)18 b @F8 @sf(va)s 14 -2 z 14 x(end)f @F9 @sf(macro)-602 86 y @F8 @sf
(va)s 14 -2 z 14 x(end)c @F14 @sf(m)o(ust)g(also)f(b)q(e)i(called)f(from)g
(within)f(the)i(b)q(o)q(dy)g(of)f(the)g(function)g(ha)o(ving)g(the)g(v)m
(ariable)-1651 56 y(argumen)o(t)j(list.)21 b(In)c(man)o(y)e(implemen)o
(tations,)g(this)g(is)h(a)f(do-nothing)h(op)q(eration;)f(but)i(those)-1651 
57 y(implemen)o(tations)d(that)g(need)i(it)f(probably)g(need)h(it)e(badly)l
(.)-1054 145 y @F4 @sf(4.9)70 b(Input/Output)-421 75 y @F0 @sf(<stdio)q
(.h)q(>)-438 102 y @F14 @sf(Man)o(y)11 b(implemen)o(tations)f(of)i(the)f
(C)h(run)o(time)f(en)o(vironmen)o(t)g(\(most)f(notably)h(the)h(UNIX)g(op)q
(er-)-1650 56 y(ating)i(system\))g(pro)o(vide,)g(aside)h(from)f(the)h
(standard)f(I/O)i(library)d(\()p @F8 @sf(fopen)p @F14 @sf(,)h @F8 @sf
(fclose)p @F14 @sf(,)g @F8 @sf(fread)p @F14 @sf(,)-1652 57 y @F8 @sf
(fwrite)p @F14 @sf(,)e @F8 @sf(fseek)p @F14 @sf(\),)f(a)h(set)f(of)h(un)o
(bu\013ered)h(I/O)f(services)g(\()p @F8 @sf(open)p @F14 @sf(,)f @F8 @sf
(close)p @F14 @sf(,)h @F8 @sf(read)p @F14 @sf(,)f @F8 @sf(write)p @F14 @sf
(,)h @F8 @sf(lseek)p @F14 @sf(\).)-1652 56 y(The)k(Committee)e(has)h
(decided)h(not)f(to)f(standardize)h(the)g(latter)f(set)h(of)g(functions.)
-1401 57 y(A)i(suggested)g(seman)o(tics)e(for)i(these)g(functions)f(in)h
(the)g(UNIX)g(w)o(orld)f(ma)o(y)g(b)q(e)h(found)h(in)-1651 56 y(the)f
(emerging)f(IEEE)g(P1003)g(standard.)23 b(The)16 b(standard)g(I/O)h
(library)e(functions)i(use)f(a)g @F11 @sf(\014le)-1651 57 y(p)n(ointer)22 b 
@F14 @sf(for)15 b(referring)h(to)g(the)g(desired)h(I/O)g(stream.)22 b(The)
17 b(un)o(bu\013ered)g(I/O)g(services)f(use)h(a)-1651 56 y @F11 @sf(\014le)f
(descriptor)k @F14 @sf(\(a)15 b(small)f(in)o(teger\))g(to)g(refer)h(to)g
(the)g(desired)h(I/O)f(stream.)-1250 57 y(Due)i(to)f(w)o(eak)g(implemen)o
(tations)f(of)h(the)h(standard)g(I/O)g(library)l(,)e(man)o(y)i(implemen)o
(tors)-1652 57 y(ha)o(v)o(e)c(assumed)h(that)e(the)h(standard)g(I/O)h
(library)e(w)o(as)g(used)i(for)e(small)g(records)h(and)h(that)e(the)-1762 
124 y
88 @eop1

89 @bop0
@F10 @sf
[<
800000C00000C000006000006000003000003000001800001800000C00000C000006000006
000006000003000003000001800001800000C00000C0000060000060000030000030000018
00001800000C00000C000006000006000003000003000001800001800000C00000C0000060
00006000003000003000001800001800000C00000C000004>
. 22 45 -2 33 23] 47 @dc
@F8 @sf
[<
7F03F0FF87F87F03F01C01C01C03801C03801C07001C07001C0E001C0E001E1C001F1C001F
B8001FB8001DF0001DF0001CF0001C70001C38001C3C001C1E001C0E001C07001C07801C03
C07F07F0FF87F87F07F0>
. 21 28 -1 27 24] 75 @dc

89 @eop0

0 0 89 @bop1 112 50 a @F10 @sf(4.9.)35 b(Input/Output)16 b @F8 @sf
(<stdio.h>)988 b @F14 @sf(89)-1651 145 y(un)o(bu\013ered)15 b(I/O)f
(library)f(w)o(as)g(used)i(for)e(large)g(records.)19 b(Ho)o(w)o(ev)o(er,)
13 b(a)g(go)q(o)q(d)h(implemen)o(tation)-1652 57 y(of)k(the)f(standard)g
(I/O)h(library)e(can)i(matc)o(h)f(the)g(p)q(erformance)h(of)f(the)g(un)o
(bu\013ered)i(services)-1651 56 y(on)d(large)e(records.)20 b(The)c(user)f
(also)f(has)i(the)f(capabilit)o(y)f(of)h(tuning)g(the)g(p)q(erformance)g
(of)g(the)-1650 56 y(standard)g(I/O)h(library)e(\(with)g @F8 @sf(setvbuf)p 
@F14 @sf(\))g(to)h(suit)f(the)h(application.)-1134 57 y(Some)e(subtle)f
(di\013erences)h(b)q(et)o(w)o(een)g(the)g(t)o(w)o(o)e(sets)h(of)g
(services)h(can)g(mak)o(e)f(the)g(implemen-)-1650 56 y(tation)i(of)h(the)g
(un)o(bu\013ered)h(I/O)g(services)f(di\016cult:)-841 92 y @F12 @sf(\017)
22 b @F14 @sf(The)11 b(mo)q(del)g(of)g(a)f(\014le)h(used)h(in)e(the)h(un)o
(bu\013ered)h(I/O)f(services)g(is)g(an)f(arra)o(y)g(of)h(c)o(haracters.)
-1538 56 y(Man)o(y)k(C)g(en)o(vironmen)o(ts)f(do)h(not)g(supp)q(ort)g
(this)g(\014le)g(mo)q(del.)-1107 93 y @F12 @sf(\017)22 b @F14 @sf
(Di\016culties)15 b(arise)h(when)i(handling)e(the)h(new-line)f(c)o
(haracter.)24 b(Man)o(y)16 b(hosts)g(use)h(con-)-1536 57 y(v)o(en)o(tions)c
(other)g(than)h(an)f(in-stream)g(new-line)h(c)o(haracter)f(to)g(mark)g
(the)g(end)i(of)e(a)g(line.)-1537 56 y(The)19 b(un)o(bu\013ered)g(I/O)g
(services)g(assume)f(that)g(no)h(translati)o(on)e(o)q(ccurs)i(b)q(et)o(w)o
(een)g(the)-1536 56 y(program's)13 b(data)i(and)g(the)g(\014le)g(data)f
(when)h(p)q(erforming)f(I/O,)h(so)g(either)f(the)h(new-line)-1536 57 y(c)o
(haracter)d(translation)f(w)o(ould)i(b)q(e)g(lost)f(\(whic)o(h)h(breaks)f
(programs\))g(or)g(the)h(implemen-)-1536 56 y(tor)j(m)o(ust)h(b)q(e)h(a)o
(w)o(are)d(of)i(the)g(new-line)g(translation)f(\(whic)o(h)g(results)h(in)g
(non-p)q(ortable)-1537 57 y(programs\).)-262 93 y @F12 @sf(\017)22 b 
@F14 @sf(On)g(UNIX)g(systems,)f(\014le)h(descriptors)e(0,)g(1,)i(and)g(2)f
(corresp)q(ond)g(to)g(the)g(standard)-1537 56 y(input,)g(output,)g(and)f
(error)f(streams.)33 b(This)20 b(con)o(v)o(en)o(tion)f(ma)o(y)g(b)q(e)i
(problematic)e(for)-1537 57 y(other)i(systems)f(in)h(that)f(\(1\))f(\014le)i
(descriptors)g(0,)f(1,)h(and)g(2)g(ma)o(y)f(not)g(b)q(e)i(a)o(v)m(ailable)
-1538 56 y(or)16 b(ma)o(y)g(b)q(e)h(reserv)o(ed)g(for)f(another)g(purp)q
(ose,)h(\(2\))f(the)g(op)q(erating)g(system)g(ma)o(y)g(use)h(a)-1537 56 y
(di\013eren)o(t)e(set)g(of)f(services)h(for)g(terminal)f(I/O)h(than)h(\014le)f
(I/O.)-1119 92 y(In)d(summary)l(,)f(the)h(Committee)e(c)o(hose)h(not)g(to)g
(standardize)g(the)h(un)o(bu\013ered)g(I/O)g(services)-1651 56 y(b)q
(ecause:)-96 92 y @F12 @sf(\017)22 b @F14 @sf(They)16 b(duplicate)f(the)g
(faciliti)o(es)f(pro)o(vided)h(b)o(y)g(the)g(standard)g(I/O)h(services.)
-1388 93 y @F12 @sf(\017)22 b @F14 @sf(The)15 b(p)q(erformance)f(of)g(the)g
(standard)g(I/O)h(services)f(can)g(b)q(e)h(the)g(same)f(or)f(b)q(etter)i
(than)-1537 56 y(the)g(un)o(bu\013ered)h(I/O)g(services.)-602 93 y @F12 @sf
(\017)22 b @F14 @sf(The)17 b(un)o(bu\013ered)g(I/O)h(\014le)e(mo)q(del)h
(ma)o(y)f(not)g(b)q(e)i(appropriate)d(for)h(man)o(y)h(C)f(language)-1537 
56 y(en)o(vironmen)o(ts.)-392 122 y @F6 @sf(4.9.1)56 b(In)n(tro)r(duction)
-481 85 y @F14 @sf(The)23 b(macros)i 14 -2 z 14 x @F8 @sf(IOFBF)p @F14 @sf
(,)f 14 -2 z 14 x @F8 @sf(IOLBF)p @F14 @sf(,)g 14 -2 z 15 x @F8 @sf(IONBF)d 
@F14 @sf(are)i(en)o(umerations)e(of)h(the)h(third)e(argumen)o(t)h(to)-1651 
57 y @F8 @sf(setvbuf)p @F14 @sf(,)14 b(a)h(function)g(adopted)g(from)g
(UNIX)h(System)f(V.)-961 56 y @F8 @sf(SEEK)s 14 -2 z 14 x(CUR)p @F14 @sf
(,)10 b @F8 @sf(SEEK)s 14 -2 z 13 x(END)p @F14 @sf(,)g(and)h @F8 @sf(SEEK)s 
14 -2 z 14 x(SET)f @F14 @sf(ha)o(v)o(e)g(b)q(een)i(mo)o(v)o(ed)e(to)g 
@F8 @sf(<stdio.h>)g @F14 @sf(from)g(a)g(header)-1650 57 y(sp)q(eci\014ed)
17 b(in)e(the)g(Base)g(Do)q(cumen)o(t)g(and)h(not)f(retained)f(in)i(the)f
(Standard.)-1244 56 y @F8 @sf(FOPEN)s 14 -2 z 14 x(MAX)f @F14 @sf(and)h 
@F8 @sf(TMP)s 14 -2 z 13 x(MAX)g @F14 @sf(are)f(added)h(en)o(vironmen)o
(tal)e(limits)g(of)i(some)f(in)o(terest)g(to)g(pro-)-1651 57 y(grams)h
(that)f(manipulate)h(m)o(ultiple)f(temp)q(orary)g(\014les.)-889 56 y @F8 @sf
(FILENAME)s 14 -2 z 13 x(MAX)g @F14 @sf(is)g(pro)o(vided)g(so)g(that)f
(bu\013ers)i(to)e(hold)h(\014le)h(names)f(can)g(b)q(e)h(con)o(v)o(enien)o
(tly)-1651 57 y(declared.)22 b(If)15 b(the)h(target)e(system)h(supp)q
(orts)h(arbitrari)o(ly)e(long)h(\014lenames,)g(the)h(implemen)o(tor)-1652 
56 y(should)23 b(pro)o(vide)e(some)h(reasonable)g(v)m(alue)g(\(80?,)i
(255?,)f(509?\))40 b(rather)22 b(than)g(something)-1651 57 y(un)o(usable)
16 b(lik)o(e)e @F8 @sf(USHRT)s 14 -2 z 14 x(MAX)p @F14 @sf(.)905 124 y 
@F15 @sf(RA)m(TIONALE)-1763 b
89 @eop1

90 @bop0

90 @eop0
0 0 90 @bop1 112 50 a @F14 @sf(90)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F6 @sf(4.9.2)56 b(Streams)-370 86 y @F14 @sf
(C)16 b(inherited)g(its)f(notion)g(of)h(text)f(streams)g(from)g(the)h
(UNIX)g(en)o(vironmen)o(t)g(in)f(whic)o(h)h(it)f(w)o(as)-1651 57 y(b)q
(orn.)28 b(Ha)o(ving)17 b(eac)o(h)g(line)h(delimited)f(b)o(y)g(a)g(single)g 
@F11 @sf(new-line)j @F14 @sf(c)o(haracter,)d(regardless)g(of)g(the)-1650 
56 y(c)o(haracteristics)d(of)g(the)h(actual)f(terminal,)f(supp)q(orted)j
(a)e(simple)g(mo)q(del)h(of)g(text)f(as)g(a)h(sort)f(of)-1651 57 y
(arbitrary)i(length)g(scroll)g(or)g(\\galley)l(.")23 b(Ha)o(ving)16 b(a)g
(c)o(hannel)h(that)f(is)h(\\transparen)o(t")e(\(no)h(\014le)-1650 56 y
(structure)f(or)f(reserv)o(ed)g(data)g(enco)q(dings\))h(eliminated)f(the)g
(need)i(for)e(a)g(distinction)f(b)q(et)o(w)o(een)-1650 56 y(text)i(and)h
(binary)e(streams.)-421 57 y(Man)o(y)f(other)h(en)o(vironmen)o(ts)f(ha)o
(v)o(e)h(di\013eren)o(t)f(prop)q(erties,)h(ho)o(w)o(ev)o(er.)k(If)d(a)e
(program)g(writ-)-1651 56 y(ten)19 b(in)f(C)g(is)f(to)h(pro)q(duce)h(a)f
(text)g(\014le)g(digestible)f(b)o(y)h(other)g(programs,)f(b)o(y)i(text)e
(editors)h(in)-1651 57 y(particular,)13 b(it)g(m)o(ust)g(conform)g(to)g
(the)h(text)g(formatt)o(ing)e(con)o(v)o(en)o(tions)h(of)g(that)g(en)o
(vironmen)o(t.)-1580 57 y(The)21 b(I/O)f(facilities)f(de\014ned)i(b)o(y)g
(the)f(Standard)g(are)g(b)q(oth)g(more)g(complex)g(and)h(more)-1651 56 y
(restrictiv)o(e)14 b(than)i(the)f(ancestral)g(I/O)h(faciliti)o(es)e(of)h
(UNIX.)22 b(This)15 b(is)g(justi\014ed)g(on)h(pragmatic)-1652 56 y
(grounds:)24 b(most)16 b(of)h(the)g(di\013erences,)g(restrictions)f(and)h
(omissions)f(exist)g(to)g(p)q(ermit)h(C)g(I/O)-1650 57 y(implemen)o
(tations)d(in)h(en)o(vironmen)o(ts)f(whic)o(h)h(di\013er)g(from)f(the)i
(UNIX)g(I/O)f(mo)q(del.)-1394 56 y(T)l(roublesome)g(asp)q(ects)g(of)g(the)g
(stream)g(concept)g(include:)-1096 107 y @F9 @sf(The)j(de\014nition)f(of)h
(lines.)j @F14 @sf(In)13 b(the)f(UNIX)i(mo)q(del,)e(division)g(of)g(a)g
(\014le)h(in)o(to)e(lines)h(is)g(e\013ected)-1536 57 y(b)o(y)21 b
(new-line)h(c)o(haracters.)37 b(Di\013eren)o(t)20 b(tec)o(hniques)h(are)g
(used)h(b)o(y)f(other)g(systems)g(|)-1536 56 y(lines)12 b(ma)o(y)g(b)q(e)i
(separated)e(b)o(y)h(CR-LF)g(\(carriage)e(return,)i(line)g(feed\))g(or)f
(b)o(y)h(unrecorded)-1536 57 y(areas)19 b(on)g(the)g(recording)f(medium,)i
(or)f(eac)o(h)g(line)g(ma)o(y)f(b)q(e)i(pre\014xed)g(b)o(y)f(its)f
(length.)-1537 56 y(The)f(Standard)f(addresses)h(this)f(div)o(ersit)o(y)f
(b)o(y)h(sp)q(ecifying)g(that)g(new-line)h(b)q(e)g(used)g(as)-1537 57 y(a)e
(line)f(separator)f(at)i(the)f(program)g(lev)o(el,)g(but)h(then)g(p)q
(ermitting)e(an)i(implemen)o(tation)-1538 56 y(to)j(transform)g(the)h
(data)f(read)h(or)g(written)f(to)g(conform)g(to)h(the)g(con)o(v)o(en)o
(tions)f(of)g(the)-1536 57 y(en)o(vironmen)o(t.)-260 75 y(Some)j(en)o
(vironmen)o(ts)f(represen)o(t)h(text)g(lines)f(as)h(blank-\014lled)f
(\014xed-length)i(records.)-1537 56 y(Th)o(us)13 b(the)h(Standard)f(sp)q
(eci\014es)h(that)e(it)h(is)f @F11 @sf(implementation-de\014ne)n(d)17 b 
@F14 @sf(whether)c(trailing)-1538 57 y(blanks)19 b(are)f(remo)o(v)o(ed)g
(from)g(a)h(line)f(on)h(input.)31 b(\(This)18 b(sp)q(eci\014cation)g(also)g
(addresses)-1536 56 y(the)c(problems)g(of)g(en)o(vironmen)o(ts)g(whic)o(h)g
(represen)o(t)g(text)g(as)f(v)m(ariable-length)h(records,)-1537 57 y(but)
20 b(do)g(not)g(allo)o(w)e(a)i(record)g(length)g(of)f(0:)30 b(an)20 b
(empt)o(y)f(line)h(ma)o(y)f(b)q(e)i(written)e(as)h(a)-1537 56 y(one-c)o
(haracter)15 b(record)g(con)o(taining)f(a)h(blank,)g(and)g(the)g(blank)g
(is)g(stripp)q(ed)g(on)g(input.\))-1647 95 y @F9 @sf(T)l(ransparency)l(.)
22 b @F14 @sf(Some)17 b(programs)e(require)i(access)g(to)f(external)g
(data)h(without)e(mo)q(di\014ca-)-1536 56 y(tion.)24 b(F)l(or)16 b
(instance,)g(transformatio)o(n)g(of)g(CR-LF)h(to)f(new-line)h(c)o
(haracter)f(is)g(usually)-1537 57 y(not)d(desirable)f(when)i(ob)s(ject)e
(co)q(de)i(is)e(pro)q(cessed.)20 b(The)14 b(Standard)e(de\014nes)j(t)o(w)o
(o)c(stream)-1537 56 y(t)o(yp)q(es,)19 b @F11 @sf(text)k @F14 @sf(and)c 
@F11 @sf(binary)p @F14 @sf(,)g(to)f(allo)o(w)f(a)h(program)f(to)h(de\014ne,)j
(when)e(a)f(\014le)h(is)f(op)q(ened,)-1536 56 y(whether)f(the)f(preserv)m
(ation)g(of)g(its)g(exact)g(con)o(ten)o(ts)g(or)g(of)g(its)g(line)g
(structure)g(is)g(more)-1537 57 y(imp)q(ortan)o(t)e(in)h(an)g(en)o
(vironmen)o(t)g(whic)o(h)g(cannot)g(accurately)f(re\015ect)i(b)q(oth.)-1446 
94 y @F9 @sf(Random)i(access.)23 b @F14 @sf(The)17 b(UNIX)h(I/O)f(mo)q
(del)g(features)g(random)g(access)g(to)g(data)f(in)h(a)g(\014le,)-1537 57 y
(indexed)j(b)o(y)g(c)o(haracter)e(n)o(um)o(b)q(er.)33 b(On)20 b(systems)f
(where)h(a)f(new-line)h(c)o(haracter)f(pro-)-1537 56 y(cessed)e(b)o(y)e
(the)h(program)f(represen)o(ts)h(an)g(unkno)o(wn)g(n)o(um)o(b)q(er)g(of)f
(ph)o(ysically)g(recorded)-1536 57 y(c)o(haracters,)i(this)g(simple)g(mec)o
(hanism)g(cannot)g(b)q(e)i(consisten)o(tly)d(supp)q(orted)i(for)f(text)-1537 
56 y(streams.)24 b(The)18 b(Standard)f(abstracts)e(the)j(signi\014can)o(t)d
(prop)q(erties)i(of)g(random)f(access)-1536 57 y(for)i(text)g(streams:)25 b
(the)18 b(abilit)o(y)f(to)g(determine)h(the)h(curren)o(t)f(\014le)g(p)q
(osition)g(and)g(then)-1762 124 y
90 @eop1

91 @bop0

91 @eop0
0 0 91 @bop1 112 50 a @F10 @sf(4.9.)35 b(Input/Output)16 b @F8 @sf
(<stdio.h>)988 b @F14 @sf(91)-1537 145 y(later)19 b(rep)q(osition)h(the)g
(\014le)g(to)g(the)g(same)g(lo)q(cation.)34 b @F8 @sf(ftell)20 b @F14 @sf
(returns)g(a)g @F11 @sf(\014le)g(p)n(osition)-1537 57 y(indic)n(ator)p 
@F14 @sf(,)15 b(whic)o(h)h(has)f(no)h(necessary)f(in)o(terpretation)f
(except)i(that)f(an)h @F8 @sf(fseek)e @F14 @sf(op)q(era-)-1536 56 y(tion)j
(with)g(that)g(indicator)g(v)m(alue)h(will)f(p)q(osition)f(the)i(\014le)g
(to)f(the)h(same)g(place.)27 b(Th)o(us)-1536 56 y(an)16 b(implemen)o
(tation)f(ma)o(y)h(enco)q(de)h(whatev)o(er)f(\014le)g(p)q(ositioning)f
(informatio)o(n)g(is)h(most)-1537 57 y(appropriate)i(for)g(a)h(text)f
(\014le,)i(sub)s(ject)f(only)f(to)g(the)h(constrain)o(t)f(that)g(the)h
(enco)q(ding)-1536 56 y(b)q(e)f(represen)o(table)g(as)f(a)g @F8 @sf(long)p 
@F14 @sf(.)27 b(Use)17 b(of)g @F8 @sf(fgetpos)g @F14 @sf(and)h @F8 @sf
(fsetpos)e @F14 @sf(remo)o(v)o(es)h(ev)o(en)h(this)-1537 57 y(constrain)o
(t.)-327 104 y @F9 @sf(Bu\013ering.)23 b @F14 @sf(UNIX)18 b(allo)o(ws)e
(the)i(program)e(to)h(con)o(trol)g(the)g(exten)o(t)h(and)g(t)o(yp)q(e)g
(of)f(bu\013ering)-1537 56 y(for)f(v)m(arious)h(purp)q(oses.)25 b(F)l(or)
16 b(example,)h(a)g(program)e(can)i(pro)o(vide)g(its)f(o)o(wn)g(large)g
(I/O)-1536 57 y(bu\013er)d(to)g(impro)o(v)o(e)g(e\016ciency)l(,)h(or)e
(can)i(request)f(un)o(bu\013ered)h(terminal)f(I/O)g(to)g(pro)q(cess)-1536 
56 y(eac)o(h)f(input)h(c)o(haracter)e(as)h(it)f(is)h(en)o(tered.)19 b
(Other)12 b(systems)g(do)g(not)g(necessarily)f(supp)q(ort)-1536 57 y(this)
18 b(generalit)o(y)l(.)27 b(Some)19 b(systems)e(pro)o(vide)h(only)g
(line-at-a-time)f(access)h(to)g(terminal)-1538 56 y(input;)f(some)f
(systems)f(supp)q(ort)i(program-all)o(o)q(cated)e(bu\013ers)h(only)g(b)o
(y)g(cop)o(ying)g(data)-1537 57 y(to)j(and)h(from)f(system-allo)q(cated)g
(bu\013ers)h(for)f(pro)q(cessing.)33 b(Bu\013ering)20 b(is)f(addressed)-1536 
56 y(in)d(the)h(Standard)f(b)o(y)g(sp)q(ecifying)g(UNIX-lik)o(e)g @F8 @sf
(setbuf)g @F14 @sf(and)g @F8 @sf(setvbuf)f @F14 @sf(functions,)h(but)-1536 
56 y(p)q(ermitting)e(great)g(latitude)f(in)i(their)f(implemen)o(tation.)k
(A)d(conforming)f(library)g(need)-1536 57 y(neither)h(attempt)e(the)i(imp)q
(ossible)f(nor)g(resp)q(ond)h(to)f(a)h(program)e(attempt)h(to)g(impro)o(v)o
(e)-1538 56 y(e\016ciency)i(b)o(y)f(in)o(tro)q(ducing)g(additional)o 14 x
(o)o(v)o(erhead.)-948 119 y(Th)o(us,)d(the)g(Standard)g(imp)q(oses)g(a)g
(clear)f(distinction)g(b)q(et)o(w)o(een)h @F11 @sf(text)i(str)n(e)n(ams)p 
@F14 @sf(,)d(whic)o(h)h(m)o(ust)-1651 57 y(b)q(e)19 b(mapp)q(ed)g(to)e
(suit)h(lo)q(cal)f(custom,)h(and)g @F11 @sf(binary)h(str)n(e)n(ams)p 
@F14 @sf(,)e(for)h(whic)o(h)g(no)g(mapping)f(tak)o(es)-1651 56 y(place.)
28 b(Lo)q(cal)18 b(custom)g(on)f(UNIX)i(\(and)f(related\))f(systems)g(is)g
(of)h(course)g(to)f(treat)g(the)h(t)o(w)o(o)-1652 57 y(sorts)g(of)h
(streams)f(iden)o(tically)l(,)g(and)h(nothing)f(in)h(the)g(Standard)f
(requires)h(an)o(y)f(c)o(hanges)h(to)-1651 56 y(this)c(practice.)-188 59 y
(Ev)o(en)f(the)g(sp)q(eci\014cation)f(of)h(binary)f(streams)g(requires)h
(some)f(c)o(hanges)h(to)f(accommo)q(date)-1651 57 y(a)g(wide)h(range)f(of)f
(systems.)19 b(Because)14 b(man)o(y)f(systems)g(do)g(not)g(k)o(eep)g(trac)o
(k)g(of)g(the)g(length)g(of)g(a)-1651 56 y(\014le)h(to)e(the)h(nearest)g
(b)o(yte,)g(an)g(arbitrary)f(n)o(um)o(b)q(er)h(of)g(c)o(haracters)f(ma)o
(y)h(app)q(ear)g(on)g(the)g(end)h(of)-1651 56 y(a)f(binary)g(stream)g
(directed)g(to)g(a)g(\014le.)19 b(The)14 b(Standard)f(cannot)g(forbid)g
(this)f(implemen)o(tation,)-1652 57 y(but)17 b(do)q(es)g(require)g(that)e
(this)h(padding)h(consist)f(only)g(of)g(n)o(ull)g(c)o(haracters.)23 b(The)
17 b(alternativ)o(e)-1652 56 y(w)o(ould)12 b(b)q(e)i(to)d(restrict)h(C)g
(to)g(pro)q(ducing)h(binary)f(\014les)g(digestible)g(only)g(b)o(y)h(other)f
(C)g(programs;)-1652 57 y(this)j(alternativ)o(e)f(runs)h(coun)o(ter)g(to)f
(the)i @F11 @sf(spirit)g(of)g(C)p @F14 @sf(.)-863 59 y(The)11 b(set)f(of)f
(c)o(haracters)h(required)g(to)g(b)q(e)h(preserv)o(ed)f(in)g(text)g
(stream)f(I/O)i(are)f(those)g(needed)-1649 56 y(for)15 b(writing)f(C)i
(programs;)e(the)h(in)o(ten)o(t)g(is)g(the)g(Standard)h(should)f(p)q
(ermit)g(a)g(C)h(translato)o(r)e(to)-1651 57 y(b)q(e)k(written)e(in)h(a)g
(maximally)e(p)q(ortable)i(fashion.)24 b(Con)o(trol)16 b(c)o(haracters)g
(suc)o(h)i(as)e(bac)o(kspace)-1650 56 y(are)d(not)g(required)g(for)g(this)f
(purp)q(ose,)i(so)f(their)f(handling)h(in)g(text)f(streams)h(is)f(not)h
(mandated.)-1580 59 y(It)g(w)o(as)g(agreed)g(that)g(some)g(minim)o(um)f
(maxim)o(um)h(line)g(length)g(m)o(ust)g(b)q(e)h(mandated;)f(254)-1651 57 y
(w)o(as)i(c)o(hosen.)-231 136 y @F6 @sf(4.9.3)56 b(Files)-287 91 y @F14 @sf
(The)17 b @F11 @sf(as)g(if)26 b @F14 @sf(principle)17 b(is)e(once)i(again)f
(in)o(v)o(ok)o(ed)f(to)h(de\014ne)i(the)e(nature)h(of)f(input)g(and)h
(output)-1651 56 y(in)g(terms)f(of)g(just)g(t)o(w)o(o)g(functions,)g @F8 @sf
(fgetc)g @F14 @sf(and)h @F8 @sf(fputc)p @F14 @sf(.)23 b(The)17 b(actual)e
(primitiv)o(es)g(in)i(a)f(giv)o(en)-1651 57 y(system)f(ma)o(y)g(b)q(e)h
(quite)e(di\013eren)o(t.)795 124 y @F15 @sf(RA)m(TIONALE)-1763 b
91 @eop1

92 @bop0

92 @eop0
0 0 92 @bop1 112 50 a @F14 @sf(92)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1578 145 y @F14 @sf(Bu\013ering,)13 b(and)h(un)o
(bu\013ering,)f(is)g(de\014ned)i(in)e(a)g(w)o(a)o(y)f(suggesting)h(the)g
(desired)h(in)o(teractiv)o(e)-1652 57 y(b)q(eha)o(vior;)e(but)f(an)g
(implemen)o(tation)e(ma)o(y)i(still)e(b)q(e)j(conforming)e(ev)o(en)h(if)g
(dela)o(ys)f(\(in)h(a)g(net)o(w)o(ork)-1652 56 y(or)k(terminal)e(con)o
(troller\))g(prev)o(en)o(t)h(output)h(from)f(app)q(earing)h(in)f(time.)19 b
(It)c(is)f(the)h @F11 @sf(intent)j @F14 @sf(that)-1651 56 y(matters)d
(here.)-193 57 y(No)k(constrain)o(ts)e(are)i(imp)q(osed)g(up)q(on)h(\014le)f
(names,)h(except)f(that)g(they)g(m)o(ust)f(b)q(e)i(repre-)-1650 56 y(sen)o
(table)15 b(as)g(strings)f(\(with)g(no)h(em)o(b)q(edded)i(n)o(ull)e(c)o
(haracters\).)-1101 122 y @F6 @sf(4.9.4)56 b(Op)r(erations)17 b(on)i(\014les)
-632 85 y @F9 @sf(4.9.4.1)52 b(The)18 b @F8 @sf(remove)e @F9 @sf(function)
-655 86 y @F14 @sf(The)i(Base)g(Do)q(cumen)o(t)f(pro)o(vides)g(the)h @F8 @sf
(unlink)e @F14 @sf(system)h(call)g(to)g(remo)o(v)o(e)f(\014les.)27 b(The)
18 b(UNIX-)-1650 57 y(sp)q(eci\014c)k(de\014nition)f(of)g(this)f(function)h
(prompted)g(the)g(Committee)f(to)g(replace)h(it)f(with)h(a)-1651 56 y(p)q
(ortable)15 b(function.)-357 120 y @F9 @sf(4.9.4.2)52 b(The)18 b @F8 @sf
(rename)e @F9 @sf(function)-655 86 y @F14 @sf(This)k(function)f(has)h(b)q
(een)h(added)f(to)f(pro)o(vide)g(a)h(system-indep)q(enden)o(t)h(atomic)d
(op)q(eration)-1651 56 y(to)e(c)o(hange)g(the)g(name)f(of)h(an)g(existing)f
(\014le;)g(the)h(Base)g(Do)q(cumen)o(t)g(only)f(pro)o(vided)h(the)g @F8 @sf
(link)-1651 57 y @F14 @sf(system)k(call,)g(whic)o(h)g(giv)o(es)f(the)h
(\014le)g(a)f(new)h(name)g(without)f(remo)o(ving)g(the)h(old)f(one,)i(and)
-1650 56 y(whic)o(h)16 b(is)e(extremely)h(system-dep)q(enden)o(t.)-682 56 y
(The)20 b(Committee)f(considered)h(a)g(prop)q(osal)f(that)g @F8 @sf
(rename)h @F14 @sf(should)g(quietly)f(cop)o(y)h(a)f(\014le)-1650 57 y(if)j
(simple)g(renaming)g(couldn't)f(b)q(e)i(p)q(erformed)g(in)f(some)g(con)o
(text,)h(but)f(rejected)h(this)f(as)-1651 56 y(p)q(oten)o(tially)14 b(to)q
(o)h(exp)q(ensiv)o(e)g(at)g(execution)g(time.)-803 57 y @F8 @sf(rename)i 
@F14 @sf(is)g(mean)o(t)g(to)g(giv)o(e)f(access)i(to)f(an)g(underlying)h
(facilit)n(y)e(of)h(the)h(execution)g(en)o(vi-)-1651 56 y(ronmen)o(t's)g
(op)q(erating)f(system.)28 b(When)18 b(the)g(new)g(name)h(is)e(the)h(name)g
(of)g(an)g(existing)f(\014le,)-1651 57 y(some)j(systems)f(allo)o(w)f(the)i
(renaming)f(\(and)h(delete)g(the)g(old)f(\014le)h(or)f(mak)o(e)h(it)f
(inaccessible)-1651 56 y(b)o(y)g(that)f(name\),)h(while)f(others)h
(prohibit)e(the)i(op)q(eration.)30 b(The)19 b(e\013ect)f(of)h @F8 @sf
(rename)e @F14 @sf(is)i(th)o(us)-1651 57 y @F11 @sf(implementation-de\014ne)n
(d)p @F14 @sf(.)-474 119 y @F9 @sf(4.9.4.3)52 b(The)18 b @F8 @sf(tmpfile)e 
@F9 @sf(function)-679 86 y @F14 @sf(The)21 b @F8 @sf(tmpfile)d @F14 @sf
(function)i(is)f(in)o(tended)i(to)e(allo)o(w)f(users)i(to)f(create)h
(binary)f(\\scratc)o(h")g(\014les.)-1651 56 y(The)f @F11 @sf(as)g(if)27 b 
@F14 @sf(principle)17 b(implies)f(that)h(the)g(information)f(in)h(suc)o(h)h
(a)f(\014le)g(need)h(nev)o(er)g(actually)-1652 57 y(b)q(e)e(stored)f(on)g
(a)g(\014le-structured)h(device.)-658 56 y(The)d(temp)q(orary)f(\014le)h
(is)g(created)g(in)g(binary)f(up)q(date)i(mo)q(de,)f(b)q(ecause)h(it)e
(will)g(presumably)-1651 57 y(b)q(e)18 b(\014rst)e(written)f(and)i(then)g
(read)f(as)h(transparen)o(tly)e(as)h(p)q(ossible.)24 b(T)l(railing)o 15 x
(n)o(ull-c)o(haracter)-1651 56 y(padding)16 b(ma)o(y)e(cause)i(problems)e
(for)h(some)g(existing)f(programs.)-1140 120 y @F9 @sf(4.9.4.4)52 b(The)
18 b @F8 @sf(tmpnam)e @F9 @sf(function)-655 86 y @F14 @sf(This)f(function)g
(allo)o(ws)e(for)i(more)f(con)o(trol)g(than)h @F8 @sf(tmpfile)p @F14 @sf
(:)k(a)c(\014le)g(can)g(b)q(e)h(op)q(ened)g(in)f(binary)-1651 56 y(mo)q
(de)h(or)f(text)f(mo)q(de,)h(and)h(\014les)f(are)g(not)g(erased)g(at)f
(completion.)-1099 57 y(There)g(is)g(alw)o(a)o(ys)e(some)i(time)g(b)q(et)o
(w)o(een)g(the)g(call)g(to)f @F8 @sf(tmpnam)g @F14 @sf(and)i(the)f(use)g
(\(in)g @F8 @sf(fopen)p @F14 @sf(\))f(of)-1651 56 y(the)h(returned)g
(name.)19 b(Hence)14 b(it)f(is)f(conceiv)m(able)i(that)f(in)g(some)g
(implemen)o(tatio)o(ns)f(the)i(name,)-1651 57 y(whic)o(h)f(named)f(no)g
(\014le)g(at)g(the)g(call)g(to)f @F8 @sf(tmpnam)p @F14 @sf(,)h(has)g(b)q
(een)h(used)g(as)f(a)g(\014lename)g(b)o(y)g(the)g(time)g(of)-1763 124 y
92 @eop1

93 @bop0
@F22 @sf
[<
1F0020C040608030E038E0384038003800380030207030E02F80200020002000200024003F
C03FE02030>
. 13 21 -2 20 18] 53 @dc
@F12 @sf
[<
00060000000006000000000F000000000F000000001F800000001F800000003CC00000003C
C000000078600000007860000000F030000000F030000001E018000001E018000003C00C00
0003C00C000003C0060000078006000087800300004F000300002F000180001E0001800006
0000C000000000C00000000060000000006000000000300000000030000000001800000000
18000000000C000000000C0000000006000000000600000000030000000003000000000180
000000018000000000C000000000C000000000600000000060000000003000000000300000
0000180000000008>
. 37 46 -2 1 38] 112 @dc
@F23 @sf
[<
1F00618080C0C060006000600060204030802F002000200020002C003F002080>
. 11 16 -1 15 15] 53 @dc
@F20 @sf
[<
FFF0000E00000E00000E00000E00000E00000E00000E00000E00000E04000E04000E04000E
0C000FFC000E0C000E04000E04000E04000E00100E00100E00100E00300E00200E00600E00
E0FFFFE0>
. 20 26 -2 25 25] 70 @dc
[<
003E0000C1800180400300400700200600200E00100E00100E00100E00100E00100E00100E
00100E00100E00100E00100E00100E00100E00100E00100E00100E00100E00100E00100E00
38FFE1FF>
. 24 26 -2 25 29] 85 @dc
[<
7F9FE00E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E
07000E07000E0700FFFF000E07000E07000E07000E07000E07000E07000607000707000387
0000FF00>
. 19 26 0 25 21] 13 @dc
[<
7E00E300E18041C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001
C001C001C001C00FC0000000000000000000000000018003C003C00180>
. 10 33 2 25 12] 106 @dc

93 @eop0

0 0 93 @bop1 112 50 a @F10 @sf(4.9.)35 b(Input/Output)16 b @F8 @sf
(<stdio.h>)988 b @F14 @sf(93)-1651 145 y(the)15 b(call)f(to)f @F8 @sf
(fopen)p @F14 @sf(.)19 b(Implemen)o(tations)14 b(should)g(devise)h
(name-generation)f(strategies)f(whic)o(h)-1651 57 y(minimize)i(this)g(p)q
(ossibilit)n(y)l(,)f(but)h(users)g(should)h(allo)o(w)o 14 x(for)f(this)f
(p)q(ossibilit)o(y)l(.)-1338 139 y @F6 @sf(4.9.5)56 b(File)17 b(access)i
(functions)-671 92 y @F9 @sf(4.9.5.1)52 b(The)18 b @F8 @sf(fclose)e @F9 @sf
(function)-655 92 y @F14 @sf(On)f(some)e(op)q(erating)g(systems)g(it)g(is)g
(di\016cult,)g(or)g(imp)q(ossible,)g(to)g(create)h(a)f(\014le)h(unless)g
(some-)-1651 57 y(thing)19 b(is)g(written)f(to)g(the)h(\014le.)32 b(A)19 b
(maximall)o(y)f(p)q(ortable)g(program)g(whic)o(h)h(relies)g(on)g(a)f(\014le)
-1650 56 y(b)q(eing)e(created)f(m)o(ust)g(write)f(something)h(to)f(the)h
(asso)q(ciated)g(stream)f(b)q(efore)i(closing)e(it.)-1558 138 y @F9 @sf
(4.9.5.2)52 b(The)18 b @F8 @sf(fflush)e @F9 @sf(function)-655 92 y @F14 @sf
(The)d @F8 @sf(fflush)f @F14 @sf(function)g(ensures)i(that)d(output)i(has)f
(b)q(een)i(forced)f(out)f(of)g(in)o(ternal)f(I/O)j(bu\013ers)-1651 56 y
(for)d(a)f(sp)q(eci\014ed)i(stream.)17 b(Occasionally)l(,)11 b(ho)o(w)o
(ev)o(er,)f(it)g(is)g(necessary)h(to)f(ensure)h(that)f @F11 @sf(al)r(l)h 
@F14 @sf(output)-1651 57 y(is)23 b(forced)f(out,)i(and)f(the)g(programmer)e
(ma)o(y)h(not)g(con)o(v)o(enien)o(tly)g(b)q(e)h(able)g(to)f(sp)q(ecify)g
(all)-1651 56 y(the)15 b(curren)o(tly-op)q(en)h(streams)e(\(p)q(erhaps)h
(b)q(ecause)h(some)e(streams)g(are)h(manipulated)f(within)-1651 57 y
(library)i(pac)o(k)m(ages\).)p -16 w @F22 @sf(5)25 16 y @F14 @sf(T)l(o)h
(pro)o(vide)f(an)h(implemen)o(tati)o(on-indep)q(enden)o(t)g(metho)q(d)g
(of)f(\015ushing)-1650 56 y(all)i(output)h(bu\013ers,)g(the)g(Standard)g
(sp)q(eci\014es)h(that)e(this)g(is)h(the)g(result)f(of)h(calling)e @F8 @sf
(fflush)-1651 57 y @F14 @sf(with)e(a)g(NULL)h(argumen)o(t.)-484 138 y 
@F9 @sf(4.9.5.3)52 b(The)18 b @F8 @sf(fopen)e @F9 @sf(function)-631 92 y 
@F14 @sf(The)j @F8 @sf(b)f @F14 @sf(t)o(yp)q(e)g(mo)q(di\014er)h(has)f(b)q
(een)h(added)g(to)e(deal)h(with)g(the)g(text/binary)f(dic)o(hotom)o(y)g
(\(see)-1650 56 y @F12 @sf(x)q @F14 @sf(4.9.2\))o(.)33 b(Because)21 b(of)e
(the)h(limited)f(abilit)o(y)f(to)h(seek)i(within)e(text)g(\014les)h(\(see)g 
@F12 @sf(x)p @F14 @sf(4.9.9.1\))o(,)f(an)-1650 57 y(implemen)o(tation)i
(is)h(at)g(lib)q(ert)o(y)f(to)h(treat)g(the)g(old)g(up)q(date)h @F8 @sf(+)f 
@F14 @sf(mo)q(des)h(as)f(if)g @F8 @sf(b)g @F14 @sf(w)o(ere)g(also)-1651 
56 y(sp)q(eci\014ed.)e(T)l(able)11 b(4.1)f(tabulates)g(the)h(capabilities)e
(and)i(actions)f(asso)q(ciated)h(with)f(the)h(v)m(arious)-1651 56 y(sp)q
(eci\014ed)17 b(mo)q(de)e(string)f(argumen)o(ts)h(to)f @F8 @sf(fopen)p 
@F14 @sf(.)-554 140 y(T)l(able)h(4.1:)k(File)14 b(and)h(stream)g(prop)q
(erties)g(of)f @F8 @sf(fopen)h @F14 @sf(mo)q(des)-1186 65 y 1303 -2 z -1 
57 a 2 -56 z 739 x 2 -56 z 9 x 2 -56 z 32 -17 a @F8 @sf(r)31 17 y 2 -56 z 
33 -17 a(w)31 17 y 2 -56 z 32 -17 a(a)31 17 y 2 -56 z 26 -17 a(r+)24 17 y 
2 -56 z 26 -17 a(w+)23 17 y 2 -56 z 26 -17 a(a+)24 17 y 2 -56 z -1302 2 a 
1303 -2 z 10 w 1303 -2 z -1 56 a 2 -56 z 26 -17 a @F14 @sf(\014le)g(m)o
(ust)g(exist)g(b)q(efore)g(op)q(en)189 17 y 2 -56 z 9 x 2 -56 z 25 -49 a 
@F12 @sf(p)24 49 y 2 -56 z 88 x 2 -56 z 87 x 2 -56 z 31 -49 a(p)29 49 y 
2 -56 z 97 x 2 -56 z 98 x 2 -56 z -1302 2 a 1303 -2 z -1 56 a 2 -56 z 26 
-17 a @F14 @sf(old)g(\014le)g(con)o(ten)o(ts)g(discarded)g(on)g(op)q(en)
25 17 y 2 -56 z 9 x 2 -56 z 87 x 2 -56 z 26 -49 a @F12 @sf(p)24 49 y 2 -56 z 
87 x 2 -56 z 98 x 2 -56 z 31 -49 a(p)28 49 y 2 -56 z 98 x 2 -56 z -1302 
2 a 1303 -2 z -1 56 a 2 -56 z 26 -17 a @F14 @sf(stream)f(can)i(b)q(e)g
(read)332 17 y 2 -56 z 9 x 2 -56 z 25 -49 a @F12 @sf(p)24 49 y 2 -56 z 88 x 
2 -56 z 87 x 2 -56 z 31 -49 a(p)29 49 y 2 -56 z 31 -49 a(p)28 49 y 2 -56 z 
31 -49 a(p)29 49 y 2 -56 z -1302 2 a 1303 -2 z -1 56 a 2 -56 z 26 -17 a 
@F14 @sf(stream)e(can)i(b)q(e)g(written)273 17 y 2 -56 z 9 x 2 -56 z 87 x 
2 -56 z 26 -49 a @F12 @sf(p)24 49 y 2 -56 z 25 -49 a(p)24 49 y 2 -56 z 31 
-49 a(p)29 49 y 2 -56 z 31 -49 a(p)28 49 y 2 -56 z 31 -49 a(p)29 49 y 2 
-56 z -1302 2 a 1303 -2 z -1 57 a 2 -56 z 26 -17 a @F14 @sf(stream)e(can)i
(b)q(e)g(written)e(only)h(at)f(end)34 17 y 2 -56 z 9 x 2 -56 z 87 x 2 -56 z 
88 x 2 -56 z 25 -49 a @F12 @sf(p)24 49 y 2 -56 z 98 x 2 -56 z 97 x 2 -56 z 
31 -49 a(p)29 49 y 2 -56 z -1302 2 a 1303 -2 z -103 155 a @F14 @sf(Other)g
(sp)q(eci\014cations)g(for)f(\014les,)h(suc)o(h)h(as)e(record)h(length)g
(and)g(blo)q(c)o(k)g(size,)g(are)f(not)h(sp)q(eci-)-1650 56 y(\014ed)e(in)f
(the)g(Standard,)g(due)h(to)e(their)h(widely)f(v)m(arying)h(c)o
(haracteristics)e(in)i(di\013eren)o(t)f(op)q(erating)-1651 52 y 660 -2 z 
52 27 a @F23 @sf(5)3 16 y @F20 @sf(F)m(or)i(instance,)h(on)f(a)h(system)f
(\(suc)o(h)h(as)g(UNIX\))e(whic)o(h)h(supp)q(orts)i(pro)q(cess)f(forks,)g
(it)e(is)h(usually)h(necessary)-1649 46 y(to)g(\015ush)h(all)f(output)h
(bu\013ers)g(just)f(prior)g(to)g(the)g(fork.)595 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
93 @eop1

94 @bop0

94 @eop0
0 0 94 @bop1 112 50 a @F14 @sf(94)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F14 @sf(en)o(vironmen)o(ts.)29 b(Changes)18 b
(to)f(\014le)i(access)f(mo)q(des)h(and)f(bu\013er)g(sizes)g(ma)o(y)g(b)q
(e)h(sp)q(eci\014ed)g(us-)-1650 57 y(ing)e(the)f @F8 @sf(setvbuf)g @F14 @sf
(function.)24 b(\(See)17 b @F12 @sf(x)p @F14 @sf(4.9.5.)o(6.\))o 23 x(An)g
(implemen)o(tation)e(ma)o(y)h(c)o(ho)q(ose)g(to)g(allo)o(w)-1652 56 y
(additional)e(\014le)h(sp)q(eci\014cations)g(as)g(part)g(of)g(the)g @F8 @sf
(mode)f @F14 @sf(string)h(argumen)o(t.)k(F)l(or)14 b(instance,)-1376 122 y 
@F8 @sf(file1)24 b(=)f(fopen\(file1name,")o(wb,r)p(ecle)o(n=80"\);)o -1147 
115 a @F14 @sf(migh)o(t)14 b(b)q(e)h(a)e(reasonable)h(w)o(a)o(y)l(,)f(on)i
(a)e(system)h(whic)o(h)g(pro)o(vides)g(record-orien)o(ted)g(binary)g
(\014les,)-1651 57 y(for)h(an)g(implemen)o(tation)f(to)g(allo)o(w)g(a)h
(programmer)e(to)i(sp)q(ecify)h(record)f(length.)-1338 62 y(A)f(c)o(hange)h
(of)e(input/output)h(direction)g(on)g(an)g(up)q(date)h(\014le)f(is)f(only)h
(allo)o(w)o(ed)f(follo)o(w)o(ing)g(a)-1651 56 y @F8 @sf(fsetpos)p @F14 @sf
(,)e @F8 @sf(fseek)p @F14 @sf(,)g @F8 @sf(rewind)p @F14 @sf(,)g(or)f @F8 @sf
(fflush)g @F14 @sf(op)q(eration,)h(since)g(these)h(are)f(precisely)f(the)i
(functions)-1651 57 y(whic)o(h)k(assure)f(that)f(the)h(I/O)h(bu\013er)f
(has)g(b)q(een)h(\015ushed.)-932 62 y(The)k(Standard)f(\()p @F12 @sf(x)p 
@F14 @sf(4.9.2\))e(imp)q(oses)j(the)f(requiremen)o(t)g(that)g(binary)g
(\014les)g(not)g(b)q(e)h(trun-)-1650 56 y(cated)15 b(when)h(they)f(are)f
(up)q(dated.)21 b(This)14 b(rule)h(do)q(es)g(not)g(preclude)g(an)g
(implemen)o(tation)e(from)-1651 57 y(supp)q(orting)k(additional)d(\014le)j
(t)o(yp)q(es)f(that)g(do)g(truncate)g(when)h(written)e(to,)h(ev)o(en)h
(when)f(they)-1650 56 y(are)f(op)q(ened)i(with)d(the)h(same)g(sort)f(of)h 
@F8 @sf(fopen)f @F14 @sf(call.)19 b(Magnetic)c(tap)q(e)g(\014les)g(are)g
(an)g(example)g(of)-1651 57 y(a)g(\014le)g(t)o(yp)q(e)g(that)f(m)o(ust)g
(b)q(e)h(handled)h(this)e(w)o(a)o(y)l(.)19 b(\(On)c(most)f(tap)q(e)h
(hardw)o(are)f(it)g(is)g(imp)q(ossible)-1651 56 y(to)g(write)g(to)f(a)h
(tap)q(e)h(without)e(destro)o(ying)g(immediately)g(follo)o(wi)o(ng)g
(data.\))19 b(Hence)c(tap)q(e)f(\014les)-1650 57 y(are)19 b(not)g(\\binary)f
(\014les")h(within)f(the)h(meaning)g(of)f(the)h(Standard.)31 b(A)19 b
(conforming)f(hosted)-1650 56 y(implemen)o(tation)d(m)o(ust)h(pro)o(vide)f
(\(and)h(do)q(cumen)o(t\))h(at)e(least)h(one)g(\014le)g(t)o(yp)q(e)h(\(on)e
(disk,)h(most)-1651 56 y(lik)o(ely\))e(that)h(b)q(eha)o(v)o(es)g(exactly)g
(as)f(sp)q(eci\014ed)j(in)e(the)g(Standard.)-1128 152 y @F9 @sf(4.9.5.4)
52 b(The)18 b @F8 @sf(freopen)e @F9 @sf(function)-679 97 y(4.9.5.5)52 b
(The)18 b @F8 @sf(setbuf)e @F9 @sf(function)-655 96 y @F8 @sf(setbuf)g 
@F14 @sf(is)g(subsumed)i(b)o(y)f @F8 @sf(setvbuf)p @F14 @sf(,)e(but)i(has)g
(b)q(een)g(retained)g(for)f(compatibili)o(t)o(y)f(with)h(old)-1651 57 y
(co)q(de.)-102 151 y @F9 @sf(4.9.5.6)52 b(The)18 b @F8 @sf(setvbuf)e @F9 @sf
(function)-679 97 y @F8 @sf(setvbuf)k @F14 @sf(has)g(b)q(een)i(adopted)f
(from)e(UNIX)j(System)e(V,)g(b)q(oth)h(to)f(con)o(trol)f(the)h(nature)h
(of)-1651 56 y(stream)c(bu\013ering)g(and)h(to)e(sp)q(ecify)i(the)g(size)f
(of)g(I/O)h(bu\013ers.)26 b(An)18 b(implemen)o(tation)e(is)h(not)-1651 57 y
(required)h(to)f(mak)o(e)g(actual)f(use)i(of)f(a)g(bu\013er)g(pro)o(vided)g
(for)g(a)g(stream,)g(so)g(a)g(program)f(m)o(ust)-1651 56 y(nev)o(er)g(exp)q
(ect)h(the)f(bu\013er's)f(con)o(ten)o(ts)g(to)g(re\015ect)h(I/O)h(op)q
(erations.)j(F)l(urther,)c(the)g(Standard)-1651 57 y(do)q(es)e(not)f
(require)g(that)g(the)g(requested)h(bu\013ering)f(b)q(e)h(implemen)o(ted;)f
(it)g(merely)g(mandates)g(a)-1651 56 y(standard)i(mec)o(hanism)g(for)g
(requesting)f(whatev)o(er)h(bu\013ering)g(services)g(migh)o(t)f(b)q(e)i
(pro)o(vided.)-1570 62 y(Although)j(three)g(t)o(yp)q(es)g(of)f(bu\013ering)h
(are)g(de\014ned,)i(an)e(implemen)o(tatio)o(n)f(ma)o(y)g(c)o(ho)q(ose)-1650 
57 y(to)i(mak)o(e)g(one)g(or)g(more)f(of)h(them)g(equiv)m(alen)o(t.)34 b
(F)l(or)20 b(example,)h(a)f(library)f(ma)o(y)g(c)o(ho)q(ose)h(to)-1651 56 y
(implemen)o(t)h(line-bu\013ering)g(for)f(binary)h(\014les)g(as)g(equiv)m
(alen)o(t)g(to)f(un)o(bu\013ered)i(I/O)f(or)g(ma)o(y)-1651 57 y(c)o(ho)q
(ose)16 b(to)e(alw)o(a)o(ys)g(implemen)o(t)g(full-bu\013ering)g(as)h
(equiv)m(alen)o(t)g(to)g(line-bu\013ering.)-1371 62 y(The)f(general)f
(principle)g(is)h(to)f(pro)o(vide)g(p)q(ortable)g(co)q(de)h(with)f(a)g
(means)h(of)f(requesting)g(the)-1650 56 y(most)j(appropriate)g(p)q(opular)g
(bu\013ering)g(st)o(yle,)g(but)g(not)h(to)e(require)i(an)f(implemen)o
(tation)f(to)-1651 57 y(supp)q(ort)h(these)f(st)o(yles.)-520 124 y
94 @eop1

95 @bop0
@F6 @sf
[<
C00000E00000E000007000007000003800003800003800001C00001C00000E00000E00000E
000007000007000007000003800003800001C00001C00001C00000E00000E0000070000070
00007000003800003800001C00001C00001C00000E00000E00000700000700000700000380
0003800003800001C00001C00000E00000E00000E0000070000070000038000038000018>
. 21 49 -3 36 28] 47 @dc

95 @eop0

0 0 95 @bop1 112 50 a @F10 @sf(4.9.)35 b(Input/Output)16 b @F8 @sf
(<stdio.h>)988 b @F14 @sf(95)-1651 145 y @F6 @sf(4.9.6)56 b(F)-5 b
(ormatted)18 b(input/output)h(functions)-1012 91 y @F9 @sf(4.9.6.1)52 b
(The)18 b @F8 @sf(fprintf)e @F9 @sf(function)-679 91 y @F14 @sf(Use)11 b
(of)f(the)h @F8 @sf(L)f @F14 @sf(mo)q(di\014er)h(with)f(\015oating)f(con)o
(v)o(ersions)h(has)h(b)q(een)g(added)g(to)f(deal)h(with)f(formatted)-1652 
57 y(output)15 b(of)g(the)h(new)f(t)o(yp)q(e)g @F8 @sf(long)24 b(double)p 
@F14 @sf(.)-681 59 y(Note)16 b(that)f(the)h @F8 @sf(%X)f @F14 @sf(and)h 
@F8 @sf(%x)g @F14 @sf(formats)e(exp)q(ect)j(a)e(corresp)q(onding)h @F8 @sf
(int)g @F14 @sf(argumen)o(t;)f @F8 @sf(%lX)g @F14 @sf(or)-1651 56 y @F8 @sf
(%lx)g @F14 @sf(m)o(ust)g(b)q(e)h(supplied)f(with)g(a)g @F8 @sf(long)23 b
(int)15 b @F14 @sf(argumen)o(t.)-920 60 y(The)22 b(con)o(v)o(ersion)e(sp)q
(eci\014cation)i @F8 @sf(%p)f @F14 @sf(has)g(b)q(een)i(added)f(for)f(p)q
(oin)o(ter)f(con)o(v)o(ersion,)i(since)-1650 56 y(the)f(size)g(of)f(a)g(p)q
(oin)o(ter)g(is)g(not)g(necessarily)g(the)h(same)f(as)g(the)g(size)h(of)f
(an)g @F8 @sf(int)p @F14 @sf(.)36 b(Because)-1650 57 y(an)18 b(implemen)o
(tation)e(ma)o(y)i(supp)q(ort)g(more)f(than)h(one)g(size)f(of)h(p)q(oin)o
(ter,)g(the)f(corresp)q(onding)-1650 56 y(argumen)o(t)e(is)g(exp)q(ected)h
(to)f(b)q(e)g(a)g @F8 @sf(\(void)23 b(*\))15 b @F14 @sf(p)q(oin)o(ter.)-884 
59 y(The)g @F8 @sf(%n)g @F14 @sf(format)f(has)h(b)q(een)i(added)e(to)g(p)q
(ermit)g(ascertaining)f(the)h(n)o(um)o(b)q(er)g(of)g(c)o(haracters)-1651 
57 y(con)o(v)o(erted)g(up)h(to)f(that)f(p)q(oin)o(t)h(in)g(the)g(curren)o
(t)g(in)o(v)o(o)q(cation)f(of)h(the)g(formatter.)o -1315 59 a(Some)e
(pre-Standard)h(implemen)o(tatio)o(ns)e(switc)o(h)g(formats)g(for)h @F8 @sf
(%g)f @F14 @sf(at)h(an)g(exp)q(onen)o(t)h(of)e @F12 @sf(\000)p @F14 @sf(3)
-1650 56 y(instead)g(of)f(\(the)g(Standard's\))g @F12 @sf(\000)p @F14 @sf
(4:)18 b(existing)11 b(co)q(de)h(whic)o(h)f(requires)h(the)f(format)g
(switc)o(h)f(at)h @F12 @sf(\000)p @F14 @sf(3)-1650 57 y(will)j(ha)o(v)o(e)h
(to)g(b)q(e)h(c)o(hanged.)-411 59 y(Some)f(existing)e(implemen)o(tations)g
(pro)o(vide)h @F8 @sf(%D)h @F14 @sf(and)g @F8 @sf(%O)f @F14 @sf(as)g
(synon)o(yms)h(or)f(replacemen)o(ts)-1651 56 y(for)h @F8 @sf(%ld)g @F14 @sf
(and)g @F8 @sf(%lo)p @F14 @sf(.)20 b(The)15 b(Committee)f(considered)h
(the)h(latter)e(notation)f(preferable.)-1422 60 y(The)f(Committee)f(has)h
(reserv)o(ed)g(lo)o(w)o(er)f(case)h(con)o(v)o(ersion)f(sp)q(eci\014ers)h
(for)g(future)g(standard-)-1651 56 y(ization.)-77 59 y(The)17 b(use)f(of)g
(leading)g(zero)h(in)f(\014eld)h(widths)e(to)h(sp)q(ecify)h(zero)f
(padding)h(has)f(b)q(een)i(sup)q(er-)-1650 57 y(seded)e(b)o(y)g(a)e
(precision)h(\014eld.)20 b(The)c(older)f(mec)o(hanism)f(has)i(b)q(een)g
(retained.)-1265 59 y(Some)21 b(implemen)o(tations)e(ha)o(v)o(e)h(pro)o
(vided)h(the)g(format)e @F8 @sf(%r)i @F14 @sf(as)f(a)h(means)g(of)f
(indirectly)-1651 56 y(passing)10 b(a)g(v)m(ariable-length)g(argumen)o(t)f
(list.)17 b(The)11 b(functions)f @F8 @sf(vfprintf)p @F14 @sf(,)g(etc.,)g
(are)g(considered)-1650 57 y(to)15 b(b)q(e)h(a)e(more)h(con)o(trolled)f
(metho)q(d)h(of)f(e\013ecting)h(this)f(indirection,)g(so)h @F8 @sf(%r)g 
@F14 @sf(w)o(as)f(not)g(adopted)-1650 56 y(in)i(the)f(Standard.)20 b(\(See)
15 b @F12 @sf(x)p @F14 @sf(4.9.6.7.)o(\))-555 59 y(The)20 b(prin)o(ting)e
(formats)h(for)g(n)o(um)o(b)q(ers)h(is)f(not)g(en)o(tirely)g(sp)q(eci\014ed.)
34 b(The)20 b(requiremen)o(ts)-1651 57 y(of)15 b(the)h(Standard)f(are)g
(lo)q(ose)g(enough)h(to)f(allo)o(w)f(implemen)o(tati)o(ons)g(to)h(handle)h
(suc)o(h)f(cases)h(as)-1651 56 y(signed)g(zero,)e @F11 @sf(not-a-numb)n
(er)p @F14 @sf(,)i(and)f @F11 @sf(in\014nity)f @F14 @sf(in)h(an)g
(appropriate)f(fashion.)-1302 136 y @F9 @sf(4.9.6.2)52 b(The)18 b @F8 @sf
(fscanf)e @F9 @sf(function)-655 91 y @F14 @sf(The)g(sp)q(eci\014cation)f
(of)g @F8 @sf(fscanf)f @F14 @sf(is)h(based)g(in)g(part)g(on)g(these)h
(principles:)-1201 105 y @F12 @sf(\017)22 b @F14 @sf(As)15 b(so)q(on)g(as)g
(one)g(sp)q(eci\014ed)i(con)o(v)o(ersion)d(fails,)g(the)h(whole)g
(function)g(in)o(v)o(o)q(cation)f(fails.)o -1567 105 a @F12 @sf(\017)22 b 
@F14 @sf(One-c)o(haracter)14 b(push)o(bac)o(k)h(is)e(su\016cien)o(t)h(for)f
(the)h(implemen)o(tation)f(of)g @F8 @sf(fscanf)p @F14 @sf(.)19 b(Giv)o(en)
-1537 56 y(the)c(in)o(v)m(alid)g(\014eld)g(\\)p @F8 @sf(-.x)p @F14 @sf(",)f
(the)h(c)o(haracters)g(\\)p @F8 @sf(-.)p @F14 @sf(")k(are)c(not)g(pushed)h
(bac)o(k.)-1336 105 y @F12 @sf(\017)22 b @F14 @sf(If)17 b(a)g(\\\015a)o(w)o
(ed)f(\014eld")h(is)g(detected,)g(no)g(v)m(alue)h(is)e(stored)g(for)h(the)g
(corresp)q(onding)g(argu-)-1537 56 y(men)o(t.)-158 105 y @F12 @sf(\017)22 b 
@F14 @sf(The)d(con)o(v)o(ersions)f(p)q(erformed)h(b)o(y)g @F8 @sf(fscanf)e 
@F14 @sf(are)i(compatible)f(with)g(those)g(p)q(erformed)-1536 57 y(b)o(y)d 
@F8 @sf(strtod)g @F14 @sf(and)g @F8 @sf(strtol)p @F14 @sf(.)818 124 y 
@F15 @sf(RA)m(TIONALE)-1763 b
95 @eop1

96 @bop0

96 @eop0
0 0 96 @bop1 112 50 a @F14 @sf(96)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1578 145 y @F14 @sf(Input)15 b(p)q(oin)o(ter)f(con)o(v)o
(ersion)f(with)h @F8 @sf(%p)g @F14 @sf(has)g(b)q(een)h(added,)g(although)e
(it)h(is)f(ob)o(viously)g(risky)l(,)-1651 57 y(for)j(symmetry)f(with)g 
@F8 @sf(fprintf)p @F14 @sf(.)20 b(The)c @F8 @sf(%i)f @F14 @sf(format)f
(has)i(b)q(een)h(added)f(to)f(p)q(ermit)g(the)h(scanner)-1650 56 y(to)g
(determine)g(the)g(radix)g(of)f(the)i(n)o(um)o(b)q(er)f(in)g(the)g(input)g
(stream;)g(the)g @F8 @sf(%n)g @F14 @sf(format)e(has)i(b)q(een)-1649 56 y
(added)i(to)f(mak)o(e)g(a)o(v)m(ailable)f(the)h(n)o(um)o(b)q(er)h(of)f(c)o
(haracters)f(scanned)i(th)o(us)f(far)g(in)g(the)h(curren)o(t)-1651 57 y
(in)o(v)o(o)q(cation)c(of)h(the)g(scanner.)-441 57 y(White)g(space)g(is)g
(no)o(w)g(de\014ned)h(b)o(y)f(the)h @F8 @sf(isspace)e @F14 @sf(function.)
19 b(\(See)d @F12 @sf(x)p @F14 @sf(4.3.1.9)o(.\))-1355 57 y(An)g(implemen)o
(tatio)o(n)e(m)o(ust)h(not)g(use)h(the)f @F8 @sf(ungetc)g @F14 @sf
(function)g(to)g(p)q(erform)g(the)g(necessary)-1650 56 y(one-c)o(haracter)j
(push)o(bac)o(k.)29 b(In)19 b(particular,)o 18 x(since)f(the)g(unmatc)o
(hed)g(text)g(is)f(left)h(\\unread,")-1651 57 y(the)g(\014le)g(p)q
(osition)e(indicator)g(as)h(rep)q(orted)h(b)o(y)f(the)h @F8 @sf(ftell)f 
@F14 @sf(function)g(m)o(ust)g(b)q(e)h(the)f(p)q(osition)-1651 56 y(of)g
(the)f(c)o(haracter)g(remaining)g(to)f(b)q(e)j(read.)23 b(F)l(urthermore,)
16 b(if)g(the)h(unread)g(c)o(haracters)f(w)o(ere)-1651 57 y(themselv)o(es)h
(pushed)i(bac)o(k)e(via)g @F8 @sf(ungetc)f @F14 @sf(calls,)h(the)g(push)o
(bac)o(k)h(in)f @F8 @sf(fscanf)f @F14 @sf(m)o(ust)h(not)g(a\013ect)-1651 
56 y(the)k(push-bac)o(k)g(stac)o(k)e(in)h @F8 @sf(ungetc)p @F14 @sf(.)34 b
(A)20 b @F8 @sf(scanf)f @F14 @sf(call)h(that)f(matc)o(hes)h(N)g(c)o
(haracters)f(from)h(a)-1651 57 y(stream)c(m)o(ust)g(lea)o(v)o(e)g(the)g
(stream)g(in)g(the)h(same)f(state)g(as)g(if)g(N)g(consecutiv)o(e)h @F8 @sf
(getc)f @F14 @sf(calls)f(had)-1650 56 y(b)q(een)i(issued.)-240 124 y @F9 @sf
(4.9.6.3)52 b(The)18 b @F8 @sf(printf)e @F9 @sf(function)-655 86 y @F14 @sf
(See)g(commen)o(ts)f(of)g(section)f @F12 @sf(x)q @F14 @sf(4.9.6.)o(1)g(ab)q
(o)o(v)o(e.)-790 124 y @F9 @sf(4.9.6.4)52 b(The)18 b @F8 @sf(scanf)e @F9 @sf
(function)-631 87 y @F14 @sf(See)g(commen)o(ts)f(in)g(section)g @F12 @sf
(x)p @F14 @sf(4.9.6.)o(2)f(ab)q(o)o(v)o(e.)-791 123 y @F9 @sf(4.9.6.5)52 b
(The)18 b @F8 @sf(sprintf)e @F9 @sf(function)-679 87 y @F14 @sf(See)g 
@F12 @sf(x)q @F14 @sf(4.9.6)o(.1)d(for)i(commen)o(ts)g(on)g(output)g
(formatti)o(ng.)-895 57 y(In)22 b(the)f(in)o(terests)e(of)i(minimizing)e
(redundancy)l(,)24 b @F8 @sf(sprintf)c @F14 @sf(has)g(subsumed)i(the)f
(older,)-1651 56 y(rather)15 b(uncommon,)g @F8 @sf(ecvt)p @F14 @sf(,)f 
@F8 @sf(fcvt)p @F14 @sf(,)h(and)g @F8 @sf(gcvt)p @F14 @sf(.)-826 124 y 
@F9 @sf(4.9.6.6)52 b(The)18 b @F8 @sf(sscanf)e @F9 @sf(function)-655 87 y 
@F14 @sf(The)i(b)q(eha)o(vior)e(of)h @F8 @sf(sscanf)f @F14 @sf(on)h
(encoun)o(tering)g(end)g(of)g(string)f(has)h(b)q(een)h(clari\014ed.)25 b
(See)17 b(also)-1651 56 y(commen)o(ts)e(in)g(section)g @F12 @sf(x)p @F14 @sf
(4.9.6.2)o 14 x(ab)q(o)o(v)o(e.)-710 124 y @F9 @sf(4.9.6.7)52 b(The)18 b 
@F8 @sf(vfprintf)e @F9 @sf(function)-703 87 y @F14 @sf(The)k(functions)f 
@F8 @sf(vfprintf)p @F14 @sf(,)f @F8 @sf(vprintf)p @F14 @sf(,)h(and)g @F8 @sf
(vsprintf)f @F14 @sf(ha)o(v)o(e)g(b)q(een)i(adopted)g(from)e(UNIX)-1650 
56 y(System)e(V)f(to)f(facilitate)f(writing)h(sp)q(ecial)h(purp)q(ose)h
(formatted)e(output)h(functions.)-1481 123 y @F9 @sf(4.9.6.8)52 b(The)18 b 
@F8 @sf(vprintf)e @F9 @sf(function)-679 87 y @F14 @sf(See)g @F12 @sf(x)q 
@F14 @sf(4.9.6)o(.7.)o -244 124 a @F9 @sf(4.9.6.9)52 b(The)18 b @F8 @sf
(vsprintf)e @F9 @sf(function)-703 87 y @F14 @sf(See)g @F12 @sf(x)q @F14 @sf
(4.9.6)o(.7.)o -356 124 a
96 @eop1

97 @bop0

97 @eop0
0 0 97 @bop1 112 50 a @F10 @sf(4.9.)35 b(Input/Output)16 b @F8 @sf
(<stdio.h>)988 b @F14 @sf(97)-1651 145 y @F6 @sf(4.9.7)56 b(Character)19 b
(input/output)f(functions)-1000 88 y @F9 @sf(4.9.7.1)52 b(The)18 b @F8 @sf
(fgetc)e @F9 @sf(function)-631 87 y @F14 @sf(Because)f(m)o(uc)o(h)e
(existing)g(co)q(de)h(assumes)f(that)g @F8 @sf(fgetc)g @F14 @sf(and)g 
@F8 @sf(fputc)g @F14 @sf(are)g(the)h(actual)f(functions)-1651 57 y(equiv)m
(alen)o(t)19 b(to)f(the)h(macros)f @F8 @sf(getc)h @F14 @sf(and)g @F8 @sf
(putc)p @F14 @sf(,)g(the)g(Standard)f(requires)h(that)f(they)h(not)g(b)q
(e)-1650 56 y(implemen)o(ted)c(as)g(macros.)-478 125 y @F9 @sf(4.9.7.2)52 b
(The)18 b @F8 @sf(fgets)e @F9 @sf(function)-631 88 y @F14 @sf(This)i
(function)g(subsumes)h @F8 @sf(gets)p @F14 @sf(,)f(whic)o(h)g(has)g(no)h
(limit)d(to)i(prev)o(en)o(t)g(storage)f(o)o(v)o(erwrite)f(on)-1650 56 y
(arbitrary)e(input)h(\(see)g @F12 @sf(x)q @F14 @sf(4.9.7.)o(7\).)o -587 
125 a @F9 @sf(4.9.7.3)52 b(The)18 b @F8 @sf(fputc)e @F9 @sf(function)-631 
88 y @F14 @sf(See)g @F12 @sf(x)q @F14 @sf(4.9.7)o(.1.)o -244 125 a @F9 @sf
(4.9.7.4)52 b(The)18 b @F8 @sf(fputs)e @F9 @sf(function)-631 87 y(4.9.7.5)
52 b(The)18 b @F8 @sf(getc)f @F9 @sf(function)-608 88 y @F8 @sf(getc)c 
@F14 @sf(and)h @F8 @sf(putc)e @F14 @sf(ha)o(v)o(e)h(often)g(b)q(een)i
(implemen)o(ted)e(as)g(unsafe)g(macros,)g(since)g(it)g(is)g(di\016cult)g
(in)-1651 56 y(suc)o(h)g(a)f(macro)g(to)g(touc)o(h)g(the)g @F8 @sf(stream)g 
@F14 @sf(argumen)o(t)g(only)g(once.)19 b(Since)13 b(this)f(danger)g(is)g
(common)-1651 57 y(in)18 b(prior)e(art,)h(these)h(t)o(w)o(o)e(functions)h
(are)g(explicitly)f(p)q(ermitted)h(to)g(ev)m(aluate)g @F8 @sf(stream)g 
@F14 @sf(more)-1651 56 y(than)f(once.)-208 125 y @F9 @sf(4.9.7.6)52 b(The)
18 b @F8 @sf(getchar)e @F9 @sf(function)-679 88 y(4.9.7.7)52 b(The)18 b 
@F8 @sf(gets)f @F9 @sf(function)-608 87 y @F14 @sf(See)f @F12 @sf(x)q 
@F14 @sf(4.9.7)o(.2.)o -244 125 a @F9 @sf(4.9.7.8)52 b(The)18 b @F8 @sf
(putc)f @F9 @sf(function)-608 88 y @F14 @sf(See)f @F12 @sf(x)q @F14 @sf
(4.9.7)o(.5.)o -244 125 a @F9 @sf(4.9.7.9)52 b(The)18 b @F8 @sf(putchar)e 
@F9 @sf(function)-679 87 y(4.9.7.10)52 b(The)18 b @F8 @sf(puts)f @F9 @sf
(function)-634 88 y @F8 @sf(puts\(s\))d @F14 @sf(is)g(not)g(exactly)f
(equiv)m(alen)o(t)h(to)g @F8 @sf(fputs\(stdout,s)o(\))p @F14 @sf(;)f @F8 @sf
(puts)h @F14 @sf(also)f(writes)g(a)h(new)h(line)-1651 56 y(after)g(the)g
(argumen)o(t)g(string.)j(This)d(incompatibilit)n(y)f(re\015ects)h
(existing)f(practice.)-1448 125 y @F9 @sf(4.9.7.11)52 b(The)18 b @F8 @sf
(ungetc)e @F9 @sf(function)-681 88 y @F14 @sf(The)i(Base)f(Do)q(cumen)o(t)h
(requires)f(that)f(at)h(least)f(one)i(c)o(haracter)f(b)q(e)h(read)f(b)q
(efore)g @F8 @sf(ungetc)g @F14 @sf(is)-1651 56 y(called,)h(in)f(certain)g
(implementation-sp)q(eci\014c)g(cases.)26 b(The)18 b(Committee)e(has)h
(remo)o(v)o(ed)g(this)-1651 57 y(requiremen)o(t,)e(th)o(us)h(obliging)e(a)h 
@F8 @sf(FILE)g @F14 @sf(structure)h(to)f(ha)o(v)o(e)g(ro)q(om)g(to)g
(store)g(one)h(c)o(haracter)f(of)-252 124 y @F15 @sf(RA)m(TIONALE)-1763 b
97 @eop1

98 @bop0
@F22 @sf
[<
07C018303018300C600E600EE00EE00EE00EF00CF018EC30E3E0E00060007000301C181C08
0C060801F0>
. 15 21 -1 20 18] 54 @dc
@F23 @sf
[<
1F00308060C04060C060C060C060E040F080CF00C000600060C030C018400780>
. 11 16 -1 15 15] 54 @dc
@F20 @sf
[<
8040202010101070F0F060000000000000000060F0F060>
. 4 23 -3 15 11] 59 @dc
[<
7F8FE3FC0E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E
0380E00E0380E00E0380E00E0380E00E0380E00E0380E0FFFFFFE00E0380000E0380000E03
80000E0380000E0380000E038040060380E00703C06001C17040007E1F80>
. 30 26 0 25 32] 14 @dc
/@F18 @newfont
@F18 @sf
[<
FF00001C00001C00001C00001C00000E00000E00000E78000E8E0007030007038007018007
01C00380E00380E00380E00380E009C06009C06009C06009E0C00590C0030F00>
. 19 23 0 15 20] 112 @dc
[<
6000E000700070007000700038003800380038009C009C009C189E38591830F0>
. 13 16 -4 15 16] 114 @dc
[<
1F0030C060206010E008E000E000E000E000FFE07010700838081C08061801E0>
. 13 16 -4 15 18] 101 @dc
[<
0F0018C030407020701070103808380838081C089C0C9C0C8E0C4E1C4C1C3818>
. 14 16 -4 15 18] 118 @dc
[<
3864E4E272727038381C9C9C8E4E4C38000000000000060703>
. 8 25 -4 24 12] 105 @dc
[<
1F0030C06060E030E018E01CE00CE00EE00E600E700E300E180E0C0C061801F0>
. 15 16 -4 15 20] 111 @dc
[<
0F0C389A3079703970397039381C381C381C1C1C9C0E9C0E8E0E4E0E4C073806>
. 16 16 -4 15 21] 117 @dc
[<
3E00418080C0E060E060006000E00FE01FC01F801C00186018700830043003E0>
. 12 16 -3 15 16] 115 @dc

98 @eop0

0 0 98 @bop1 112 50 a @F14 @sf(98)1166 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F14 @sf(push)o(bac)o(k)18 b(regardless)e(of)h
(the)g(state)f(of)h(the)g(bu\013er;)g(it)g(felt)f(that)g(this)h(degree)g
(of)g(generalit)o(y)-1652 57 y(mak)o(es)e(clearer)g(the)g(w)o(a)o(ys)f(in)h
(whic)o(h)g(the)h(function)f(ma)o(y)f(b)q(e)i(used.)-1102 57 y(It)i(is)g
(p)q(ermissible)g(to)g(push)h(bac)o(k)f(a)g(di\013eren)o(t)g(c)o(haracter)f
(than)i(that)e(whic)o(h)h(w)o(as)g(read;)-1651 57 y(this)d(accords)g(with)f
(common)g(existing)g(practice.)20 b(The)15 b(last-in,)f(\014rst-out)g
(nature)h(of)f @F8 @sf(ungetc)-1651 56 y @F14 @sf(has)i(b)q(een)g
(clari\014ed.)-359 113 y @F8 @sf(ungetc)h @F14 @sf(is)f(t)o(ypically)g
(used)h(to)f(handle)i(algori)o(thms,)e(suc)o(h)h(as)g(tok)o(enizatio)o(n,)f
(whic)o(h)h(in)o(v)o(olv)o(e)-1652 56 y(one-c)o(haracter)e(lo)q(ok)m
(ahead)f(in)h(text)f(\014les.)20 b @F8 @sf(fseek)14 b @F14 @sf(and)h @F8 @sf
(ftell)f @F14 @sf(are)g(used)h(for)f(random)h(access,)-1651 57 y(t)o
(ypically)k(in)h(binary)g(\014les.)35 b(So)20 b(that)f(these)i(disparate)e
(\014le-handling)h(disciplines)g(are)g(not)-1651 56 y(unnecessarily)h
(link)o(ed,)g(the)g(v)m(alue)g(of)f(a)g(text)g(\014le's)g(\014le)h(p)q
(osition)e(indicator)h(immediately)-1652 57 y(after)15 b @F8 @sf(ungetc)f 
@F14 @sf(has)h(b)q(een)i(sp)q(eci\014ed)f(as)f(indeterminate.)-912 57 y
(Existing)k(practice)h(relies)g(on)g(t)o(w)o(o)f(di\013eren)o(t)h(mo)q
(dels)g(of)g(the)g(e\013ect)g(of)g @F8 @sf(ungetc)p @F14 @sf(.)35 b(One)
-1650 57 y(mo)q(del)19 b(can)f(b)q(e)h(c)o(haracterized)e(as)h(writing)f
(the)h(pushed-bac)o(k)h(c)o(haracter)f(\\on)g(top)f(of)t(")g(the)-1650 56 y
(previous)j(c)o(haracter.)33 b(This)20 b(mo)q(del)g(implies)f(an)h
(implemen)o(tati)o(on)f(in)g(whic)o(h)h(the)g(pushed-)-1649 57 y(bac)o(k)e
(c)o(haracters)f(are)h(stored)f(within)g(the)h(\014le)g(bu\013er)f(and)h
(b)q(o)q(okk)o(eeping)g(is)f(p)q(erformed)h(b)o(y)-1650 56 y(setting)c
(the)h(\014le)g(p)q(osition)e(indicator)h(to)g(the)h(previous)f(c)o
(haracter)g(p)q(osition.)19 b(\(Care)14 b(m)o(ust)g(b)q(e)-1650 56 y(tak)o
(en)k(in)g(this)f(mo)q(del)h(to)g(reco)o(v)o(er)f(the)h(o)o(v)o(erwritt)o
(en)f(c)o(haracter)g(v)m(alues)i(when)f(the)g(pushed-)-1649 57 y(bac)o(k)g
(c)o(haracters)e(are)h(discarded)h(as)f(a)g(result)g(of)g(other)g(op)q
(erations)f(on)h(the)h(stream.\))25 b(The)-1650 56 y(other)18 b(mo)q(del)g
(can)g(b)q(e)g(c)o(haracterized)g(as)f(pushing)i(the)f(c)o(haracter)f(\\b)q
(et)o(w)o(een")h(the)g(curren)o(t)-1651 57 y(c)o(haracter)d(and)g(the)f
(previous)h(c)o(haracter.)k(This)14 b(implies)g(an)h(implemen)o(tation)e
(in)i(whic)o(h)f(the)-1650 56 y(pushed-b)q(ac)o(k)i(c)o(haracters)f(are)g
(sp)q(ecially)g(bu\013ered)g(\(within)g(the)g(FILE)h(structure,)f(sa)o(y\))f
(and)-1650 57 y(accoun)o(ted)19 b(for)f(b)o(y)g(a)g(\015ag)g(or)f(coun)o
(t.)29 b(In)19 b(this)f(mo)q(del)g(it)f(is)h(natural)g @F11 @sf(not)k 
@F14 @sf(to)c(mo)o(v)o(e)f(the)h(\014le)-1650 56 y(p)q(osition)g
(indicator.)27 b(The)19 b(indeterminacy)e(of)h(the)g(\014le)g(p)q(osition)g
(indicator)f(while)g(pushed-)-1649 57 y(bac)o(k)f(c)o(haracters)e(exist)h
(accommo)q(dates)f(b)q(oth)h(mo)q(dels.)-922 57 y(Mandating)h(either)h(mo)q
(del)g(\(b)o(y)g(sp)q(ecifying)g(the)h(e\013ect)f(of)f @F8 @sf(ungetc)h 
@F14 @sf(on)g(a)g(text)g(\014le's)f(\014le)-1650 57 y(p)q(osition)i
(indicator\))e(creates)i(problems)g(with)f(implemen)o(tations)f(that)i(ha)o
(v)o(e)f(assumed)h(the)-1650 56 y(other)c(mo)q(del.)19 b(Requiring)14 b
(the)f(\014le)h(p)q(osition)f(indicator)f(not)i(to)f(c)o(hange)g(after)g 
@F8 @sf(ungetc)g @F14 @sf(w)o(ould)-1651 57 y(necessitate)i(c)o(hanges)g
(in)g(programs)f(whic)o(h)g(com)o(bine)h(random)g(access)g(and)g(tok)o
(enization)e(on)-1650 56 y(text)18 b(\014les,)h(and)g(rely)f(on)g(the)h
(\014le)f(p)q(osition)g(indicator)f(marking)g(the)i(end)g(of)f(a)g(tok)o
(en)g(ev)o(en)-1650 57 y(after)c(push)o(bac)o(k.)20 b(Requiring)14 b(the)g
(\014le)g(p)q(osition)f(indicator)g(to)h(bac)o(k)f(up)i(w)o(ould)f(create)f
(sev)o(ere)-1650 56 y(implemen)o(tation)j(problems)h(in)g(certain)g(en)o
(vironmen)o(ts,)g(since)g(in)g(some)g(\014le)g(organizations)-1652 57 y
(it)h(can)h(b)q(e)g(imp)q(ossible)f(to)f(\014nd)i(the)g(previous)f(input)h
(c)o(haracter)e(p)q(osition)h(without)f(ha)o(ving)-1651 56 y(read)f(the)f
(\014le)g(sequen)o(tially)f(to)h(the)g(p)q(oin)o(t)g(in)g(question.)p -16 w 
@F22 @sf(6)-1005 145 y @F6 @sf(4.9.8)56 b(Direct)17 b(input/output)i
(functions)-910 88 y @F9 @sf(4.9.8.1)52 b(The)18 b @F8 @sf(fread)e @F9 @sf
(function)-631 88 y @F8 @sf(size)s 14 -2 z 14 x(t)g @F14 @sf(is)f(the)h
(appropriate)e(t)o(yp)q(e)i(b)q(oth)g(for)f(an)g(ob)s(ject)g(size)h(and)g
(for)f(an)g(arra)o(y)g(b)q(ound)h(\(see)-1650 47 y 660 -2 z 52 27 a @F23 @sf
(6)3 16 y @F20 @sf(Consider,)c(for)g(instance,)h(a)f(sequen)o(tial)h(\014le)f
(of)g(v)n(ariable-length)h(records)g(in)f(whic)o(h)g(a)g(line)g(is)g
(represen)o(ted)-1649 46 y(as)k(a)f(coun)o(t)h(\014eld)f(follo)o(w)o(ed)g
(b)o(y)g(the)h(c)o(haracters)g(in)f(the)g(line.)23 b(The)16 b(\014le)f(p)q
(osition)g(indicator)h(m)o(ust)f(enco)q(de)h(a)-1650 46 y(c)o(haracter)d
(p)q(osition)f(as)g(the)g(p)q(osition)g(of)g(the)g(coun)o(t)h(\014eld)f
(plus)g(an)g(o\013set)g(in)o(to)g(the)g(line;)g(from)f(the)h(p)q(osition)h
(of)-1651 45 y(the)e(coun)o(t)h(\014eld)f(and)h(the)f(length)g(of)f(the)h
(line,)g(the)g(next)g(coun)o(t)g(\014eld)h(can)f(b)q(e)g(found.)17 b
(Insu\016cien)o(t)11 b(information)-1650 46 y(is)17 b(a)o(v)n(ailable)g
(for)f(\014nding)i(the)f @F18 @sf(pr)n(evious)o 18 x @F20 @sf(coun)o(t)h
(\014eld,)f(so)g(bac)o(king)h(up)f(from)g(the)g(\014rst)g(c)o(haracter)g
(of)g(a)g(line)-1651 46 y(necessitates,)d(in)f(the)g(general)g(case,)g(a)g
(sequen)o(tial)g(read)h(from)f(the)g(start)g(of)g(the)g(\014le.)-1382 124 y
98 @eop1

99 @bop0

99 @eop0
0 0 99 @bop1 112 50 a @F10 @sf(4.9.)35 b(Input/Output)16 b @F8 @sf
(<stdio.h>)988 b @F14 @sf(99)-1651 145 y @F12 @sf(x)q @F14 @sf(3.3.3.)o
(4\),)o 14 x(so)15 b(this)f(is)h(the)g(t)o(yp)q(e)h(of)e @F8 @sf(size)h 
@F14 @sf(and)g @F8 @sf(nelem)p @F14 @sf(.)-949 130 y @F9 @sf(4.9.8.2)52 b
(The)18 b @F8 @sf(fwrite)e @F9 @sf(function)-655 90 y @F14 @sf(See)g 
@F12 @sf(x)q @F14 @sf(4.9.8)o(.1.)o -244 132 a @F6 @sf(4.9.9)56 b(File)17 b
(p)r(ositioning)h(functions)-794 89 y @F9 @sf(4.9.9.1)52 b(The)18 b @F8 @sf
(fgetpos)e @F9 @sf(function)-679 89 y @F8 @sf(fgetpos)g @F14 @sf(and)h 
@F8 @sf(fsetpos)e @F14 @sf(ha)o(v)o(e)i(b)q(een)g(added)h(to)d(allo)o(w)g
(random)h(access)h(op)q(erations)f(on)g(\014les)-1650 57 y(whic)o(h)g(are)e
(to)q(o)h(large)f(to)h(handle)g(with)g @F8 @sf(fseek)f @F14 @sf(and)i 
@F8 @sf(ftell)p @F14 @sf(.)-1059 130 y @F9 @sf(4.9.9.2)52 b(The)18 b @F8 @sf
(fseek)e @F9 @sf(function)-631 89 y @F14 @sf(Whereas)e(a)f(binary)g(\014le)g
(can)h(b)q(e)g(treated)f(as)g(an)g(ordered)h(sequence)g(of)f(b)o(ytes,)g
(coun)o(ting)g(from)-1651 57 y(zero,)j(a)f(text)g(\014le)h(need)g(not)g
(map)f(one-to-one)h(to)f(its)g(in)o(ternal)f(represen)o(tation)h(\(see)h 
@F12 @sf(x)p @F14 @sf(4.9.2\))o(.)-1652 56 y(Th)o(us,)k(only)e(seeks)h(to)f
(an)h(earlier)f(rep)q(orted)g(p)q(osition)g(are)h(p)q(ermitted)f(for)g
(text)h(\014les.)30 b(The)-1650 57 y(need)19 b(to)e(enco)q(de)i(b)q(oth)f
(record)f(p)q(osition)g(and)h(p)q(osition)e(within)h(a)h(record)f(in)h(a)f 
@F8 @sf(long)g @F14 @sf(v)m(alue)-1650 56 y(ma)o(y)k(constrain)g(the)g
(size)h(of)f(text)f(\014les)i(up)q(on)g(whic)o(h)f @F8 @sf(fseek)p @F14 @sf
(-)p @F8 @sf(ftell)f @F14 @sf(can)i(b)q(e)g(used)g(to)f(b)q(e)-1650 57 y
(considerably)15 b(smaller)f(than)h(the)h(size)f(of)f(binary)h(\014les.)
-902 58 y(Giv)o(en)h(these)h(restrictio)o(ns,)e(the)i(Committee)e(still)g
(felt)h(that)g(this)f(function)i(has)f(enough)-1650 56 y(utilit)o(y)l(,)f
(and)i(is)f(used)h(in)f(su\016cien)o(t)g(existing)g(co)q(de,)h(to)f(w)o
(arran)o(t)o 15 x(its)g(reten)o(tion)g(in)g(the)g(Stan-)-1650 57 y(dard.)k 
@F8 @sf(fgetpos)15 b @F14 @sf(and)g @F8 @sf(fsetpos)f @F14 @sf(ha)o(v)o(e)h
(b)q(een)h(added)g(to)e(deal)h(with)g(\014les)g(whic)o(h)g(are)g(to)q(o)f
(large)-1651 56 y(to)h(handle)h(with)e @F8 @sf(fseek)h @F14 @sf(and)g 
@F8 @sf(ftell)p @F14 @sf(.)-591 58 y(The)g @F8 @sf(fseek)e @F14 @sf
(function)h(will)f(reset)h(the)h(end-of-\014le)g(\015ag)f(for)f(the)i
(stream;)e(the)h(error)g(\015ag)g(is)-1651 57 y(not)h(c)o(hanged)h(unless)f
(an)g(error)g(o)q(ccurs,)g(when)h(it)e(will)g(b)q(e)i(set.)-1100 130 y 
@F9 @sf(4.9.9.3)52 b(The)18 b @F8 @sf(fsetpos)e @F9 @sf(function)-679 90 y
(4.9.9.4)52 b(The)18 b @F8 @sf(ftell)e @F9 @sf(function)-631 89 y @F8 @sf
(ftell)f @F14 @sf(can)g(fail)f(for)h(at)f(least)h(t)o(w)o(o)f(reasons:)-702 
101 y @F12 @sf(\017)22 b @F14 @sf(the)15 b(stream)e(is)h(asso)q(ciated)g
(with)f(a)i(terminal,)o 13 x(or)f(some)g(other)g(\014le)h(t)o(yp)q(e)f
(for)g(whic)o(h)g @F11 @sf(\014le)-1537 56 y(p)n(osition)i(indic)n(ator)f 
@F14 @sf(is)g(meaningless;)f(or)-757 101 y @F12 @sf(\017)22 b @F14 @sf
(the)15 b(\014le)h(ma)o(y)e(b)q(e)i(p)q(ositioned)f(at)f(a)h(lo)q(cation)f
(not)h(represen)o(table)g(in)g(a)g @F8 @sf(long)23 b(int)p @F14 @sf(.)-1564 
101 y(Th)o(us)16 b(a)f(metho)q(d)g(for)f @F8 @sf(ftell)h @F14 @sf(to)g
(rep)q(ort)f(failure)h(has)g(b)q(een)h(sp)q(eci\014ed.)-1154 58 y(See)g
(also)e @F12 @sf(x)p @F14 @sf(4.9.9.1.)o -406 131 a @F9 @sf(4.9.9.5)52 b
(The)18 b @F8 @sf(rewind)e @F9 @sf(function)-655 89 y @F14 @sf(Resetting)
24 b(the)g(end-of-\014le)h(and)f(error)g(indicators)e(w)o(as)i(added)g(to)g
(the)g(sp)q(eci\014cation)g(of)-1651 57 y @F8 @sf(rewind)15 b @F14 @sf(to)f
(mak)o(e)h(the)g(sp)q(eci\014cation)g(more)g(logically)e(consisten)o(t.)
227 124 y @F15 @sf(RA)m(TIONALE)-1763 b
99 @eop1

100 @bop0
@F4 @sf
[<
003F800001FFF00007E0FC000FC07E001F803F001F803F003F001F803F001F807F001FC07F
001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF00
1FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE07F001F
C07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E0007E0FC00
01FFF000003F8000>
. 27 39 -3 38 34] 48 @dc
[<
00007FF003000003FFFE0F00001FFFFF1F00003FF007BF0000FF8001FF0001FE0000FF0003
F80000FF0007F00000FF000FF00000FF001FE00000FF001FE00000FF003FC00000FF003FC0
0000FF007FC00000FF007F8001FFFFF87F8001FFFFF8FF8001FFFFF8FF8000000000FF8000
000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
00007F80000000007F80000007007FC0000007003FC0000007003FC000000F001FE000000F
001FE000000F000FF000001F0007F000003F0003F800003F0001FE0000FF0000FF8001FF00
003FF00FFF00001FFFFF0F000003FFFC070000007FE00300>
. 45 41 -4 40 54] 71 @dc
[<
00001FF800000001FFFF00000007FFFFC000000FF007E000003FC000F000007F0000380000
7E00001C0000FE00001C0001FE00000E0001FC00000E0003FC0000070003FC0000070003FC
0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00
00070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000
070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC000007
0003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC00000700
03FC00000700FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC>
. 46 41 -3 40 53] 85 @dc
@F0 @sf
[<
0387E000079FF80007BFFC0007FFFE0007F83F0007E00F8007C0078007C007C0078003C007
8003E0078001E0078001E0078001E0078001E0078001E0078001E0078003E0078003C007C0
03C007C0078007E00F8007F83F0007FFFF0007BFFE00079FF8000783E00007800000078000
000780000007800000078000000780000007800000FF800000FF800000FF800000FF800000
>
. 27 37 -1 36 31] 98 @dc

100 @eop0

0 0 100 @bop1 112 50 a @F14 @sf(100)1143 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F6 @sf(4.9.10)56 b(Error-handling)17 b
(functions)-804 92 y @F9 @sf(4.9.10.1)52 b(The)18 b @F8 @sf(clearerr)e 
@F9 @sf(function)-729 91 y(4.9.10.2)52 b(The)18 b @F8 @sf(feof)f @F9 @sf
(function)-634 92 y(4.9.10.3)52 b(The)18 b @F8 @sf(ferror)e @F9 @sf
(function)-681 92 y(4.9.10.4)52 b(The)18 b @F8 @sf(perror)e @F9 @sf
(function)-681 91 y @F14 @sf(A)o(t)11 b(v)m(arious)g(times,)g(the)g
(Committee)f(considered)i(pro)o(viding)e(a)h(form)f(of)h @F8 @sf(perror)g 
@F14 @sf(that)f(deliv)o(ers)-1651 57 y(up)j(an)e(error)g(string)g(v)o
(ersion)g(of)g @F8 @sf(errno)g @F14 @sf(without)g(p)q(erforming)g(an)o(y)h
(output.)18 b(It)12 b(ultimately)e(de-)-1650 56 y(cided)15 b(to)f(pro)o
(vide)g(this)f(capabilit)o(y)g(in)h(a)g(separate)g(function,)g @F8 @sf
(strerror)p @F14 @sf(.)k(\(See)d @F12 @sf(x)p @F14 @sf(4.11.6.)o(1\).)o 
-1612 161 a @F4 @sf(4.10)70 b(General)23 b(Utilities)-501 74 y @F0 @sf
(<stdl)q(ib)q(.h>)q -504 108 a @F14 @sf(The)18 b(header)f @F8 @sf
(<stdlib.h>)f @F14 @sf(w)o(as)g(in)o(v)o(en)o(ted)h(b)o(y)g(the)g
(Committee)f(to)g(hold)h(an)g(assortmen)o(t)f(of)-1651 56 y(functions)f
(that)g(w)o(ere)g(otherwise)f(homeless.)-790 139 y @F6 @sf(4.10.1)56 b
(String)18 b(con)n(v)n(ersion)g(functions)-866 92 y @F9 @sf(4.10.1.1)52 b
(The)18 b @F8 @sf(atof)f @F9 @sf(function)-634 91 y @F8 @sf(atof)p @F14 @sf
(,)c @F8 @sf(atoi)p @F14 @sf(,)g(and)h @F8 @sf(atol)f @F14 @sf(are)h
(subsumed)g(b)o(y)g @F8 @sf(strtod)e @F14 @sf(and)i @F8 @sf(strtol)p 
@F14 @sf(,)f(but)h(ha)o(v)o(e)f(b)q(een)i(retained)-1651 57 y(b)q(ecause)i
(they)f(are)f(used)i(extensiv)o(ely)e(in)g(existing)g(co)q(de.)22 b(They)
16 b(are)f(less)h(reliable,)e(but)i(ma)o(y)-1651 56 y(b)q(e)g(faster)f(if)f
(the)i(argumen)o(t)e(is)h(kno)o(wn)g(to)f(b)q(e)i(in)f(a)g(v)m(alid)g
(range.)-1141 137 y @F9 @sf(4.10.1.2)52 b(The)18 b @F8 @sf(atoi)f @F9 @sf
(function)-634 92 y @F14 @sf(See)f @F12 @sf(x)q @F14 @sf(4.10.)o(1.1.)o 
-267 137 a @F9 @sf(4.10.1.3)52 b(The)18 b @F8 @sf(atol)f @F9 @sf(function)
-634 92 y @F14 @sf(See)f @F12 @sf(x)q @F14 @sf(4.10.)o(1.1.)o -267 137 a 
@F9 @sf(4.10.1.4)52 b(The)18 b @F8 @sf(strtod)e @F9 @sf(function)-681 92 y 
@F8 @sf(strtod)g @F14 @sf(and)h @F8 @sf(strtol)f @F14 @sf(ha)o(v)o(e)g(b)q
(een)i(adopted)e(\(from)g(UNIX)h(System)g(V\))f(b)q(ecause)i(they)e(o\013er)
-1651 56 y(more)22 b(con)o(trol)e(o)o(v)o(er)h(the)h(con)o(v)o(ersion)f
(pro)q(cess,)j(and)e(b)q(ecause)g(they)g(are)g(required)g(not)f(to)-1651 
57 y(pro)q(duce)c(unexp)q(ected)f(results)f(on)g(o)o(v)o(er\015o)o(w)f
(during)h(con)o(v)o(ersion.)-1162 137 y @F9 @sf(4.10.1.5)52 b(The)18 b 
@F8 @sf(strtol)e @F9 @sf(function)-681 92 y @F14 @sf(See)g @F12 @sf(x)q 
@F14 @sf(4.10.)o(1.4.)o -379 124 a
100 @eop1

101 @bop0
@F10 @sf
[<
0FC000387000303800701C00600E00E00E00E00700E00700E00780F00780F00380F003C0F0
03C0F003C0F003C0F003C07801E07801E07801E07801E07801E03801E03C01E01C00E01C00
E00E00E00E00C00701C003018001C300007E00>
. 19 31 -4 29 23] 48 @dc
@F8 @sf
[<
0FC0003FF0007FFC00F03C00F00E00F00E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
0001FFC003FFC001FFC0>
. 18 28 -3 27 24] 74 @dc

101 @eop0

0 0 101 @bop1 112 50 a @F10 @sf(4.10.)34 b(General)15 b(Utiliti)o(es)f 
@F8 @sf(<stdlib.h>)870 b @F14 @sf(101)-1651 145 y @F9 @sf(4.10.1.6)52 b
(The)18 b @F8 @sf(strtoul)e @F9 @sf(function)-705 89 y @F8 @sf(strtoul)21 b 
@F14 @sf(w)o(as)g(in)o(tro)q(duced)g(b)o(y)h(the)f(Committee)f(to)h(pro)o
(vide)g(a)g(facilit)o(y)f(lik)o(e)g @F8 @sf(strtol)h @F14 @sf(for)-1651 
56 y @F8 @sf(unsigned)i(long)16 b @F14 @sf(v)m(alues.)22 b(Simply)15 b
(using)h @F8 @sf(strtol)f @F14 @sf(in)h(suc)o(h)g(cases)g(could)g(result)f
(in)h(o)o(v)o(er\015o)o(w)-1652 57 y(up)q(on)g(con)o(v)o(ersion.)-335 131 y 
@F6 @sf(4.10.2)56 b(Pseudo-random)18 b(sequence)g(generation)f(functions)
-1333 88 y @F9 @sf(4.10.2.1)52 b(The)18 b @F8 @sf(rand)f @F9 @sf(function)
-634 89 y @F14 @sf(The)12 b(Committee)e(decided)i(that)f(an)g(implemen)o
(tation)f(should)h(b)q(e)h(allo)o(w)n(ed)f(to)f(pro)o(vide)h(a)g @F8 @sf
(rand)-1651 57 y @F14 @sf(function)h(whic)o(h)g(generates)f(the)h(b)q(est)h
(random)e(sequence)i(p)q(ossible)f(in)f(that)g(implemen)o(tation,)-1652 
56 y(and)18 b(therefore)g(mandated)f(no)h(standard)f(algori)o(thm.)26 b
(It)17 b(recognized)h(the)g(v)m(alue,)g(ho)o(w)o(ev)o(er,)-1652 57 y(of)e
(b)q(eing)f(able)h(to)f(generate)g(the)g(same)h(pseudo-random)g(sequence)g
(in)g(di\013eren)o(t)e(implemen-)-1650 56 y(tations,)j(and)g(so)g(it)g
(has)g(published)h(as)f(an)g(example)h(in)f(the)g(Standard)g(an)h(algori)o
(thm)e(that)-1651 57 y(generates)22 b(the)g(same)g(pseudo-random)g
(sequence)h(in)f(an)o(y)g(conforming)e(implemen)o(tation,)-1652 56 y(giv)o
(en)15 b(the)g(same)g(seed.)-407 129 y @F9 @sf(4.10.2.2)52 b(The)18 b 
@F8 @sf(srand)f @F9 @sf(function)-658 91 y @F6 @sf(4.10.3)56 b(Memory)17 b
(managemen)n(t)i(functions)-976 89 y @F14 @sf(The)e(treatmen)o(t)e(of)g(n)o
(ull)h(p)q(oin)o(ters)f(and)h(0-length)g(allo)q(catio)o(n)f(requests)h(in)g
(the)g(de\014nition)g(of)-1651 56 y(these)g(functions)f(w)o(as)f(in)h
(part)g(guided)g(b)o(y)g(a)g(desire)h(to)e(supp)q(ort)h(this)g(paradigm:)
-1251 102 y @F8 @sf(OBJ)24 b(*)g(p;)f(/*)h(pointer)f(to)g(a)h(variable)f
(list)g(of)h(OBJ's)f(*/)-1194 113 y(/*)h(initial)f(allocation)f(*/)-573 
56 y(p)i(=)g(\(OBJ)f(*\))h(calloc\(0,)e(sizeof\(OBJ\)\);)-837 56 y(/*)i
(...)f(*/)-215 113 y(/*)h(reallocations)e(until)h(size)h(settles)e(*/)-907 
57 y(while\(/*)h(list)g(changes)g(size)h(to)f(c)h(*/\))f({)-787 56 y(p)h
(=)f(\(OBJ)h(*\))f(realloc\(\(void)f(*\)p,)i(c*sizeof\(OBJ)o(\)\);)-1099 
57 y(/*)f(...)h(*/)-311 56 y(})-215 100 y @F14 @sf(This)16 b(co)q(ding)g
(st)o(yle,)f(not)h(necessarily)f(endorsed)i(b)o(y)f(the)g(Committee,)f(is)g
(rep)q(orted)h(to)g(b)q(e)h(in)-1651 57 y(widespread)f(use.)-241 58 y
(Some)i(implemen)o(tatio)o(ns)f(ha)o(v)o(e)g(returned)h(non-n)o(ull)g(v)m
(alues)f(for)g(allo)q(cation)f(requests)i(of)-1651 56 y(0)e(b)o(ytes.)21 b
(Although)15 b(this)h(strategy)e(has)i(the)f(theoretical)g(adv)m(an)o
(tage)g(of)g(distinguishing)g(b)q(e-)-1650 57 y(t)o(w)o(een)21 b
(\\nothing")e(and)i(\\zero")f(\(an)g(unallo)q(cated)g(p)q(oin)o(ter)g(vs.)g
(a)g(p)q(oin)o(ter)g(to)g(zero-length)-1651 56 y(space\),)14 b(it)f(has)g
(the)g(more)g(comp)q(elling)g(theoretical)f(disadv)m(an)o(tage)h(of)g
(requiring)f(the)i(concept)-1650 57 y(of)j(a)g(zero-length)h(ob)s(ject.)
25 b(Since)18 b(suc)o(h)g(ob)s(jects)f(cannot)g(b)q(e)h(declared,)g(the)f
(only)g(w)o(a)o(y)f(they)-1650 56 y(could)k(come)f(in)o(to)g(existence)g
(w)o(ould)g(b)q(e)h(through)f(suc)o(h)h(allo)q(cati)o(on)e(requests.)32 b
(The)20 b(Com-)-1651 57 y(mittee)g(has)f(decided)i(not)e(to)h(accept)g
(the)g(idea)f(of)h(zero-length)f(ob)s(jects.)33 b(The)20 b(allo)q(cation)
-253 124 y @F15 @sf(RA)m(TIONALE)-1763 b
101 @eop1

102 @bop0

102 @eop0
0 0 102 @bop1 112 50 a @F14 @sf(102)1143 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F14 @sf(functions)14 b(ma)o(y)f(therefore)g
(return)g(a)g(n)o(ull)g(p)q(oin)o(ter)g(for)g(an)h(allo)q(cati)o(on)e
(request)i(of)f(zero)g(b)o(ytes.)-1651 57 y(Note)i(that)g(this)f(treatmen)o
(t)g(do)q(es)i(not)f(preclude)h(the)f(paradigm)f(outlined)h(ab)q(o)o(v)o
(e.)-798 114 y @F7 @sf(QUIET)g(CHANGE)-876 78 y @F14 @sf(A)e(program)e
(whic)o(h)h(relies)g(on)h(size-0)f(allo)q(cati)o(on)f(requests)i
(returning)f(a)g(non-n)o(ull)-1423 57 y(p)q(oin)o(ter)j(will)f(b)q(eha)o
(v)o(e)h(di\013eren)o(tly)l(.)-719 170 y(Some)g(implemen)o(tations)e(pro)o
(vide)h(a)g(function)g(\(often)g(called)g @F8 @sf(alloca)p @F14 @sf(\))f
(whic)o(h)h(allo)q(cates)f(the)-1650 57 y(requested)h(ob)s(ject)e(from)g
(automatic)f(storage;)h(the)h(ob)s(ject)f(is)h(automati)o(cally)e(freed)i
(when)g(the)-1650 56 y(calling)j(function)g(exits.)22 b(Suc)o(h)17 b(a)f
(function)g(is)g(not)g(e\016cien)o(tly)g(implemen)o(table)f(in)h(a)g(v)m
(ariet)o(y)-1651 57 y(of)f(en)o(vironmen)o(ts,)f(so)h(it)g(w)o(as)f(not)h
(adopted)g(in)g(the)g(Standard.)-1114 129 y @F9 @sf(4.10.3.1)52 b(The)18 b 
@F8 @sf(calloc)e @F9 @sf(function)-681 89 y @F14 @sf(Both)j @F8 @sf(nelem)g 
@F14 @sf(and)g @F8 @sf(elsize)f @F14 @sf(m)o(ust)h(b)q(e)h(of)e(t)o(yp)q
(e)h @F8 @sf(size)s 14 -2 z 14 x(t)p @F14 @sf(,)g(for)g(reasons)g(simila)o
(r)f(to)g(those)h(for)-1651 56 y @F8 @sf(fread)c @F14 @sf(\(see)g @F12 @sf
(x)p @F14 @sf(4.9.8.1\))o(.)-336 58 y(If)h(a)g(scalar)f(with)h(all)f(bits)g
(zero)h(is)g(not)g(in)o(terpreted)f(as)h(a)g(zero)g(v)m(alue)g(b)o(y)g(an)g
(implemen-)-1650 57 y(tation,)e(then)i @F8 @sf(calloc)f @F14 @sf(ma)o(y)g
(ha)o(v)o(e)g(astonishing)f(results)h(in)g(existing)g(programs)f(transp)q
(orted)-1651 56 y(there.)-114 130 y @F9 @sf(4.10.3.2)52 b(The)18 b @F8 @sf
(free)f @F9 @sf(function)-634 88 y @F14 @sf(The)i(Standard)f(mak)o(es)g
(clear)g(that)f(a)h(program)f(ma)o(y)h(only)g(free)g(that)f(whic)o(h)h
(has)h(b)q(een)g(al-)-1651 57 y(lo)q(cated,)f(that)e(an)i(allo)q(cati)o
(on)e(ma)o(y)h(only)g(b)q(e)h(freed)f(once,)h(and)g(that)e(a)h(region)g
(ma)o(y)g(not)g(b)q(e)-1650 56 y(accessed)f(once)f(it)f(is)g(freed.)20 b
(Some)15 b(implemen)o(tatio)o(ns)f(allo)o(w)o 14 x(more)g(dangerous)g
(license.)20 b(The)-1650 57 y(n)o(ull)c(p)q(oin)o(ter)f(is)g(sp)q(eci\014ed)i
(as)e(a)g(v)m(alid)h(argumen)o(t)f(to)g(this)g(function)g(to)g(reduce)i
(the)f(need)g(for)-1651 56 y(sp)q(ecial-case)g(co)q(ding.)-388 130 y @F9 @sf
(4.10.3.3)52 b(The)18 b @F8 @sf(malloc)e @F9 @sf(function)-681 89 y
(4.10.3.4)52 b(The)18 b @F8 @sf(realloc)e @F9 @sf(function)-705 88 y 
@F14 @sf(A)d(n)o(ull)g(\014rst)f(argumen)o(t)g(is)g(p)q(ermissible.)19 b
(If)13 b(the)g(\014rst)f(argumen)o(t)g(is)g(not)h(n)o(ull,)f(and)h(the)g
(second)-1650 57 y(argumen)o(t)h(is)f(0,)h(then)g(the)g(call)f(frees)h
(the)g(memory)f(p)q(oin)o(ted)h(to)g(b)o(y)g(the)g(\014rst)f(argumen)o(t,)g
(and)-1650 56 y(a)j(n)o(ull)f(argumen)o(t)f(ma)o(y)h(b)q(e)h(returned;)g
(this)f(sp)q(eci\014cation)g(is)h(consisten)o(t)e(with)h(the)h(p)q(olicy)f
(of)-1651 57 y(not)g(allo)o(wing)e(zero-size)j(ob)s(jects.)-596 131 y 
@F6 @sf(4.10.4)56 b(Comm)n(unication)18 b(with)h(the)f(en)n(vironmen)n(t)
-1137 89 y @F9 @sf(4.10.4.1)52 b(The)18 b @F8 @sf(abort)f @F9 @sf
(function)-658 89 y @F14 @sf(The)g(Committee)f(v)m(acillated)f(o)o(v)o(er)h
(whether)h(a)f(call)g(to)g @F8 @sf(abort)g @F14 @sf(should)g(return)h(if)f
(the)h(signal)-1652 56 y @F8 @sf(SIGABRT)12 b @F14 @sf(is)f(caugh)o(t)h
(or)g(ignored.)18 b(T)l(o)12 b(minimize)f(astonishmen)o(t,)h(the)g(\014nal)g
(decision)g(w)o(as)f(that)-1651 57 y @F8 @sf(abort)k @F14 @sf(nev)o(er)g
(returns.)-523 124 y
102 @eop1

103 @bop0

103 @eop0
0 0 103 @bop1 112 50 a @F10 @sf(4.10.)34 b(General)15 b(Utiliti)o(es)f 
@F8 @sf(<stdlib.h>)870 b @F14 @sf(103)-1651 145 y @F9 @sf(4.10.4.2)52 b
(The)18 b @F8 @sf(atexit)e @F9 @sf(function)-681 92 y @F8 @sf(atexit)21 b 
@F14 @sf(pro)o(vides)f(a)h(program)f(with)h(a)g(con)o(v)o(enien)o(t)f(w)o
(a)o(y)h(to)f(clean)h(up)h(the)f(en)o(vironmen)o(t)-1651 56 y(b)q(efore)g
(it)f(exits.)36 b(It)20 b(is)g(adapted)h(from)f(the)g(Whitesmiths)g(C)g
(run-time)g(library)g(function)-1651 57 y @F8 @sf(onexit)p @F14 @sf(.)-86 
59 y(A)d(suggested)f(alternativ)o(e)f(w)o(as)h(to)g(use)h(the)f @F8 @sf
(SIGTERM)g @F14 @sf(facilit)n(y)f(of)i(the)f(signal/rais)o(e)g(ma-)-1651 
57 y(c)o(hinery)l(,)h(but)f(that)g(w)o(ould)g(not)g(giv)o(e)f(the)i
(last-in)e(\014rst-out)h(stac)o(king)f(of)h(m)o(ultiple)f(functions)-1651 
56 y(so)g(useful)h(with)e @F8 @sf(atexit)p @F14 @sf(.)-376 60 y(It)f(is)e
(the)i(resp)q(onsibilit)o(y)e(of)h(the)g(library)g(to)f(main)o(tain)g(the)i
(c)o(hain)f(of)g(registered)g(functions)-1651 56 y(so)j(that)g(they)g(are)g
(in)o(v)o(ok)o(ed)f(in)h(the)h(correct)e(sequence)j(up)q(on)f(program)e
(exit.)-1355 138 y @F9 @sf(4.10.4.3)52 b(The)18 b @F8 @sf(exit)f @F9 @sf
(function)-634 92 y @F14 @sf(The)f(argumen)o(t)e(to)g @F8 @sf(exit)h 
@F14 @sf(is)f(a)h(status)f(indication)g(returned)h(to)g(the)g(in)o(v)o
(oking)e(en)o(vironmen)o(t.)-1651 56 y(In)21 b(the)e(UNIX)h(op)q(erating)f
(system,)g(a)h(v)m(alue)f(of)g(0)g(is)g(the)h(successful)g(return)f(co)q
(de)h(from)f(a)-1651 57 y(program.)g(As)14 b(usage)f(of)g(C)h(has)g
(spread)g(b)q(ey)o(ond)g(UNIX,)g @F8 @sf(exit\(0\))f @F14 @sf(has)g(often)h
(b)q(een)h(retained)-1651 56 y(as)i(an)f(idiom)g(indicating)g(successful)h
(terminatio)o(n,)f(ev)o(en)h(on)f(op)q(erating)g(systems)h(with)f(dif-)-1651 
57 y(feren)o(t)i(systems)g(of)f(return)h(co)q(des.)29 b(This)18 b(usage)g
(is)f(th)o(us)h(recognized)g(as)g(standard.)28 b(There)-1650 56 y(has)15 b
(nev)o(er)h(b)q(een)g(a)e(p)q(ortable)h(w)o(a)o(y)f(of)h(indicating)f(a)g
(non-successful)i(termination,)d(since)i(the)-1650 57 y(argumen)o(ts)f(to)g 
@F8 @sf(exit)g @F14 @sf(are)g(then)h(implemen)o(tati)o(on-de\014ned.)20 b
(The)15 b(macro)e @F8 @sf(EXIT)s 14 -2 z 14 x(FAILURE)h @F14 @sf(has)-1651 
56 y(b)q(een)j(added)f(to)e(pro)o(vide)h(suc)o(h)g(a)g(capabilit)o(y)l(.)k
(\()p @F8 @sf(EXIT)s 14 -2 z 13 x(SUCCESS)14 b @F14 @sf(has)h(b)q(een)i
(added)f(as)e(w)o(ell.\))-1551 60 y(Aside)k(from)g(calls)f(explicitly)g
(co)q(ded)j(b)o(y)e(a)g(programmer,)f @F8 @sf(exit)h @F14 @sf(is)g(in)o(v)o
(ok)o(ed)f(on)h(return)-1650 56 y(from)13 b @F8 @sf(main)p @F14 @sf(.)18 b
(Th)o(us)13 b(in)g(at)f(least)g(this)h(case,)g(the)g(b)q(o)q(dy)h(of)e 
@F8 @sf(exit)h @F14 @sf(cannot)f(assume)h(the)g(existence)-1650 57 y(of)i
(an)o(y)g(ob)s(jects)g(with)f(automatic)g(storage)g(duration)g(\(except)i
(those)f(declared)g(in)g @F8 @sf(exit)p @F14 @sf(\).)-1592 137 y @F9 @sf
(4.10.4.4)52 b(The)18 b @F8 @sf(getenv)e @F9 @sf(function)-681 92 y @F14 @sf
(The)k(de\014nition)f(of)f @F8 @sf(getenv)h @F14 @sf(is)f(designed)i(to)e
(accommo)q(date)h(b)q(oth)g(implemen)o(tatio)o(ns)f(that)-1651 57 y(ha)o
(v)o(e)d(all)e(in-memory)h(read-only)h(en)o(vironmen)o(t)f(strings)f(and)i
(those)f(that)g(ma)o(y)g(ha)o(v)o(e)g(to)g(read)-1650 56 y(an)e(en)o
(vironmen)o(t)f(string)f(in)o(to)h(a)g(static)f(bu\013er.)19 b(Hence)13 b
(the)e(p)q(oin)o(ter)g(returned)h(b)o(y)g(the)f @F8 @sf(getenv)-1651 57 y 
@F14 @sf(function)18 b(p)q(oin)o(ts)f(to)g(a)g(string)g(not)g(mo)q
(di\014able)g(b)o(y)h(the)f(caller.)26 b(If)18 b(an)g(attempt)e(is)h(made)h
(to)-1651 56 y(c)o(hange)e(this)e(string,)g(the)h(b)q(eha)o(vior)g(of)g
(future)g(calls)f(to)h @F8 @sf(getenv)f @F14 @sf(is)h(unde\014ned.)-1325 
60 y(A)g(corresp)q(onding)f @F8 @sf(putenv)f @F14 @sf(function)i(w)o(as)e
(omitted)h(from)f(the)i(Standard,)f(since)h(its)e(util-)-1651 56 y(it)o(y)k
(outside)h(a)g(m)o(ulti-pro)q(cess)f(en)o(vironmen)o(t)g(is)h
(questionable,)g(and)g(since)g(its)f(de\014nition)h(is)-1651 57 y(prop)q
(erly)e(the)f(domain)f(of)h(an)g(op)q(erating)g(system)g(standard.)-1080 
137 y @F9 @sf(4.10.4.5)52 b(The)18 b @F8 @sf(system)e @F9 @sf(function)-681 
92 y @F14 @sf(The)d @F8 @sf(system)e @F14 @sf(function)h(allo)o(ws)f(a)h
(program)f(to)h(susp)q(end)h(its)e(execution)i(temp)q(orarily)e(in)h
(order)-1651 57 y(to)j(run)h(another)e(program)g(to)h(completion.)-704 59 y
(Information)25 b(ma)o(y)g(b)q(e)h(passed)g(to)f(the)h(called)f(program)g
(in)g(three)h(w)o(a)o(ys:)40 b(through)-1651 57 y(command-line)23 b
(argumen)o(t)f(strings,)i(through)e(the)h(en)o(vironmen)o(t,)h(and)f
(\(most)e(p)q(ortably\))-1651 56 y(through)c(data)g(\014les.)26 b(Before)
17 b(calling)f(the)h(system)g(function,)g(the)g(calling)f(program)g
(should)-1650 57 y(close)f(all)f(suc)o(h)i(data)f(\014les.)931 124 y 
@F15 @sf(RA)m(TIONALE)-1763 b
103 @eop1

104 @bop0

104 @eop0
0 0 104 @bop1 112 50 a @F14 @sf(104)1143 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1578 145 y @F14 @sf(Information)20 b(ma)o(y)f(b)q(e)j
(returned)f(from)e(the)i(called)f(program)g(in)g(t)o(w)o(o)f(w)o(a)o(ys:)
30 b(through)-1651 57 y(the)20 b(implemen)o(tation-de\014ned)g(return)f(v)m
(alue)h(\(in)g(man)o(y)f(implemen)o(tatio)o(ns,)g(the)h(termina-)-1651 56 y
(tion)h(status)f(co)q(de)h(whic)o(h)g(is)g(the)g(argumen)o(t)f(to)g(the)h 
@F8 @sf(exit)g @F14 @sf(function)g(is)f(returned)h(b)o(y)g(the)-1650 56 y
(implemen)o(tation)d(to)h(the)h(caller)e(as)i(the)f(v)m(alue)h(returned)g
(b)o(y)f(the)h @F8 @sf(system)f @F14 @sf(function\),)g(and)-1650 57 y
(\(most)c(p)q(ortably\))f(through)h(data)f(\014les.)-625 57 y(If)h(the)f
(en)o(vironmen)o(t)g(is)g(in)o(teractiv)o(e,)f(informati)o(on)g(ma)o(y)h
(also)f(b)q(e)j(exc)o(hanged)f(with)e(users)-1650 57 y(of)i(in)o(teractiv)o
(e)f(devices.)-358 57 y(Some)g(implemen)o(tations)e(o\013er)h(built-in)h
(programs)e(called)i(\\commands")f(\(for)g(example,)-1651 57 y(\\date"\))
19 b(whic)o(h)g(ma)o(y)g(pro)o(vide)g(useful)g(informatio)o(n)f(to)h(an)g
(application)f(program)h(via)f(the)-1650 56 y @F8 @sf(system)e @F14 @sf
(function.)24 b(The)17 b(Standard)f(do)q(es)h(not)f(attempt)f(to)h(c)o
(haracterize)g(suc)o(h)h(commands,)-1651 57 y(and)f(their)f(use)g(is)g
(not)g(p)q(ortable.)-511 57 y(On)20 b(the)g(other)g(hand,)h(the)f(use)g
(of)f(the)h @F8 @sf(system)f @F14 @sf(function)h @F11 @sf(is)j @F14 @sf(p)q
(ortable,)d(pro)o(vided)f(the)-1650 56 y(implemen)o(tation)d(supp)q(orts)i
(the)g(capabilit)o(y)l(.)26 b(The)18 b(Standard)g(p)q(ermits)f(the)h
(application)e(to)-1651 57 y(ascertain)c(this)f(b)o(y)h(calling)f(the)i 
@F8 @sf(system)e @F14 @sf(function)h(with)f(a)h(n)o(ull)g(p)q(oin)o(ter)f
(argumen)o(t.)18 b(Whether)-1650 56 y(more)12 b(lev)o(els)e(of)h(nesting)g
(are)h(supp)q(orted)g(can)f(also)g(b)q(e)h(ascertained)f(this)g(w)o(a)o
(y;)g(assuming)g(more)-1651 57 y(than)16 b(one)f(suc)o(h)g(lev)o(el)g(is)g
(ob)o(viously)f(dangerous.)-856 127 y @F6 @sf(4.10.5)56 b(Searc)n(hing)18 b
(and)i(sorting)e(utiliti)o(es)-937 87 y @F9 @sf(4.10.5.1)52 b(The)18 b 
@F8 @sf(bsearch)e @F9 @sf(function)-705 88 y(4.10.5.2)52 b(The)18 b @F8 @sf
(qsort)f @F9 @sf(function)-658 89 y @F6 @sf(4.10.6)56 b(In)n(teger)18 b
(arithmeti)o(c)g(functions)-888 88 y @F8 @sf(abs)c @F14 @sf(w)o(as)f(mo)o
(v)o(ed)h(from)f @F8 @sf(<math.h>)g @F14 @sf(as)h(it)f(w)o(as)g(the)h
(only)g(function)g(in)f(that)h(library)e(whic)o(h)i(did)-1650 56 y(not)19 b
(in)o(v)o(olv)o(e)e @F8 @sf(double)h @F14 @sf(arithmetic.)o 29 x(Some)h
(programs)e(ha)o(v)o(e)i(included)g @F8 @sf(<math.h>)e @F14 @sf(solely)h
(to)-1651 57 y(gain)12 b(access)g(to)f @F8 @sf(abs)p @F14 @sf(,)h(but)g
(in)g(some)g(implemen)o(tations)e(this)i(results)f(in)h(un)o(used)h
(\015oating-p)q(oin)o(t)-1652 56 y(run-time)i(routines)g(b)q(ecoming)g
(part)g(of)g(the)g(translated)f(program.)-1190 126 y @F9 @sf(4.10.6.1)52 b
(The)18 b @F8 @sf(abs)f @F9 @sf(function)-610 87 y @F14 @sf(The)11 b
(Committee)e(rejected)i(prop)q(osals)e(to)h(add)h(an)f(absolute)f(v)m
(alue)i(op)q(erator)e(to)h(the)h(language.)-1652 57 y(An)16 b(implemen)o
(tation)d(can)j(pro)o(vide)f(a)f(built-in)h(function)g(for)g(e\016ciency)l
(.)-1281 125 y @F9 @sf(4.10.6.2)52 b(The)18 b @F8 @sf(div)f @F9 @sf
(function)-610 88 y @F8 @sf(div)k @F14 @sf(and)h @F8 @sf(ldiv)f @F14 @sf
(pro)o(vide)f(a)h(w)o(ell-sp)q(eci\014ed)h(seman)o(tics)e(for)h(signed)g
(in)o(tegral)f(division)g(and)-1650 56 y(remainder)12 b(op)q(erations.)17 b
(The)12 b(seman)o(tics)f(w)o(ere)g(adopted)h(to)f(b)q(e)h(the)f(same)g(as)h
(in)f(F)o(OR)l(TRAN.)-1650 57 y(Since)j(these)f(functions)g(return)g(b)q
(oth)g(the)g(quotien)o(t)g(and)g(the)g(remainder,)g(they)g(also)f(serv)o
(e)h(as)-1651 56 y(a)k(con)o(v)o(enien)o(t)f(w)o(a)o(y)f(of)h(e\016cien)o
(tly)g(mo)q(delling)g(underlying)g(hardw)o(are)g(that)g(computes)g(b)q
(oth)-1650 57 y(results)f(as)g(part)g(of)g(the)h(same)f(op)q(eration.)20 b
(T)l(able)c(4.2)e(summarizes)h(the)h(seman)o(tics)e(of)h(these)-1650 56 y
(functions.)-123 58 y(Divide-b)o(y-zero)d(is)f(describ)q(ed)i(as)e @F11 @sf
(unde\014ne)n(d)h(b)n(ehavior)17 b @F14 @sf(rather)12 b(than)f(as)h
(setting)f @F8 @sf(errno)g @F14 @sf(to)-1651 56 y @F8 @sf(EDOM)p @F14 @sf
(.)k(The)g(program)f(can)h(as)f(easily)g(c)o(hec)o(k)i(for)e(a)h(zero)g
(divisor)f(b)q(efore)h(a)g(division)e(as)i(for)f(an)-1650 57 y(error)g(co)q
(de)h(afterw)o(ards,)e(and)h(the)h(adopted)f(sc)o(heme)h(reduces)g(the)g
(burden)g(on)f(the)h(function.)-1763 124 y
104 @eop1

105 @bop0
@F4 @sf
[<
007FFFFFE000007FFFFFE000007FFFFFE00000003FC0000000003FC0000000003FC0000000
003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003F
C0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0
0000E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E0F0003FC001
E0F0003FC001E070003FC001C078003FC003C078003FC003C07E003FC007C07F803FC03FC0
7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC0>
. 43 40 -2 39 48] 84 @dc

105 @eop0

0 0 105 @bop1 112 50 a @F10 @sf(4.11.)34 b(STRING)16 b(HANDLING)g @F8 @sf
(<string.h>)753 b @F14 @sf(105)-1175 177 y(T)l(able)15 b(4.2:)k(Results)c
(of)g @F8 @sf(div)g @F14 @sf(and)g @F8 @sf(ldiv)-656 55 y 613 -2 z -1 57 a 
2 -56 z 26 -17 a(numer)23 17 y 2 -56 z 26 -17 a(denom)23 17 y 2 -56 z 9 x 
2 -56 z 25 -17 a(quot)24 17 y 2 -56 z 26 -17 a(rem)23 17 y 2 -56 z -612 
2 a 613 -2 z 10 w 613 -2 z -1 56 a 2 -56 z 122 -17 a @F14 @sf(7)24 17 y 
2 -56 z 122 -17 a(3)24 17 y 2 -56 z 9 x 2 -56 z 98 -17 a(2)24 17 y 2 -56 z 
74 -17 a(1)24 17 y 2 -56 z -612 2 a 613 -2 z -1 56 a 2 -56 z 87 -17 a 
@F12 @sf(\000)p @F14 @sf(7)24 17 y 2 -56 z 122 -17 a(3)24 17 y 2 -56 z 9 x 
2 -56 z 63 -17 a @F12 @sf(\000)p @F14 @sf(2)24 17 y 2 -56 z 39 -17 a 
@F12 @sf(\000)p @F14 @sf(1)24 17 y 2 -56 z -612 2 a 613 -2 z -1 56 a 2 -56 z 
122 -17 a(7)24 17 y 2 -56 z 87 -17 a @F12 @sf(\000)p @F14 @sf(3)24 17 y 
2 -56 z 9 x 2 -56 z 63 -17 a @F12 @sf(\000)p @F14 @sf(2)24 17 y 2 -56 z 
74 -17 a(1)24 17 y 2 -56 z -612 2 a 613 -2 z -1 56 a 2 -56 z 87 -17 a 
@F12 @sf(\000)p @F14 @sf(7)24 17 y 2 -56 z 87 -17 a @F12 @sf(\000)p @F14 @sf
(3)24 17 y 2 -56 z 9 x 2 -56 z 98 -17 a(2)24 17 y 2 -56 z 39 -17 a @F12 @sf
(\000)p @F14 @sf(1)24 17 y 2 -56 z -612 2 a 613 -2 z -519 174 a @F9 @sf
(4.10.6.3)52 b(The)18 b @F8 @sf(labs)f @F9 @sf(function)-634 86 y
(4.10.6.4)52 b(The)18 b @F8 @sf(ldiv)f @F9 @sf(function)-634 88 y @F6 @sf
(4.10.7)56 b(Multib)n(yte)17 b(c)n(haracter)i(functions)-931 86 y @F14 @sf
(See)13 b @F12 @sf(x)p @F14 @sf(2.2.1.2)o 11 x(for)e(an)h(o)o(v)o(erall)e
(discussion)i(of)f(m)o(ultib)o(yte)f(c)o(haracter)i(represen)o(tations)e
(and)j(wide)-1651 56 y(c)o(haracters.)-215 120 y @F9 @sf(4.10.7.1)52 b
(The)18 b @F8 @sf(mblen)f @F9 @sf(function)-658 86 y(4.10.7.2)52 b(The)18 b 
@F8 @sf(mbtowc)e @F9 @sf(function)-681 86 y(4.10.7.3)52 b(The)18 b @F8 @sf
(wctomb)e @F9 @sf(function)-681 88 y @F6 @sf(4.10.8)56 b(Multib)n(yte)17 b
(string)h(functions)-845 86 y @F14 @sf(See)13 b @F12 @sf(x)p @F14 @sf
(2.2.1.2)o 11 x(for)e(an)h(o)o(v)o(erall)e(discussion)i(of)f(m)o(ultib)o
(yte)f(c)o(haracter)i(represen)o(tations)e(and)j(wide)-1651 56 y(c)o
(haracters.)-215 120 y @F9 @sf(4.10.8.1)52 b(The)18 b @F8 @sf(mbstowcs)e 
@F9 @sf(function)-729 86 y(4.10.8.2)52 b(The)18 b @F8 @sf(wcstombs)e @F9 @sf
(function)-729 105 y @F4 @sf(4.11)70 b(STRING)23 b(HANDLING)-683 74 y 
@F0 @sf(<stri)q(ng)q(.h>)q -504 102 a @F14 @sf(The)17 b(Committee)e(felt)g
(that)h(the)g(functions)g(in)g(this)f(section)h(w)o(ere)g(all)f(excellen)o
(t)h(candidates)-1651 56 y(for)f(replacemen)o(t)g(b)o(y)g(high-p)q
(erformance)h(built-in)f(op)q(erations.)k(Hence)d(man)o(y)f(simple)g
(func-)-1650 57 y(tions)h(ha)o(v)o(e)f(b)q(een)j(retained,)d(and)h(sev)o
(eral)g(added,)g(just)g(to)f(lea)o(v)o(e)g(the)i(do)q(or)e(op)q(en)i(for)e
(b)q(etter)-1650 56 y(implemen)o(tations)f(of)h(these)g(common)g(op)q
(erations.)-842 57 y(The)k(Standard)f(reserv)o(es)g(function)g(names)h(b)q
(eginning)f(with)g @F8 @sf(str)g @F14 @sf(or)g @F8 @sf(mem)g @F14 @sf(for)g
(p)q(ossible)-1651 56 y(future)e(use.)-212 122 y @F6 @sf(4.11.1)56 b
(String)18 b(function)g(con)n(v)n(en)n(tions)-872 86 y @F8 @sf(memcpy)p 
@F14 @sf(,)e @F8 @sf(memset)p @F14 @sf(,)f @F8 @sf(memcmp)p @F14 @sf(,)h
(and)g @F8 @sf(memchr)g @F14 @sf(ha)o(v)o(e)g(b)q(een)h(adopted)f(from)g
(sev)o(eral)f(existing)h(im-)-1651 57 y(plemen)o(tations.)35 b(The)21 b
(general)f(goal)g(w)o(as)g(to)g(pro)o(vide)g(equiv)m(alen)o(t)g
(capabilities)f(for)h(three)-251 124 y @F15 @sf(RA)m(TIONALE)-1763 b
105 @eop1

106 @bop0

106 @eop0
0 0 106 @bop1 112 50 a @F14 @sf(106)1143 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F14 @sf(t)o(yp)q(es)16 b(of)e(b)o(yte)h
(sequences:)-407 96 y @F12 @sf(\017)22 b @F14 @sf(n)o(ull-terminated)14 b
(strings)g(\()p @F8 @sf(str-)p @F14 @sf(\),)-659 97 y @F12 @sf(\017)22 b 
@F14 @sf(n)o(ull-terminated)14 b(strings)g(with)h(a)g(maxim)o(um)f(length)h
(\()p @F8 @sf(strn-)p @F14 @sf(\),)e(and)-1262 96 y @F12 @sf(\017)22 b 
@F14 @sf(transparen)o(t)14 b(data)h(of)g(sp)q(eci\014ed)h(length)f(\()p 
@F8 @sf(mem-)p @F14 @sf(\).)-981 125 y @F6 @sf(4.11.2)56 b(Cop)n(ying)19 b
(functions)-644 87 y @F14 @sf(A)d(blo)q(c)o(k)f(cop)o(y)g(routine)g
(should)h(b)q(e)g(\\righ)o(t":)o 19 x(it)f(should)h(w)o(ork)e(correctly)h
(ev)o(en)g(if)g(the)h(blo)q(c)o(ks)-1651 57 y(b)q(eing)11 b(copied)f(o)o
(v)o(erlap.)17 b(Otherwise)11 b(it)e(is)h(more)g(di\016cult)f(to)h
(correctly)f(co)q(de)i(suc)o(h)g(o)o(v)o(erlapping)-1652 56 y(cop)o(y)16 b
(op)q(erations,)f(and)i(p)q(ortabilit)o -1 x(y)d(su\013ers)i(b)q(ecause)h
(the)f(optimal)f(C-co)q(ded)h(algorithm)e(on)-1650 57 y(one)i(mac)o(hine)f
(ma)o(y)f(b)q(e)i(horribly)e(slo)o(w)g(on)i(another.)-853 57 y(A)c(blo)q
(c)o(k)f(cop)o(y)g(routine)g(should)h(b)q(e)g(\\fast":)17 b(it)11 b
(should)g(b)q(e)h(implemen)o(table)f(as)g(a)g(few)h(inline)-1651 56 y
(instructions)20 b(whic)o(h)g(tak)o(e)f(maxim)o(um)g(adv)m(an)o(tage)h(of)g
(an)o(y)g(blo)q(c)o(k)g(cop)o(y)g(pro)o(visions)f(of)g(the)-1650 57 y
(hardw)o(are.)k(Chec)o(king)16 b(for)g(o)o(v)o(erlapping)f(copies)h(pro)q
(duces)h(to)q(o)f(m)o(uc)o(h)g(co)q(de)h(for)f(con)o(v)o(enien)o(t)-1651 
56 y(inlining)h(in)g(man)o(y)h(implemen)o(tati)o(ons.)26 b(The)18 b
(programmer)e(kno)o(ws)h(in)g(a)h(great)e(man)o(y)h(cases)-1650 57 y(that)d
(the)g(t)o(w)o(o)f(blo)q(c)o(ks)h(cannot)g(p)q(ossibly)g(o)o(v)o(erlap,)f
(so)h(the)g(space)g(and)h(time)e(o)o(v)o(erhead)h(are)g(for)-1651 56 y
(naugh)o(t.)-80 57 y(These)i(argumen)o(ts)e(are)h(con)o(tradictory)f(but)i
(eac)o(h)f(is)g(comp)q(elling.)20 b(Therefore)15 b(the)g(Stan-)-1650 57 y
(dard)21 b(mandates)g(t)o(w)o(o)e(blo)q(c)o(k)i(cop)o(y)f(functions:)31 b 
@F8 @sf(memmove)20 b @F14 @sf(is)g(required)h(to)f(w)o(ork)g(correctly)-1651 
56 y(ev)o(en)e(if)f(the)g(source)g(and)g(destination)f(o)o(v)o(erlap,)g
(while)h @F8 @sf(memcpy)f @F14 @sf(can)i(presume)f(nono)o(v)o(erlap-)-1651 
57 y(ping)f(op)q(erands)f(and)g(b)q(e)h(optimized)f(accordingly)l(.)-891 
123 y @F9 @sf(4.11.2.1)52 b(The)18 b @F8 @sf(memcpy)e @F9 @sf(function)-681 
87 y(4.11.2.2)52 b(The)18 b @F8 @sf(memmove)e @F9 @sf(function)-705 87 y
(4.11.2.3)52 b(The)18 b @F8 @sf(strcpy)e @F9 @sf(function)-681 87 y
(4.11.2.4)52 b(The)18 b @F8 @sf(strncpy)e @F9 @sf(function)-705 87 y @F8 @sf
(strncpy)f @F14 @sf(w)o(as)h(initial)o(ly)e(in)o(tro)q(duced)i(in)o(to)f
(the)h(C)g(library)f(to)g(deal)h(with)f(\014xed-length)h(name)-1650 57 y
(\014elds)i(in)f(structures)h(suc)o(h)f(as)g(directory)g(en)o(tries.)26 b
(Suc)o(h)18 b(\014elds)g(are)f(not)g(used)h(in)f(the)h(same)-1651 56 y(w)o
(a)o(y)13 b(as)h(strings:)k(the)c(traili)o(ng)f(n)o(ull)g(is)g
(unnecessary)i(for)e(a)h(maxim)o(um-length)e(\014eld,)i(and)h(set-)-1651 
57 y(ting)f(trailing)f(b)o(ytes)h(for)h(shorter)f(names)g(to)g(n)o(ull)g
(assures)h(e\016cien)o(t)f(\014eld-wise)h(comparisons.)-1652 56 y @F8 @sf
(strncpy)f @F14 @sf(is)g(not)h(b)o(y)f(origin)f(a)i(\\b)q(ounded)h @F8 @sf
(strcpy)p @F14 @sf(,")d(and)i(the)f(Committee)g(has)g(preferred)h(to)-1651 
57 y(recognize)k(existing)e(practice)h(rather)f(than)i(alter)e(the)h
(function)g(to)g(b)q(etter)g(suit)g(it)f(to)h(suc)o(h)-1650 56 y(use.)-76 
125 y @F6 @sf(4.11.3)56 b(Concatenation)18 b(functions)-795 87 y @F9 @sf
(4.11.3.1)52 b(The)18 b @F8 @sf(strcat)e @F9 @sf(function)-681 87 y
(4.11.3.2)52 b(The)18 b @F8 @sf(strncat)e @F9 @sf(function)-705 88 y 
@F14 @sf(Note)f(that)g(this)f(function)h(ma)o(y)g(add)g @F8 @sf(n)p @F14 @sf
(+1)g(c)o(haracters)g(to)f(the)i(string.)-1350 124 y
106 @eop1

107 @bop0

107 @eop0
0 0 107 @bop1 112 50 a @F10 @sf(4.11.)34 b(STRING)16 b(HANDLING)g @F8 @sf
(<string.h>)753 b @F14 @sf(107)-1651 145 y @F6 @sf(4.11.4)56 b(Comparison)
19 b(functions)-735 95 y @F9 @sf(4.11.4.1)52 b(The)18 b @F8 @sf(memcmp)e 
@F9 @sf(function)-681 94 y @F14 @sf(See)g @F12 @sf(x)q @F14 @sf(4.11.)o
(1.)-232 146 y @F9 @sf(4.11.4.2)52 b(The)18 b @F8 @sf(strcmp)e @F9 @sf
(function)-681 95 y(4.11.4.3)52 b(The)18 b @F8 @sf(strcoll)e @F9 @sf
(function)-705 95 y @F8 @sf(strcoll)e @F14 @sf(and)g @F8 @sf(strxfrm)f 
@F14 @sf(pro)o(vide)h(for)g @F11 @sf(lo)n(c)n(ale-sp)n(e)n(c)o(i\014c)f 
@F14 @sf(string)g(sorting.)18 b @F8 @sf(strcoll)13 b @F14 @sf(is)h(in)o
(tended)-1650 56 y(for)22 b(applications)f(in)h(whic)o(h)g(the)g(n)o(um)o
(b)q(er)g(of)g(comparisons)f(is)h(small;)i @F8 @sf(strxfrm)d @F14 @sf(is)h
(more)-1651 57 y(appropriate)14 b(when)h(items)e(are)h(to)g(b)q(e)h
(compared)f(a)g(n)o(um)o(b)q(er)h(of)f(times)f(|)i(the)f(cost)g(of)g
(trans-)-1651 56 y(formation)g(is)h(then)g(only)g(paid)g(once.)-660 146 y 
@F9 @sf(4.11.4.4)52 b(The)18 b @F8 @sf(strncmp)e @F9 @sf(function)-705 95 y
(4.11.4.5)52 b(The)18 b @F8 @sf(strxfrm)e @F9 @sf(function)-705 94 y 
@F14 @sf(See)g @F12 @sf(x)q @F14 @sf(4.11.)o(4.3.)o -267 148 a @F6 @sf
(4.11.5)56 b(Searc)n(h)19 b(functions)-603 95 y @F9 @sf(4.11.5.1)52 b(The)
18 b @F8 @sf(memchr)e @F9 @sf(function)-681 94 y @F14 @sf(See)g @F12 @sf
(x)q @F14 @sf(4.11.)o(1.)-232 146 y @F9 @sf(4.11.5.2)52 b(The)18 b @F8 @sf
(strchr)e @F9 @sf(function)-681 95 y(4.11.5.3)52 b(The)18 b @F8 @sf
(strcspn)e @F9 @sf(function)-705 94 y(4.11.5.4)52 b(The)18 b @F8 @sf
(strpbrk)e @F9 @sf(function)-705 95 y(4.11.5.5)52 b(The)18 b @F8 @sf
(strrchr)e @F9 @sf(function)-705 95 y(4.11.5.6)52 b(The)18 b @F8 @sf
(strspn)e @F9 @sf(function)-681 94 y(4.11.5.7)52 b(The)18 b @F8 @sf
(strstr)e @F9 @sf(function)-681 95 y @F14 @sf(The)g @F8 @sf(strstr)e 
@F14 @sf(function)g(is)h(an)g(in)o(v)o(en)o(tion)e(of)i(the)g(Committee.)j
(It)d(is)g(included)g(as)g(a)f(ho)q(ok)h(for)-1651 56 y(e\016cien)o(t)g
(substring)g(algorit)o(hms,)f(or)g(for)h(built-in)g(substring)f
(instructions.)-1335 146 y @F9 @sf(4.11.5.8)52 b(The)18 b @F8 @sf(strtok)e 
@F9 @sf(function)-681 95 y @F14 @sf(This)j(function)f(has)g(b)q(een)i
(included)f(to)f(pro)o(vide)g(a)h(con)o(v)o(enien)o(t)f(solution)f(to)h
(man)o(y)g(simple)-1651 57 y(problems)d(of)g(lexical)f(analysis,)g(suc)o
(h)h(as)g(scanning)g(command)g(line)g(argumen)o(ts.)-30 124 y @F15 @sf(RA)m
(TIONALE)-1763 b
107 @eop1

108 @bop0
@F11 @sf
[<
804060381C0E0F06>
. 8 8 -16 31 23] 19 @dc

108 @eop0
 0 0 108 @bop1 112 50 a @F14 @sf(108)1143 b @F10 @sf
(Section)15 b(4.)35 b(LIBRAR)q -4 x(Y)-1649 145 y @F6 @sf(4.11.6)56 b
(Miscellaneous)17 b(functions)-779 87 y @F9 @sf(4.11.6.1)52 b(The)18 b 
@F8 @sf(memset)e @F9 @sf(function)-681 87 y @F14 @sf(See)g @F12 @sf(x)q 
@F14 @sf(4.11.)o(1,)d(and)j @F12 @sf(x)p @F14 @sf(4.10.3.)o(1.)-520 123 y 
@F9 @sf(4.11.6.2)52 b(The)18 b @F8 @sf(strerror)e @F9 @sf(function)-729 
87 y @F14 @sf(This)i(function)g(is)f(a)h(descendan)o(t)h(of)e @F8 @sf
(perror)g @F14 @sf(\(see)h @F12 @sf(x)p @F14 @sf(4.9.10.4)o(\).)27 b(It)
18 b(is)f(de\014ned)j(suc)o(h)e(that)f(it)-1651 56 y(can)g(return)f(a)g(p)q
(oin)o(ter)g(to)f(an)h(in-memory)g(read-only)g(string,)f(or)h(can)g(cop)o
(y)g(a)g(string)g(in)o(to)f(a)-1651 57 y(static)f(bu\013er)i(on)f(eac)o(h)g
(call.)-502 123 y @F9 @sf(4.11.6.3)52 b(The)18 b @F8 @sf(strlen)e @F9 @sf
(function)-681 86 y @F14 @sf(This)f(function)f(is)g(no)o(w)g(sp)q(eci\014ed)i
(as)e(returning)g(a)h(v)m(alue)f(of)h(t)o(yp)q(e)f @F8 @sf(size)s 14 -2 z 
14 x(t)p @F14 @sf(.)19 b(\(See)c @F12 @sf(x)p @F14 @sf(3.3.3.4.)o(\))-1612 
147 y @F4 @sf(4.12)70 b(D)n(A)-6 b(TE)23 b(AND)g(TIME)-579 74 y @F0 @sf
(<time)q(.h)q(>)-441 105 y @F6 @sf(4.12.1)56 b(Comp)r(onen)n(ts)18 b(of)h
(time)-699 86 y @F14 @sf(The)f(t)o(yp)q(es)f @F8 @sf(clock)s 14 -2 z 13 x
(t)g @F14 @sf(and)h @F8 @sf(time)s 14 -2 z 13 x(t)f @F14 @sf(are)g
(arithmetic)f(b)q(ecause)i(v)m(alues)f(of)g(these)g(t)o(yp)q(es)g(m)o
(ust,)-1651 57 y(in)g(accordance)g(with)g(existing)f(practice,)g(on)h(o)q
(ccasion)g(b)q(e)g(compared)g(with)g @F12 @sf(\000)p @F14 @sf(1)g(\(a)f
(\\don't-)-1651 56 y(kno)o(w")d(indication\))f(suitably)h(cast.)19 b(No)
13 b(arithmetic)f(prop)q(erties)h(of)h(these)f(t)o(yp)q(es)h(are)f(de\014ned)
-1649 57 y(b)o(y)19 b(the)f(Standard,)h(ho)o(w)o(ev)o(er,)f(in)g(order)g
(to)g(allo)o(w)f(implemen)o(tatio)o(ns)g(the)i(maxim)o(um)e(\015exi-)-1650 
56 y(bilit)o(y)e(in)h(c)o(ho)q(osing)g(ranges,)f(precisions,)h(and)g
(represen)o(tations)f(most)g(appropriate)g(to)h(their)-1651 57 y(in)o
(tended)j(application.)26 b(The)18 b(represen)o(tation)f(need)i(not)e(b)q
(e)i(a)e(coun)o(t)h(of)f(some)h(basic)f(unit;)-1651 56 y(an)e(implemen)o
(tation)e(migh)o(t)h(conceiv)m(ably)h(represen)o(t)g(di\013eren)o(t)f
(comp)q(onen)o(ts)h(of)f(a)g(temp)q(oral)-1651 57 y(v)m(alue)i(as)f
(sub\014elds)h(of)e(an)h(in)o(tegral)f(t)o(yp)q(e.)-668 57 y(Man)o(y)k(C)g
(en)o(vironmen)o(ts)g(do)h(not)f(supp)q(ort)h(the)f(Base)h(Do)q(cumen)o(t)f
(library)g(concepts)h(of)-1651 56 y(da)o(yligh)o(t)c(sa)o(vings)f(or)h
(time)g(zones.)22 b(Both)15 b(notions)g(are)h(de\014ned)h(geographicall)o
(y)e(and)h(p)q(oliti-)-1652 56 y(cally)l(,)c(and)h(th)o(us)f(ma)o(y)f
(require)h(more)g(kno)o(wledge)g(ab)q(out)g(the)g(real)g(w)o(orld)f(than)h
(an)g(implemen-)-1650 57 y(tation)j(can)g(supp)q(ort.)22 b(Hence)16 b(the)g
(Standard)f(sp)q(eci\014es)i(the)f(date)f(and)h(time)f(functions)g(suc)o
(h)-1650 56 y(that)i(informatio)o(n)f(ab)q(out)h(DST)g(and)g(time)f(zones)i
(is)e(not)h(required.)25 b(The)18 b(Base)f(Do)q(cumen)o(t)-1651 57 y
(function)j @F8 @sf(tzset)p @F14 @sf(,)f(whic)o(h)h(w)o(ould)f(require)g
(dealing)g(with)g(time)g(zones,)h(has)g(b)q(een)g(excluded)-1649 56 y
(altogether.)e(An)c(implemen)o(tatio)o(n)e(rep)q(orts)h(that)g(informati)o
(on)f(ab)q(out)h(DST)g(is)g(not)g(a)o(v)m(ailable)-1652 57 y(b)o(y)i
(setting)f(the)g @F8 @sf(tm)s 14 -2 z 14 x(isdst)g @F14 @sf(\014eld)h(in)f
(a)h(brok)o(en-do)o(wn)f(time)g(to)g(a)g(negativ)o(e)g(v)m(alue.)20 b(An)
15 b(imple-)-1651 56 y(men)o(tation)f(ma)o(y)f(return)i(a)f(n)o(ull)f(p)q
(oin)o(ter)h(from)g(a)g(call)g(to)f @F8 @sf(gmtime)h @F14 @sf(if)g
(informati)o(on)f(ab)q(out)h(the)-1650 57 y(displacemen)o(t)h(b)q(et)o(w)o
(een)h(Univ)o(ersal)e(Time)h(\()p @F11 @sf(n)o(\023)-22 b(ee)14 b @F14 @sf
(GMT\))g(and)h(lo)q(cal)f(time)h(is)g(not)f(a)o(v)m(ailable.)-1622 124 y 
@F6 @sf(4.12.2)56 b(Time)17 b(manipulation)h(functions)-909 87 y @F9 @sf
(4.12.2.1)52 b(The)18 b @F8 @sf(clock)f @F9 @sf(function)-658 87 y @F14 @sf
(The)c(function)e(is)h(in)o(tended)g(for)f(measuring)g(in)o(terv)m(als)g
(of)g(execution)h(time,)g(in)g(whatev)o(er)f(units)-1651 57 y(an)20 b
(implemen)o(tati)o(on)e(desires.)31 b(The)20 b(con\015icting)e(goals)g(of)h
(high)g(resolution,)o 19 x(long)f(in)o(terv)m(al)-1763 124 y
108 @eop1

109 @bop0
@F8 @sf
[<
007FF000FFF8007FF0000700000700000700000700000700000700FFFFF8FFFFF8FFFFF8F0
07007807003807003C07001E07000E070007070007870003870001C70001E70000E7000077
00007700003F00001F00>
. 21 28 -1 27 24] 52 @dc
@F14 @sf
[<
FFFFFC>
. 22 1 0 12 23] 123 @dc

109 @eop0

0 0 109 @bop1 112 50 a @F10 @sf(4.12.)34 b(D)o(A)l(TE)15 b(AND)g(TIME)g 
@F8 @sf(<time.h>)863 b @F14 @sf(109)-1651 145 y(capacit)o(y)l(,)21 b(and)g
(lo)o(w)e(timer)h(o)o(v)o(erhead)g(m)o(ust)g(b)q(e)h(balanced)f(carefully)g
(in)g(the)h(ligh)o(t)e(of)h(this)-1651 57 y(in)o(tended)c(use.)-262 125 y 
@F9 @sf(4.12.2.2)52 b(The)18 b @F8 @sf(difftime)e @F9 @sf(function)-729 
88 y @F8 @sf(difftime)10 b @F14 @sf(is)h(an)f(in)o(v)o(en)o(tion)g(of)h
(the)g(Committ)o(ee.)18 b(It)11 b(is)f(pro)o(vided)h(so)f(that)g(an)h
(implemen)o(tation)-1652 57 y(can)16 b(store)f(an)h(indication)e(of)i(the)f
(date/time)g(v)m(alue)h(in)f(the)h(most)f(e\016cien)o(t)g(format)g(p)q
(ossible)-1651 56 y(and)h(still)e(pro)o(vide)g(a)h(metho)q(d)h(of)e
(calculating)g(the)h(di\013erence)h(b)q(et)o(w)o(een)f(t)o(w)o(o)f(times.)
-1487 126 y @F9 @sf(4.12.2.3)52 b(The)18 b @F8 @sf(mktime)e @F9 @sf
(function)-681 88 y @F8 @sf(mktime)d @F14 @sf(w)o(as)g(in)o(v)o(en)o(ted)g
(b)o(y)g(the)h(Committ)o(ee)f(to)f(complete)i(the)f(set)g(of)g(time)g
(functions.)19 b(With)-1651 56 y(this)g(function)f(it)g(b)q(ecomes)i(p)q
(ossible)e(to)h(p)q(erform)f(p)q(ortable)g(calculations)g(in)o(v)o(olvi)o
(ng)g(clo)q(c)o(k)-1651 57 y(times)d(and)g(brok)o(en-do)o(wn)g(times.)-528 
57 y(The)h(rules)g(on)g(the)h(ranges)e(of)h(the)g(\014elds)h(within)e(the)h 
@F8 @sf(*timeptr)f @F14 @sf(record)h(are)g(crafted)g(to)-1651 56 y(p)q
(ermit)d(useful)h(arithmetic)e(to)g(b)q(e)i(done.)20 b(F)l(or)12 b
(instance,)h(here)h(is)f(a)g(paradigm)f(for)g(con)o(tin)o(uing)-1651 57 y
(some)j(lo)q(op)g(for)g(an)g(hour:)-260 99 y @F8 @sf(#include)23 b
(<time.h>)-407 56 y(struct)g(tm)96 b(when;)-431 57 y(time_t)167 b(now;)-407 
56 y(time_t)g(deadline;)-527 113 y(/*)24 b(...)f(*/)-215 56 y(now)h(=)g
(time\(0\);)-336 57 y(when)g(=)f(*localtime\(&now\);)-575 56 y
(when.tm_hour)g(+=)g(1;)72 b(/*)23 b(result)g(is)h(in)f(the)h(range)f
([1,24])g(*/)-1337 57 y(deadline)g(=)h(mktime\(&when\);)o -598 113 a
(printf\("Loop)f(will)g(finish:)g(%s\\n",)g(asctime\(&when\))o(\);)-1171 
56 y(while)h(\()f(difftime\(deadline)o(,tim)p(e\(0\))o(\))g(>)g(0)h(\))g
(whatever\(\);)-1434 98 y @F14 @sf(The)17 b(sp)q(eci\014cation)g(of)f 
@F8 @sf(mktime)f @F14 @sf(guaran)o(tees)h(that)g(the)h(addition)e(to)h
(the)h @F8 @sf(tm)s 14 -2 z 14 x(hour)f @F14 @sf(\014eld)h(pro-)-1651 57 y
(duces)22 b(the)f(correct)f(result)g(ev)o(en)h(when)h(the)e(new)h(v)m
(alue)g(of)g @F8 @sf(tm)s 14 -2 z 13 x(hour)g @F14 @sf(is)f(24,)h(i.e.,)g
(a)f(v)m(alue)-1650 56 y(outside)15 b(the)h(range)e(ev)o(er)i(returned)f
(b)o(y)g(a)g(library)f(function)h(in)g(a)g @F8 @sf(struct)23 b(tm)15 b 
@F14 @sf(ob)s(ject.)-1453 57 y(One)20 b(of)g(the)f(reasons)g(for)g(adding)h
(this)f(function)g(is)g(to)g(replace)h(the)g(capabilit)n(y)f(to)f(do)-1650 
57 y(suc)o(h)g(arithmetic)e(whic)o(h)g(is)h(lost)f(when)i(a)e(programmer)g
(cannot)h(dep)q(end)i(on)e @F8 @sf(time)s 14 -2 z 13 x(t)g @F14 @sf(b)q
(eing)-1650 56 y(an)f(in)o(tegral)d(m)o(ultiple)h(of)h(some)g(kno)o(wn)g
(time)f(unit.)-843 58 y(Sev)o(eral)k(readers)g(of)f(earlier)g(v)o(ersions)g
(of)h(this)f(Rationale)h(ha)o(v)o(e)f(p)q(oin)o(ted)h(out)g(apparen)o(t)
-1651 56 y(problems)h(in)f(this)g(example)g(if)g @F8 @sf(now)g @F14 @sf
(is)g(just)g(b)q(efore)h(a)f(transitio)o(n)g(in)o(to)f(or)h(out)g(of)g(da)o
(yligh)o(t)-1652 57 y(sa)o(vings)c(time.)19 b(Ho)o(w)o(ev)o(er,)13 b @F8 @sf
(when.tm)s 14 -2 z 14 x(isdst)g @F14 @sf(indicates)h(what)h(sort)e(of)h
(time)g(w)o(as)g(the)h(basis)f(of)-1651 56 y(the)19 b(calculation.)28 b
(Implemen)o(tors,)19 b(tak)o(e)f(heed.)30 b(If)19 b(this)f(\014eld)g(is)g
(set)h(to)e @F12 @sf(\000)p @F14 @sf(1)i(on)f(input,)h(one)-1650 57 y
(truly)d(am)o(biguous)f(case)h(in)o(v)o(olv)o(es)f(the)h(transitio)o(n)f
(out)h(of)f(da)o(yligh)o(t)g(sa)o(vings)g(time.)22 b(As)16 b(DST)-1651 56 y
(is)i(curren)o(tly)g(legislated)f(in)h(the)g(USA,)g(the)h(hour)f(0100{01)o
(59)f(o)q(ccurs)h(t)o(wice,)g(\014rst)g(as)g(DST)-1651 57 y(and)g(then)g
(as)f(standard)g(time.)27 b(Hence)18 b(an)f(unlab)q(eled)i(0130)d(on)h
(this)g(date)h(is)f(problematic.)-253 124 y @F15 @sf(RA)m(TIONALE)-1763 b
109 @eop1

110 @bop0

110 @eop0
0 0 110 @bop1 112 50 a @F14 @sf(110)1143 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1649 145 y @F14 @sf(An)17 b(implemen)o(tation)e(ma)o(y)g
(c)o(ho)q(ose)h(to)g(tak)o(e)f(this)h(as)g(DST)g(or)g(standard)g(time,)f
(marking)g(its)-1651 57 y(decision)k(in)f(the)g @F8 @sf(tm)s 14 -2 z 14 x
(isdst)g @F14 @sf(\014eld.)30 b(It)18 b(ma)o(y)g(also)f(legitimatel)o(y)g
(tak)o(e)h(this)g(as)g(in)o(v)m(alid)f(input)-1650 56 y(\(and)f(return)f 
@F8 @sf(\(time)s 14 -2 z 13 x(t\)\(-1\))p @F14 @sf(\).)-557 145 y @F9 @sf
(4.12.2.4)52 b(The)18 b @F8 @sf(time)f @F9 @sf(function)-634 95 y @F14 @sf
(Since)h(no)f(measure)h(is)e(giv)o(en)h(for)g(ho)o(w)f(precise)i(an)f
(implemen)o(tation')o(s)f @F11 @sf(b)n(est)h(appr)n(oximation)-1649 56 y 
@F14 @sf(to)d(the)g(curren)o(t)g(time)f(m)o(ust)g(b)q(e,)i(an)e(implemen)o
(tation)g(could)g(alw)o(a)o(ys)g(return)g(the)h(same)g(date,)-1651 57 y
(instead)h(of)g(a)g(more)g(honest)g @F12 @sf(\000)p @F14 @sf(1.)20 b(This)
15 b(is,)f(of)h(course,)g(not)f(the)i(in)o(ten)o(t.)-1251 147 y @F6 @sf
(4.12.3)56 b(Time)17 b(con)n(v)n(ersion)i(functions)-843 94 y @F9 @sf
(4.12.3.1)52 b(The)18 b @F8 @sf(asctime)e @F9 @sf(function)-705 94 y 
@F14 @sf(Although)c(the)f(name)h(of)f(this)h(function)f(suggests)g(a)g
(con\015ict)h(with)f(the)h(principle)f(of)h(remo)o(ving)-1652 57 y(ASCI)q
(I)h(dep)q(enden)q(cies)f(from)f(the)g(Standard,)h(the)f(name)h(has)f(b)q
(een)h(retained)f(due)h(to)f(prior)g(art.)-1652 56 y(F)l(or)i(the)g(same)g
(reason)f(of)h(existing)f(practice,)h(a)f(prop)q(osal)g(to)h(remo)o(v)o(e)f
(the)h(newline)g(c)o(haracter)-1651 57 y(from)g(the)h(string)e(format)g(w)o
(as)h(not)g(adopted.)19 b(Prop)q(osals)13 b(to)f(allo)o(w)g(for)h(the)g
(use)h(of)f(languages)-1651 56 y(other)g(than)f(English)g(in)g(naming)g(w)o
(eekda)o(ys)h(and)f(mon)o(ths)g(met)h(with)e(ob)s(jections)h(on)h(grounds)
-1651 57 y(of)j(prior)g(art,)f(and)h(on)g(grounds)g(that)g(a)g(truly)f(in)o
(ternational)f(v)o(ersion)i(of)g(this)f(function)h(w)o(as)-1651 56 y
(di\016cult)j(to)f(sp)q(ecify:)27 b(three-letter)18 b(abbreviation)g(of)g
(w)o(eekda)o(y)h(and)g(mon)o(th)f(names)h(is)f(not)-1651 56 y(univ)o
(ersally)e(con)o(v)o(en)o(tional,)f(for)i(instance.)24 b(The)18 b @F8 @sf
(strftime)d @F14 @sf(function)i(\()p @F12 @sf(x)p @F14 @sf(4.12.3.)o(5\))e
(pro)o(vides)-1651 57 y(appropriate)g(faciliti)o(es)f(for)h(lo)q(cale-sp)q
(eci\014c)g(date)g(and)h(time)e(strings.)-1218 145 y @F9 @sf(4.12.3.2)52 b
(The)18 b @F8 @sf(ctime)f @F9 @sf(function)-658 95 y(4.12.3.3)52 b(The)18 b 
@F8 @sf(gmtime)e @F9 @sf(function)-681 94 y @F14 @sf(This)21 b(function)f
(has)g(b)q(een)i(retained,)f(despite)g(ob)s(jections)e(that)h(GMT)f(|)i
(that)f(is,)h(Co)q(or-)-1651 56 y(dinated)d(Univ)o(ersal)e(Time)h(\(UTC\))f
(|)i(is)f(not)g(a)o(v)m(ailable)e(in)j(some)f(implemen)o(tati)o(ons,)f
(since)-1650 57 y(UTC)k(is)f(a)g(useful)h(and)g(widespread)f(standard)g
(represen)o(tation)g(of)g(time.)33 b(If)19 b(UTC)h(is)f(not)-1651 56 y(a)o
(v)m(ailable,)14 b(a)h(n)o(ull)g(p)q(oin)o(ter)f(ma)o(y)h(b)q(e)h
(returned.)-827 146 y @F9 @sf(4.12.3.4)52 b(The)18 b @F8 @sf(localtime)e 
@F9 @sf(function)-753 94 y(4.12.3.5)52 b(The)18 b @F8 @sf(strftime)e @F9 @sf
(function)-729 94 y @F8 @sf(strftime)d @F14 @sf(pro)o(vides)g(a)h(w)o(a)o
(y)e(of)i(formatti)o(ng)e(the)i(date)g(and)g(time)f(in)g(the)h
(appropriate)f(lo)q(cale-)-1651 57 y(sp)q(eci\014c)i(fashion,)e(using)g
(the)g @F8 @sf(%c)p @F14 @sf(,)g @F8 @sf(%x)p @F14 @sf(,)g(and)h @F8 @sf
(%X)f @F14 @sf(format)f(sp)q(eci\014ers.)20 b(More)13 b(generally)l(,)g
(it)f(allo)o(ws)-1652 56 y(the)k(programmer)e(to)g(tailor)f(whatev)o(er)i
(date)g(and)g(time)g(format)f(is)g(appropriate)h(for)f(a)h(giv)o(en)-1651 
57 y(application.)k(The)14 b(facilit)o(y)f(is)h(based)h(on)f(the)h(UNIX)g
(system)f @F8 @sf(date)g @F14 @sf(command.)19 b(See)c @F12 @sf(x)q @F14 @sf
(4.4)e(for)-1651 56 y(further)j(discussion)e(of)h(lo)q(cale)g(sp)q
(eci\014cation.)-732 61 y(F)l(or)i(the)h(\014eld)g(con)o(trolled)f(b)o(y)h 
@F8 @sf(%P)p @F14 @sf(,)f(an)g(implemen)o(tation)g(ma)o(y)g(wish)g(to)g
(pro)o(vide)h(sp)q(ecial)-1651 57 y(sym)o(b)q(ols)d(to)g(mark)f(no)q(on)h
(and)h(midnigh)o(t.)-852 124 y
110 @eop1

111 @bop0
@F10 @sf
[<
7C000000E2000000F1000000F080000070C000000040000000200000002000000010000000
1000000018000000380000003C0000003E0000003A00000039000000710000007080000070
80000070400000F0400000E0200000E0200000E0100000E0180001C0080001C00C0001E00E
000FF83F80>
. 25 29 0 19 24] 121 @dc
@F4 @sf
[<
0FC00000003FE00000007C78000000FE3C000000FE1E000000FE0E000000FE0F0000007C07
0000003807800000000380000000038000000001C000000001C000000003E000000003E000
000007F000000007F00000000FF80000000FF80000000FF80000001FDC0000001FDC000000
3FDE0000003F8E0000007F8F0000007F070000007F07000000FE03800000FE03800001FC01
C00001FC01C00003FC01E00003F800E00007F800F00007F000700007F0007000FFFE03FF80
FFFE03FF80FFFE03FF80>
. 33 39 -1 26 36] 121 @dc
@F5 @sf
[<
00FE0003FFC00FFFE01F01F03C0070780070700000700000E00000E00000E00000E00000E0
00007000007000007800003C00C01F01E00FFFE003FFC000FF80>
. 20 21 -3 20 26] 99 @dc
[<
1E00003F80007FC00071E00078E000307000007000007000003800003800003800003C0000
3C00003C00006E0000660000E60000E70000E70001C70001C38003C3800383800381C00781
C00701C00700E00E00E00E00E07FC3FCFFC7FE7FC3FC>
. 23 32 -1 20 26] 121 @dc
[<
FFE000FFE000FFE0000E00000E00000E00000E00000E00000E00000E00000E00000E3E000E
FF800FFFC00FC1E00F80F00F00780F00380E001C0E001C0E001C0E001C0E001C0E001C0E00
1C0E00380F00380F80700FC1F0FFFFE0FEFF80FE3E00>
. 22 32 -1 20 26] 112 @dc
@F5 @sf
[<
01FF0007FFC01FFFF03E00F878003C70001CE0000EE0000EE0000EE0000E70001C78007C3F
FFF81FFFE01FFF801C000038000038000039F8001FFE001FFF001E07801C03803801C03801
C03801C03801C03801C01C03801E078C0FFFFE07FFFE01F87C>
. 23 33 -1 20 26] 103 @dc
@F6 @sf
[<
0003FF00C0001FFFC3C0007F80E7C001FC003FC003F0001FC007E0001FC00FC0001FC01F80
001FC03F00001FC03F00001FC07F00001FC07F00001FC07E000FFFFCFE000FFFFCFE000000
00FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007E000000C07E
000000C07F000000C03F000001C03F000001C01F800003C00FC00003C007C00007C003F000
0FC001F8003FC0007F00F1C0001FFFC0C00003FE0040>
. 38 34 -3 33 44] 71 @dc
@F5 @sf
[<
063E000EFF800FFFC00FC1E00F80F00F00780F00380E001C0E001C0E001C0E001C0E001C0E
001C0E001C0E00380F00380F80700FC1F00FFFE00EFF800E3E000E00000E00000E00000E00
000E00000E0000FE0000FE0000FE0000>
. 22 30 -1 29 26] 98 @dc

111 @eop0

0 0 111 @bop1 112 50 a @F10 @sf(4.13.)34 b(F)l(uture)16 b(library)d
(directions)965 b @F14 @sf(111)-1651 145 y @F4 @sf(4.13)70 b(F)-6 b(uture)
24 b(library)g(directions)-933 103 y @F6 @sf(4.13.1)56 b(Errors)18 b @F5 @sf
(<errno)o(.h>)o -606 88 a @F6 @sf(4.13.2)56 b(Character)19 b(handling)f 
@F5 @sf(<ctype)o(.h>)o -924 87 a @F6 @sf(4.13.3)56 b(Lo)r(calizati)o(on)
18 b @F5 @sf(<loca)o(le.)o(h>)o -771 88 a @F6 @sf(4.13.4)56 b(Mathematics)
18 b @F5 @sf(<math)o(.h>)o -742 87 a @F6 @sf(4.13.5)56 b(Signal)18 b
(handling)h @F5 @sf(<sign)o(al.)o(h>)-855 88 y @F6 @sf(4.13.6)56 b
(Input/output)19 b @F5 @sf(<stdi)o(o.)o(h>)-780 87 y @F6 @sf(4.13.7)56 b
(General)17 b(utilitie)o(s)h @F5 @sf(<stdl)o(ib.)o(h>)-872 88 y @F6 @sf
(4.13.8)56 b(String)18 b(handling)h @F5 @sf(<stri)o(ng)o(.h>)o 543 1842 a 
@F15 @sf(RA)m(TIONALE)-1763 b
111 @eop1

112 @bop0

112 @eop0
0 0 112 @bop1 112 50 a @F14 @sf(112)1143 b @F10 @sf(Section)15 b(4.)35 b
(LIBRAR)q -4 x(Y)-1761 2703 y
112 @eop1

113 @bop0
@F1 @sf
[<
000FFC0000007FFFC00001FFFFF00003FFFFFC0007F00FFE000FC003FF001F0000FF803E00
00FFC03C00007FE07F00007FF07FC0007FF0FFE0003FF8FFE0003FF8FFF0003FF8FFF0003F
FCFFF0003FFCFFE0003FFC7FE0003FFC3FC0003FFC1F80003FFC0600003FFC0000003FFC00
00003FFC0000003FF80000003FF80000003FF80000003FF00700007FF00F00007FE00F8000
7FC00FC000FF800FF000FF000FFE03FE000FBFFFF8000F8FFFE0000F81FF00000F80000000
0F800000000F800000000F800000000F800000000F800000000F800000000F800000000FFF
F800000FFFFE00000FFFFF80000FFFFFE0000FFFFFF0000FFFFFF8000FFFFFFC000FFFFFFE
000FFFFFFF000FFFFFFF800FF8007FC00F800007C004000000C0>
. 38 57 -5 55 50] 53 @dc
@F2 @sf
[<
FFFFFFFFF800000000FFFFFFFFF800000000FFFFFFFFF800000000FFFFFFFFF800000000FF
FFFFFFF800000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001F
FFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFF
C00000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC0
0000000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC000
00000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC00000
000000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFC0000000
0000001FFFC00000000000001FFFC00000000000001FFFC00000000000001FFFFFFFFFF000
00001FFFFFFFFFFE0000001FFFFFFFFFFFC000001FFFFFFFFFFFF000001FFF80000FFFF800
001FFF800001FFFE00001FFF8000007FFF00001FFF8000003FFF80001FFF8000001FFF8000
1FFF8000000FFFC0001FFF8000000FFFE0001FFF8000000FFFE0001FFF80000007FFF0001F
FF80000007FFF0001FFF80000007FFF0001FFF80000007FFF8001FFF80000007FFF8001FFF
80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80000007FFF8001FFF80
000007FFF8001FFF80000007FFF8001FFF80000007FFF0001FFF80000007FFF0001FFF8000
0007FFF0001FFF8000000FFFE0001FFF8000000FFFE0001FFF8000000FFFC0001FFF800000
1FFFC0001FFF8000003FFF80001FFF8000007FFF00001FFF800001FFFE00001FFF80000FFF
FC00FFFFFFFFFFFFFFF000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFF0000FFFFFFFFFFFFFC00
00FFFFFFFFFFFF800000>
. 69 71 -4 70 81] 80 @dc
[<
E00003FFC00000F0007FFFF80000F803FFFFFF0000FC0FFFFFFF8000FE3FFFFFFFE000FFFF
FC007FF000FFFF80000FF800FFFE000007FC00FFF8000003FE00FFE0000001FE00FFC00000
00FF00FF80000000FF80FF00000000FF80FE000000007F80FE000000007FC0FC000000007F
C0FC000000007FC0FC000000007FE0F8000000007FE0F8000000007FE0F8000000007FE0F8
00000000FFE0F800000000FFE07800000001FFE00000000003FFE00000000007FFE0000000
000FFFE0000000001FFFC000000000FFFFC00000000FFFFFC0000001FFFFFF8000003FFFFF
FF800001FFFFFFFF00000FFFFFFFFF00003FFFFFFFFE00007FFFFFFFFE0000FFFFFFFFFC00
03FFFFFFFFF80007FFFFFFFFF00007FFFFFFFFE0000FFFFFFFFFC0001FFFFFFFFF00001FFF
FFFFFC00003FFFFFFFF000003FFFFFFF0000007FFFFFE00000007FFFFE000000007FFFC000
000000FFFF0000000000FFFC0000001F00FFF80000001F00FFF00000001F00FFE00000001F
00FFE00000003F00FFC00000003F00FFC00000003F00FFC00000003F007FC00000007F007F
C00000007F007FC0000000FF003FC0000001FF003FE0000001FF001FE0000003FF001FF000
0007FF000FF000001FFF0007FC00003FFF0007FE0000FFFF0003FFC00FFEFF0000FFFFFFFC
7F00007FFFFFF03F00001FFFFFC01F000007FFFF000F0000007FF0000700>
. 51 73 -7 71 66] 83 @dc

113 @eop0

0 0 113 @bop1 112 506 a @F1 @sf(Section)32 b(5)-398 208 y @F2 @sf
(APPENDICES)-789 222 y @F14 @sf(Most)21 b(of)h(the)f(material)f(in)i(the)g
(app)q(endices)h(is)e(not)g(new.)40 b(It)22 b(is)f(simply)g(a)h(summary)f
(of)-1651 57 y(information)14 b(in)h(the)g(Standard,)g(collated)f(for)h
(the)g(con)o(v)o(enience)h(of)e(users)i(of)e(the)i(Standard.)-1574 56 y
(New)i(\(advisory\))e(information)g(is)i(found)g(in)g(App)q(endix)h(E)f
(\(Common)e(W)l(arnings\))h(and)-1650 57 y(in)e(App)q(endix)h(F.5)e
(\(Common)f(Extensions\).)19 b(The)c(section)g(on)f(common)h(extensions)f
(is)h(pro-)-1651 56 y(vided)g(in)f(part)g(to)g(giv)o(e)g(programmers)f(ev)o
(en)h(further)h(informati)o(on)e(whic)o(h)h(ma)o(y)g(b)q(e)h(useful)g(in)
-1651 57 y(a)o(v)o(oiding)f(features)h(of)g(lo)q(cal)f(dialects)g(of)h(C.)
18 1534 y(113)-972 b
113 @eop1

114 @bop0

114 @eop0
0 0 114 @bop1 112 50 a @F14 @sf(114)1051 b @F10 @sf(Section)15 b(5.)34 b
(APPENDICES)-1762 2703 y
114 @eop1

115 @bop0
@F2 @sf
[<
00001FF803FFFF800001FFFF03FFFF800007FFFFC3FFFF80001FFFFFF3FFFF80007FF807FB
FFFF8000FFE000FFFFE00001FFC0003FFFC00003FF00001FFFC00007FF00000FFFC0000FFE
000007FFC0001FFC000003FFC0001FFC000003FFC0003FFC000003FFC0003FFC000003FFC0
003FF8000003FFC0007FF8000003FFC0007FF8000003FFC0007FF8000003FFC000FFF80000
03FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FF
F8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FF
C0007FF8000003FFC0007FF8000003FFC0007FF8000003FFC0003FFC000003FFC0003FFC00
0003FFC0001FFC000003FFC0001FFC000003FFC0000FFE000003FFC0000FFE000003FFC000
07FF000007FFC00003FF80000FFFC00001FFC0001FFFC00000FFF0007FFFC000007FFC03FF
FFC000001FFFFFF9FFC0000007FFFFE1FFC0000000FFFF81FFC00000000FFC01FFC0000000
000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0
000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000000
01FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000
00000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FF
C0000000000003FFC00000000000FFFFC00000000000FFFFC00000000000FFFFC000000000
00FFFFC00000000000FFFFC00000000000007FC000>
. 57 72 -4 71 66] 100 @dc
[<
FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003F
FFFFC000FF800007FFC000003F800007FF8000001FC0000FFF0000000FE0001FFF00000007
F0003FFE00000003F0007FFC00000001F8007FF800000001FC00FFF000000000FE01FFE000
0000007F03FFE0000000003F87FFC0000000001FCFFF80000000000FEFFF000000000007FF
FE000000000003FFFE000000000003FFFC000000000001FFF8000000000001FFF000000000
0001FFE0000000000003FFC0000000000007FFC000000000000FFFC000000000001FFFE000
000000003FFFF000000000003FFFF800000000007FF9FC0000000000FFF8FE0000000001FF
F07F0000000003FFE03F8000000003FFC01F8000000007FF800FC00000000FFF0007E00000
001FFF0007F00000003FFE0003F80000007FFC0001FC0000007FF80001FF00007FFFFF801F
FFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF007FFFFF801FFFFF00>
. 58 46 -2 45 63] 120 @dc

115 @eop0

0 0 115 @bop1 112 433 a @F2 @sf(Index)-294 207 y @F11 @sf(1984)18 b
(/usr/gr)n(oup)f(Standar)n(d)p @F14 @sf(,)e(5,)f(71)-643 110 y @F8 @sf
(abort)h @F14 @sf(function,)g(76,)f(102)-468 57 y @F8 @sf(abs)h @F14 @sf
(function,)g(104)-347 58 y(abstract)g(mac)o(hine,)f(12,)h(13)-488 57 y
(Ada)h(programming)d(language,)h(13)-626 57 y(agreemen)o(t)h(p)q(oin)o(t,)f
(12,)h(38)-470 57 y(aliasing,)f(39)-224 57 y(alignmen)o(t,)g(5)-247 57 y 
@F8 @sf(alloca)h @F14 @sf(function,)f(nonstandard,)h(102)-694 57 y(ANSI)d
(X3.64)e(c)o(haracter)h(set)f(standard,)h(30)-753 57 y(ANSI)27 b(X3L2)f
(Committee)f(\(Co)q(des)h(and)-586 57 y(Character)14 b(Sets\),)g(16)-551 
57 y @F8 @sf(argc)26 b @F14 @sf(and)h @F8 @sf(argv)f @F14 @sf(parameters)g
(to)f @F8 @sf(main)-586 57 y @F14 @sf(function,)14 b(11)-403 57 y(argumen)o
(t)h(promotion,)e(41)-482 57 y @F11 @sf(as)21 b(if)28 b @F14 @sf
(principle,)20 b(9,)g(10,)g(13,)g(36,)f(39,)h(60,)-587 56 y(91,)14 b(92)
-286 57 y(ASCI)q(I)19 b(c)o(haracter)e(co)q(de,)i(13,)e(14,)g(16,)h(30,)
-587 57 y(76,)c(78,)g(110)-382 57 y @F8 @sf(asctime)h @F14 @sf(function,)f
(110)-442 57 y @F8 @sf(asm)h @F14 @sf(k)o(eyw)o(ord,)f(nonstandard,)h(19)
-601 57 y @F8 @sf(assert)g @F14 @sf(macro,)f(76)-354 57 y @F8 @sf
(<assert.h>)g @F14 @sf(header,)h(76)-459 57 y(asso)q(ciativit)n(y)l(,)f
(38)-316 58 y @F8 @sf(atan2)h @F14 @sf(function,)g(82)-372 57 y @F8 @sf
(atexit)g @F14 @sf(function,)f(11,)h(86,)f(103)-565 57 y @F8 @sf(atof)h 
@F14 @sf(function,)g(100)-371 57 y @F8 @sf(atoi)g @F14 @sf(function,)g
(100)-371 57 y @F8 @sf(atol)g @F14 @sf(function,)g(100)-371 110 y(Bac)o
(kus-Naur)h(F)l(orm,)e(19)-450 57 y(b)q(enign)i(rede\014nition,)f(64)-447 
57 y(binary)g(n)o(umeration)g(systems,)f(27,)g(43)-685 57 y(bit,)h(5)-107 
58 y(bit)g(\014elds,)g(51)652 -1989 y @F8 @sf(break)g @F14 @sf(k)o(eyw)o
(ord,)f(60)-373 58 y(b)o(yte,)h(5,)f(44)-210 109 y(C++)i(programming)d
(language,)h(54,)h(55)-721 57 y @F8 @sf(calloc)f @F14 @sf(function,)h(102)
-418 57 y(case)g(ranges,)g(59)-297 57 y @F8 @sf(cfree)g @F14 @sf
(function,)f(102)-394 57 y @F8 @sf(clock)h @F14 @sf(function,)f(108)-394 
58 y @F8 @sf(clock)s 14 -2 z 14 x(t)h @F14 @sf(t)o(yp)q(e,)g(108)-360 57 y
(co)q(deset,)g(14,)g(78)-293 57 y(collating)e(sequence,)j(14)-431 57 y
(commen)o(ts,)e(33)-272 57 y(common)h(extension,)g(19,)f(23,)g(31,)g(113)
-684 57 y(common)h(storage,)f(23)-398 57 y(compatible)g(t)o(yp)q(es,)h
(28,)f(54)-484 57 y(compliance,)h(6)-271 57 y(comp)q(osite)g(t)o(yp)q(e,)g
(28,)f(54)-448 58 y(concatenation,)g(31)-349 57 y(conforming)208 b
(implemen)o(tation,)-588 56 y(freestanding,)14 b(7)-458 57 y(conforming)g
(implemen)o(tation,)f(hosted,)i(7)-753 57 y(conforming)f(program,)g(3)-454 
57 y @F8 @sf(const)h @F14 @sf(k)o(eyw)o(ord,)f(19)-373 58 y(constan)o(t)g
(expressions,)h(49)-479 57 y(constrain)o(t)f(error,)g(43)-384 57 y @F8 @sf
(continue)g @F14 @sf(k)o(eyw)o(ord,)g(60)-444 57 y(con)o(trol)g(c)o
(haracter,)g(77)-410 57 y(con)o(v)o(ersions,)g(34)-298 57 y
(cross-compilatio)o(n,)g(9,)g(28,)h(50,)f(74)-615 57 y @F8 @sf(<ctype.h>)g 
@F14 @sf(header,)h(76)-435 57 y(curses)23 b(screen-handling)g(pac)o(k)m
(age,)h(non-)-586 57 y(standard,)15 b(71)-415 109 y(data)g(abstractio)o
(n,)f(43)-397 57 y 14 -2 z 17 x 14 -2 z 14 x @F8 @sf(DATE)s 14 -2 z 17 x 
14 -2 z 29 x @F14 @sf(macro,)h(68)-375 58 y(DEC)g(PDP-11,)f(2)-429 124 y
(115)-972 b
115 @eop1

116 @bop0
@F10 @sf
[<
FFE01FFE001F8007E000070003E000010003C000008007C00000C007800000400F80000020
0F000000101F000000081E0000000C1E000000043C000000023C000000017C00000000F800
000000F800000000F000000001F000000001F000000003E800000003C400000007C6000000
07820000000F810000000F008000000F004000001E002000001E003000003E003800007F00
7E0003FFC0FFC0>
. 34 31 -1 30 34] 88 @dc

116 @eop0

0 0 116 @bop1 112 50 a @F14 @sf(116)1431 b @F10 @sf(INDEX)-1650 145 y 
@F14 @sf(decimal-p)q(oin)o(t)15 b(c)o(haracter,)f(71)-543 57 y
(declarations,)g(50)-312 57 y @F8 @sf(defined)25 b @F14 @sf(prepro)q
(cessing)h(op)q(erator,)h(49,)-587 56 y(62)-213 57 y(diagnostics,)14 b(3,)g
(10,)h(35,)f(65,)g(68)-562 57 y @F8 @sf(difftime)h @F14 @sf(function,)f
(109)-466 57 y @F8 @sf(div)h @F14 @sf(function,)g(45,)f(104)-420 57 y
(domain)h(error,)f(81)-332 107 y(EBCDIC)i(c)o(haracter)e(set,)h(16,)f(30,)g
(78)-670 57 y @F8 @sf(#elif)h @F14 @sf(prepro)q(cessing)g(directiv)o(e,)f
(62)-660 57 y @F8 @sf(#else)h @F14 @sf(prepro)q(cessing)g(directiv)o(e,)f
(62)-660 57 y @F8 @sf(#endif)h @F14 @sf(prepro)q(cessing)g(directiv)o(e,)f
(62)-684 57 y @F8 @sf(entry)h @F14 @sf(k)o(eyw)o(ord,)f(nonstandard,)h(19)
-649 57 y @F8 @sf(enum)g @F14 @sf(k)o(eyw)o(ord,)f(19,)g(51)-422 56 y(en)o
(umerations,)h(27,)f(29,)g(50)-485 57 y @F8 @sf(EOF)h @F14 @sf(macro,)f
(77)-282 57 y @F8 @sf(errno)h @F14 @sf(macro,)f(73,)g(81,)h(100)-500 57 y 
@F8 @sf(<errno.h>)f @F14 @sf(header,)i(73)-436 57 y(erroneous)g(program,)d
(10)-446 57 y @F8 @sf(#error)i @F14 @sf(prepro)q(cessing)g(directiv)o(e,)f
(68)-684 57 y(executable)i(program,)e(9)-442 57 y @F8 @sf(exit)h @F14 @sf
(function,)g(11,)f(103,)g(104)-540 57 y(expression,)h(am)o(biguous,)f(48)
-517 57 y(expression,)h(sequenced,)h(48)-504 57 y(expression,)f
(unsequenced)q(,)h(48)-555 57 y(expressions,)f(38)-296 57 y(external)g
(iden)o(ti\014ers,)f(20)-443 57 y(external)h(link)m(age,)g(9)-365 106 y 
@F8 @sf(fclose)g @F14 @sf(function,)f(88)-395 57 y @F8 @sf(fflush)h @F14 @sf
(function,)f(93,)h(94)-469 57 y @F8 @sf(fgetc)g @F14 @sf(function,)g(91,)f
(97)-445 57 y @F8 @sf(fgetpos)h @F14 @sf(function,)f(99)-419 57 y @F8 @sf
(fgets)h @F14 @sf(function,)g(97)-369 57 y 14 -2 z 18 x 14 -2 z 14 x @F8 @sf
(FILE)s 14 -2 z 16 x 14 -2 z 30 x @F14 @sf(macro,)f(68)-375 57 y(\014le)i
(p)q(oin)o(ter,)e(88)-289 57 y(\014le)i(p)q(osition)e(indicator,)g(91,)g
(99)-571 57 y @F8 @sf(FILE)h @F14 @sf(t)o(yp)q(e,)g(97)-272 57 y @F8 @sf
(FILENAME)s 14 -2 z 14 x(MAX)f @F14 @sf(macro,)g(89)-490 57 y @F8 @sf
(<float.h>)g @F14 @sf(header,)i(18,)e(73,)g(74)-582 57 y @F8 @sf(fmod)h 
@F14 @sf(function,)g(45,)f(84)-421 57 y @F8 @sf(fopen)h @F14 @sf
(function,)g(88,)f(93)-445 57 y @F8 @sf(fortran)h @F14 @sf(k)o(eyw)o(ord,)f
(nonstandard,)g(19)202 -2434 y(F)o(OR)l(TRAN)37 b(programming)e(language,)
-588 57 y(23,)14 b(54,)h(104)-382 56 y(F)o(OR)l(TRAN-to-C)25 b(translati)o
(on,)g(18,)g(39,)-587 56 y(81)-212 57 y @F8 @sf(fputc)15 b @F14 @sf
(function,)f(91)-371 56 y @F8 @sf(fread)h @F14 @sf(function,)f(88,)g(98)
-444 57 y @F8 @sf(frexp)h @F14 @sf(function,)f(83)-371 56 y @F8 @sf
(fscanf)g @F14 @sf(function,)h(95)-395 57 y @F8 @sf(fseek)g @F14 @sf
(function,)f(88,)g(91,)h(94,)f(99)-591 56 y @F8 @sf(fsetpos)g @F14 @sf
(function,)h(94)-419 57 y @F8 @sf(ftell)g @F14 @sf(function,)f(91)-371 56 y
(full)h(expression,)f(12)-357 57 y(function)h(de\014nition,)g(60)-439 56 y
(function)g(protot)o(yp)q(es,)f(55)-463 56 y(function,)h(pure,)g(48)-353 
57 y(future)g(directions,)f(69)-401 56 y @F8 @sf(fwrite)g @F14 @sf
(function,)h(88)-395 96 y @F8 @sf(getc)g @F14 @sf(function,)f(75,)h(97)-421 
57 y @F8 @sf(getenv)f @F14 @sf(function,)h(103)-418 56 y @F8 @sf(gmtime)f 
@F14 @sf(function,)h(108,)f(110)-514 57 y @F8 @sf(goto)h @F14 @sf(k)o(eyw)o
(ord,)f(58)-349 56 y(Gra)o(y)g(co)q(de,)i(27)-278 57 y(Green)o(wic)o(h)f
(Mean)g(Time)f(\(GMT\),)g(110)-709 56 y(grouping,)g(38)-248 96 y(header)i
(names,)e(33)-344 57 y(hosted)h(en)o(vironmen)o(t,)f(11)-464 56 y @F8 @sf
(HUGE)s 14 -2 z 14 x(VAL)g @F14 @sf(macro,)h(81)-395 96 y(IEEE)31 b(1003)f
(p)q(ortable)g(op)q(erating)g(sys-)-586 57 y(tem)16 b(in)o(terface)g
(standardization)-588 56 y(committee,)e(5,)h(87,)f(88)-571 57 y(IEEE)i
(754)e(\015oating)h(p)q(oin)o(t)g(standard,)f(18,)-587 56 y(81)-212 56 y
(IEEE)e(P854)f(\015oating)f(p)q(oin)o(t)h(standardiza-)-587 57 y(tion)i
(committee,)f(74,)h(81,)g(83,)g(84)-753 56 y @F8 @sf(#if)i @F14 @sf
(prepro)q(cessing)g(directiv)o(e,)f(9,)h(50)-663 57 y(implemen)o
(tation-de\014ned)32 b(b)q(eha)o(vior,)j(6,)-587 56 y(30,)14 b(51,)h(81,)f
(83,)g(87,)g(90,)h(92)-652 57 y @F8 @sf(#include)f @F14 @sf(prepro)q
(cessing)h(directiv)o(e,)g(63)-732 56 y(in\014nit)o(y)l(,)g(95)-212 57 y
(in)o(tegral)f(constan)o(t)g(expression,)h(50)-627 56 y(in)o(tegral)f
(promotions,)o 14 x(34,)g(55)-535 57 y(in)o(teractiv)o(e)g(devices,)h(13)
-1448 124 y
116 @eop1

117 @bop0

117 @eop0
0 0 117 @bop1 112 50 a @F10 @sf(INDEX)1432 b @F14 @sf(117)-1651 145 y(in)o
(terlea)o(ving,)13 b(38)-305 57 y(In)o(ternational)18 b(Standards)g
(Organization)-587 56 y(\(ISO\),)d(14)-353 57 y(in)o(ternationaliza)o(tio)o
(n,)f(110)-485 56 y @F8 @sf(isascii)h @F14 @sf(function,)f(76)-419 57 y
(ISO)j(646,)d(14)-235 56 y @F8 @sf(isspace)h @F14 @sf(function,)f(77,)h
(96)-493 100 y @F8 @sf(jmp)s 14 -2 z 14 x(buf)g @F14 @sf(t)o(yp)q(e,)g(84)
-337 99 y(Kernighan,)g(Brian,)g(5)-397 57 y @F8 @sf(kill)g @F14 @sf
(function,)g(87)-348 99 y(lab)q(els,)g(58)-187 57 y @F8 @sf(ldexp)g @F14 @sf
(function,)g(83)-372 56 y @F8 @sf(ldiv)g @F14 @sf(function,)g(45,)f(104)
-444 57 y(lexical)h(elemen)o(ts,)f(19)-385 57 y(libraries,)g(9)-211 56 y 
@F8 @sf(<limits.h>)g @F14 @sf(header,)h(17,)g(73)-530 57 y 14 -2 z 18 x 
14 -2 z 14 x @F8 @sf(LINE)s 14 -2 z 16 x 14 -2 z 30 x @F14 @sf(macro,)f
(68)-375 56 y(link)m(age,)h(21,)f(23)-285 57 y(link)o(ed,)h(9)-170 56 y
(lo)q(cale,)g(77)-187 57 y @F8 @sf(localeconv)f @F14 @sf(function,)h(80)
-491 56 y @F8 @sf(<locale.h>)f @F14 @sf(header,)h(78)-459 57 y(lo)q
(cale-sp)q(eci\014c)c(b)q(eha)o(vior,)g(77,)g(79,)f(80,)h(107)-754 56 y 
@F8 @sf(log)k @F14 @sf(function,)g(83)-324 57 y @F8 @sf(long)24 b(double)
14 b @F14 @sf(t)o(yp)q(e,)h(27,)f(28,)g(51,)h(95)-659 57 y @F8 @sf
(longjmp)g @F14 @sf(function,)f(17,)h(85)-493 56 y(lv)m(alue,)g(6,)g(36,)f
(39,)g(42,)g(43,)h(49)-533 57 y(lv)m(alue,)g(mo)q(di\014able,)g(36)-423 
99 y(mac)o(hine)21 b(generation)f(of)g(C,)g(10,)h(50,)g(54,)-587 57 y(58)
-213 56 y @F8 @sf(main)15 b @F14 @sf(function,)g(11)-348 57 y(manifest)g
(constan)o(t,)f(81)-426 56 y(man)o(tissa,)g(18)-248 57 y @F8 @sf(matherr)h 
@F14 @sf(function,)f(nonstandard,)h(81)-695 56 y @F8 @sf(<math.h>)g @F14 @sf
(header,)g(80,)f(104)-508 57 y @F8 @sf(memchr)h @F14 @sf(function,)f(105)
-418 56 y @F8 @sf(memcmp)h @F14 @sf(function,)f(105)-418 57 y @F8 @sf
(memcpy)h @F14 @sf(function,)f(105,)g(106)-514 56 y @F8 @sf(memmove)h 
@F14 @sf(function,)f(106)-442 57 y @F8 @sf(memset)h @F14 @sf(function,)f
(105)-418 57 y @F8 @sf(mktime)h @F14 @sf(function,)f(109)480 -2434 y @F8 @sf
(modf)h @F14 @sf(function,)f(83)-347 57 y(m)o(ultib)o(yte)g(c)o
(haracters,)g(6,)g(15,)h(105)-628 56 y(m)o(ulti-pro)q(cessing,)f(87)-398 
102 y(name)h(space,)g(21)-301 57 y(new-line,)g(16)-238 56 y(not-a-n)o(um)o
(b)q(er,)g(95)-343 57 y @F8 @sf(NULL)g @F14 @sf(macro,)f(47,)g(74)-379 57 y
(n)o(ull)h(p)q(oin)o(ter)f(constan)o(t,)g(74)-488 101 y(ob)s(ject,)g(5,)h
(6)-224 57 y(obsolescen)o(t)g(features,)f(20,)g(50,)h(69)-613 57 y @F8 @sf
(offsetof)f @F14 @sf(macro,)g(55,)h(74)-475 56 y(ones-complemen)o(t)g
(arithmetic,)f(18)-634 57 y @F8 @sf(onexit)g @F14 @sf(function,)h(103)-418 
56 y(optimizatio)o(n,)f(51)-324 57 y(order)h(of)g(ev)m(aluation,)f(38)-448 
102 y(P)o(ascal)g(programming)g(language,)g(27,)g(59)-743 56 y @F8 @sf
(perror)g @F14 @sf(function,)h(100,)f(108)-514 57 y(phases)i(of)e
(translation,)o 14 x(9,)h(10)-536 57 y(p)q(oin)o(ter)g(subtraction,)f(46)
-456 56 y(p)q(oin)o(ters,)g(in)o(v)m(alid,)g(37)-392 57 y(POSIX)k(p)q
(ortable)f(op)q(erating)f(system)g(in-)-586 56 y(terface)f(standard,)f
(IEEE,)h(5,)g(87)-750 57 y @F8 @sf(#pragma)f @F14 @sf(prepro)q(cessing)i
(directiv)o(e,)e(68)-708 57 y(precedence,)j(op)q(erator,)d(38)-485 56 y
(prepro)q(cessing,)f(9,)f(10,)f(19,)h(31,)g(32,)g(33,)f(61,)-587 57 y(74,)j
(75)-285 57 y(primary)g(expression,)h(40)-451 56 y @F8 @sf(printf)f @F14 @sf
(function,)h(27,)f(75,)h(87)-542 57 y(prin)o(ting)f(c)o(haracter,)g(77)-430 
57 y(program)g(startup,)g(11,)h(50)-474 56 y(protot)o(yp)q(e,)f(function,)h
(60,)f(69)-531 57 y @F8 @sf(ptrdiff)s 14 -2 z 13 x(t)h @F14 @sf(t)o(yp)q
(e,)g(44,)f(46,)h(74)-531 56 y @F8 @sf(putc)g @F14 @sf(function,)f(75,)h
(97)-421 57 y @F8 @sf(puts)g @F14 @sf(function,)f(97)-347 102 y(qualit)o
(y)g(of)h(implemen)o(tatio)o(n,)f(11)-588 56 y(quiet)h(c)o(hange,)g(3,)f
(15,)h(19,)f(21,)g(22,)g(29,)g(30,)-587 57 y(32,)j(35,)f(36,)h(46,)f(50,)g
(52,)h(58,)f(59,)-587 56 y(61,)e(66,)h(102)-382 102 y @F8 @sf(raise)g 
@F14 @sf(function,)f(87)-371 57 y @F8 @sf(rand)h @F14 @sf(function,)f(101)
131 124 y @F15 @sf(RA)m(TIONALE)-1763 b
117 @eop1

118 @bop0

118 @eop0
0 0 118 @bop1 112 50 a @F14 @sf(118)1431 b @F10 @sf(INDEX)-1650 145 y 
@F14 @sf(range)15 b(error,)f(82)-294 57 y @F8 @sf(register)h @F14 @sf(k)o
(eyw)o(ord,)f(51)-445 57 y @F8 @sf(remove)h @F14 @sf(function,)f(92)-395 
57 y @F8 @sf(rename)h @F14 @sf(function,)f(92)-395 56 y(rep)q(ertoire,)h
(c)o(haracter)f(set,)h(14)-550 57 y(rewind,)g(94,)f(99)-281 57 y(Ritc)o
(hie,)h(Dennis)g(M.,)f(5,)h(23)-499 104 y(safe)g(ev)m(aluation,)f(75)-367 
57 y(same)h(t)o(yp)q(e,)g(28)-275 57 y @F8 @sf(scanf)g @F14 @sf(function,)g
(75,)f(87)-445 57 y(scop)q(e,)i(lexical,)e(21)-335 57 y(sequence)j(p)q
(oin)o(ts,)d(12,)g(38)-457 56 y @F8 @sf(setbuf)h @F14 @sf(function,)f(91,)h
(94)-469 57 y @F8 @sf(setjmp)g @F14 @sf(function,)f(85)-395 57 y @F8 @sf
(<setjmp.h>)g @F14 @sf(header,)h(84)-459 57 y @F8 @sf(setlocale)f @F14 @sf
(function,)h(77,)f(80)-540 57 y @F8 @sf(setvbuf)h @F14 @sf(function,)f
(89,)h(91,)f(94)-566 57 y(side)i(e\013ect,)e(48)-270 56 y @F8 @sf(SIGABRT)h 
@F14 @sf(macro,)f(102)-401 57 y @F8 @sf(sig)s 14 -2 z 14 x(atomic)s 14 -2 z 
14 x(t)h @F14 @sf(t)o(yp)q(e,)g(17)-450 57 y @F8 @sf(SIGILL)g @F14 @sf
(macro,)f(87)-354 57 y @F8 @sf(signal)d @F14 @sf(function,)h(13,)f(16,)h
(17,)f(24,)g(74,)h(86,)-587 56 y(102,)h(103)-331 57 y @F8 @sf(<signal.h>)h 
@F14 @sf(header,)h(17,)g(86)-533 57 y @F8 @sf(signed)g @F14 @sf(k)o(eyw)o
(ord,)f(19,)g(51)-470 57 y(signi\014cand,)h(18)-284 56 y(sign-magnitude)g
(represen)o(tation,)f(18)-675 57 y @F8 @sf(SIGTERM)h @F14 @sf(macro,)f
(103)-401 57 y @F8 @sf(sizeof)h @F14 @sf(k)o(eyw)o(ord,)f(5,)g(44,)h(45,)f
(50)-594 57 y @F8 @sf(size)s 14 -2 z 14 x(t)h @F14 @sf(t)o(yp)q(e,)g(44,)f
(74,)h(98,)f(102,)g(108)-652 57 y(source)i(\014le,)f(9)-249 57 y(spirit)g
(of)f(C,)h(47)-278 56 y @F8 @sf(sprintf)g @F14 @sf(function,)f(80)-419 57 y 
@F8 @sf(sscanf)h @F14 @sf(function,)f(96)-395 57 y(statemen)o(ts,)g(58)-288 
57 y(static)g(initializers,)f(50)-403 57 y @F8 @sf(<stdarg.h>)h @F14 @sf
(header,)h(87)-456 56 y 14 -2 z 18 x 14 -2 z 14 x @F8 @sf(STDC)s 14 -2 z 
16 x 14 -2 z 30 x @F14 @sf(macro,)f(68)-375 57 y @F8 @sf(<stddef.h>)g 
@F14 @sf(header,)h(44,)g(46,)f(74)-606 57 y @F8 @sf(<stdio.h>)g @F14 @sf
(header,)i(88,)e(89)-509 57 y @F8 @sf(<stdlib.h>)g @F14 @sf(header,)h(100)
-482 57 y(storage)f(duration,)h(21)-401 57 y @F8 @sf(strcoll)g @F14 @sf
(function,)f(107)456 -2434 y(streams,)g(90)-226 57 y(streams,)g(binary)l
(,)h(91)-378 57 y(streams,)f(text,)g(91)-333 57 y @F8 @sf(strerror)g 
@F14 @sf(function,)h(100,)f(108)-562 57 y @F8 @sf(strftime)g @F14 @sf
(function,)h(110)-466 57 y(strictly)f(conforming)g(program,)g(3,)g(6,)h
(11)-734 57 y @F8 @sf(<string.h>)f @F14 @sf(header,)h(105)-482 57 y
(stringizing,)e(65)-281 57 y @F8 @sf(strlen)h @F14 @sf(function,)h(108)-418 
57 y @F8 @sf(strncat)f @F14 @sf(function,)h(106)-442 57 y @F8 @sf(strncpy)f 
@F14 @sf(function,)h(106)-442 57 y @F8 @sf(strstr)f @F14 @sf(function,)h
(107)-418 57 y @F8 @sf(strtod)f @F14 @sf(function,)h(100)-418 57 y @F8 @sf
(strtok)f @F14 @sf(function,)h(107)-418 56 y @F8 @sf(strtol)f @F14 @sf
(function,)h(100)-418 57 y(structure)g(t)o(yp)q(es,)g(51)-374 57 y @F8 @sf
(strxfrm)f @F14 @sf(function,)h(107)-442 57 y @F8 @sf(system)f @F14 @sf
(function,)h(103)-418 107 y(tags,)f(50)-155 57 y @F8 @sf(time)h @F14 @sf
(function,)f(110)-367 57 y 14 -2 z 17 x 14 -2 z 14 x @F8 @sf(TIME)s 14 -2 z 
17 x 14 -2 z 29 x @F14 @sf(macro,)h(68)-375 57 y @F8 @sf(<time.h>)f @F14 @sf
(header,)h(108)-434 57 y @F8 @sf(time)s 14 -2 z 14 x(t)g @F14 @sf(t)o(yp)q
(e,)g(108)-336 57 y @F8 @sf(tm)s 14 -2 z 14 x(isdst)f @F14 @sf(\014eld,)i
(108)-380 57 y @F8 @sf(tmpfile)e @F14 @sf(function,)h(92)-419 57 y @F8 @sf
(tmpnam)f @F14 @sf(function,)h(92)-395 57 y(tok)o(en)g(pasting,)f(32,)g
(66)-415 57 y(trigraph)g(sequences,)i(14)-442 57 y(t)o(w)o(os-complemen)o
(t)e(represen)o(tation,)g(26)-714 57 y(t)o(yp)q(e)h(mo)q(di\014er,)g(54)
-339 57 y @F8 @sf(typedef)f @F14 @sf(k)o(eyw)o(ord,)g(54,)h(57,)f(60)-567 
106 y @F8 @sf(#undef)f @F14 @sf(prepro)q(cessing)h(directiv)o(e,)g(75,)f
(87)-753 57 y(unde\014ned)q 19 x(b)q(eha)o(vior,)k(6,)h(11,)f(13,)h(22,)f
(26,)-587 57 y(30,)d(42,)h(45,)f(87,)g(88,)g(103,)g(104)-697 57 y @F8 @sf
(ungetc)g @F14 @sf(function,)h(96,)f(97)-468 57 y(UNIX)h(op)q(erating)f
(system,)g(2,)g(35,)g(63,)f(71,)-587 56 y(81,)h(86,)h(87,)f(88,)g(90,)g
(92,)h(93,)f(96)-725 57 y @F8 @sf(unlink)g @F14 @sf(function,)h(92)-395 
57 y(unsigned)h(preserving,)e(34)-467 57 y(unsp)q(eci\014ed)j(b)q(eha)o
(vior,)d(6,)h(68)-529 57 y(/usr/group)53 b(\(UNIX)h(system)f(users)-586 
57 y(group\),)14 b(71)-1381 124 y
118 @eop1

119 @bop0

119 @eop0
0 0 119 @bop1 112 50 a @F10 @sf(INDEX)1432 b @F14 @sf(119)-1651 145 y 
@F8 @sf(va)s 14 -2 z 14 x(arg)15 b @F14 @sf(macro,)f(87)-347 57 y @F8 @sf
(va)s 14 -2 z 14 x(list)h @F14 @sf(t)o(yp)q(e,)g(87)-337 56 y(v)m(alue)h
(preserving,)e(34)-395 56 y @F8 @sf(<varargs.h>)g @F14 @sf(header,)h(87)
-483 57 y @F8 @sf(va)s 14 -2 z 14 x(start)g @F14 @sf(macro,)f(87)-395 56 y
(V)-5 b(AX/VMS)16 b(op)q(erating)e(system,)g(81)-649 57 y @F8 @sf
(vfprintf)h @F14 @sf(function,)f(95,)g(96)-516 56 y @F8 @sf(void)24 b(*)
15 b @F14 @sf(t)o(yp)q(e,)g(26,)f(37,)g(45,)g(47,)h(48,)f(95)-686 57 y 
@F8 @sf(void)h @F14 @sf(k)o(eyw)o(ord,)f(19,)g(51)-422 56 y @F8 @sf
(volatile)h @F14 @sf(k)o(eyw)o(ord,)f(19)-445 57 y @F8 @sf(vprintf)h 
@F14 @sf(function,)f(96)-419 56 y @F8 @sf(vsprintf)h @F14 @sf(function,)f
(96)-443 98 y @F8 @sf(wchar)s 14 -2 z 14 x(t)h @F14 @sf(t)o(yp)q(e,)g(74)
-337 57 y(white)g(space,)g(19)-304 56 y(wide)h(c)o(haracters,)e(30,)g(32)
-455 56 y(widened)i(t)o(yp)q(es,)f(75)1043 1670 y @F15 @sf(RA)m(TIONALE)
-1763 b
119 @eop1

restore
