.
-
" "
/P 2.1
.
1988
. -
, -
,
.
* 1.
- ,
,
.
" ", "" ,
-
,
, ,
. , -
-
"" . -
,
,
, -.
.
UNIX,
, UNIX.
, , -
;
, -
,
,
.
- " ".
, ,
, , , .
, -
.
, -
, -
, , ,
. , , PL/1,
.
, -
,
. -
-. -
.
, , -
: , , -
, , -
, .
-
. ,
.
-1-
. -
.
, , -
, -
, ,
. -4, , -
32-
-
. , ,
-, ,
, ,
, ; -
.
- ,
, -
,
. -
, -
"" , .. -
,
.
-68.
, -
PL/1. -
, -
.. .
,
, lint.
lint ,
, -
.
, , -
-
, ..
,
/ .., -
, -
. , -
UNIX, , -
/,
, ,
.
, ,
(
-2-
" "),
/,
.
(
3 4), man(2) man(3). -
[1], -
[2].
, -
. -
( ).
* 2.
-
"_",
( ).
. -
, ,
"",
{ }
, -
. 1.
, -
, :
_:
_
__
:
_:
_ __
,
,
IBM/370 (OS-360) 7 , 1
VAX 11 (UNIX) 7 , 2
2.1.
-
:
-3-
int extern else
char register for
float typedef do
double static while
struct goto switch
union return case
long sizeof default
short break entry
unsigned continue
auto if
entry
- ; -
.
fortran asm.
2.2.
,
.
2.2.1.
, ,
, 0 (
), . 8 9
10 11 . -
, 0 (, -
) 0 ( X-),
.
a () A () f ()
F () 10 15. ,
-
, ;
,
, .
2.2.2. (long)
, -
, l (-)
L (-), . -
.
2.2.3.
- , -
, , , ''.
-
.
-4-
, '
\ -
-
:
012 \n
011 \
010 \
015 \r
014 \f
0133 \\
047 \'
0ddd \ddd
\ddd
, 1, 2 3
, -
.
\0 ( ),
.
,
.
2.2.4.
, -
, , e () E (-
) . ,
.
, ( ) ;
, e ( -
) . -
.
2.3.
- ,
, , , "...". -
static (. ). -
. ,
, .
\0,
.
" -
\;
, -
, .
\, ,
-5-
.
, -
(. xstr).
2.4.
,
. ,
,
.
1.
-----------------------------------------
| CM- IBM 370 (OS) VAX-11 |
| -8 ebcdic ASCII |
| char 8 8 8 |
| int 16 32 32 |
| short 16 16 16 |
| long 32 32 32 |
| float 32 32 32 |
| double 64 64 64 |
| range -38/+38 -76/+76 -76/+76 |
|_______________________________________|
* 3. '
3.1.
:
.
, ;
, ,
.
: , -
, . -
.
, ,
.
-
,
. ( -
) ;
-
.
:
-6-
.
- , (char),
,
,
-
, -
. -
,
-. ( -
-0177 0177.)
.
- , -
short int, int long int.
, , -
,
, ,
. ""
,
;
.
.
- , unsigned, -
2**n, n -
. ( CM- -
).
.
- (float) -
(double)
. ( float 32
, double - 64).
,
"0" - "" "1" - ""
( , 0,
"").
, -
. char int -
. float double
.
-
, -
:
- ;
- , ;
-7-
- ;
- ,
;
- ,
.
,
.
3.2. l_
;
l_ ( ) - ,
. l_
. ,
l_; , , e - -
, *e l_,
, . "l_"
e1=e2,
l_.
,
l_ l_.
3.3.
. , -
.
, -
; -
.
3.3.1.
,
. -
.
;
.
,
, - ,
-
.
CM- -128 127; ASCII
. , -
, -
-
; , '\377' -1.
-8-
-
char, ;
.
3.3.2. float double
. , float
, double
. double
float, , ,
double float.
-
,
double (, -4). -
( cc).
3.3.3.
-; , -
. ,
.
.
, .
3.3.4.
-
; -
, -
.
; ,
.
3.3.5.
, -
,
.
,
( 2** ).
-
.
long, -
.
-9-
,
.
3.3.6.
-
. -
"
".
char short int,
float double. , -
double,
double, . ,
- long,
long, .
, -
unsigned, unsigned,
.
int, .
* 4.
,
. , , -
, + (.0.4),
, ..0.1-0.3. -
.
. -
-
.
. , -
, -
, -
. , , -
. , -
(*,+,&,|,^), -
;
-
.
-
-.
( )
; 0
.
-10-
4.1.
, ., ->,
, .
:
()
_ []
_ (_)
_l_ .
_ ->
_:
_,
,
, .
. , ,
..., -
, , -
,
.... ,
l_. -
, , -
.... ,
, -
, ....
.
int, long double.
.
; ,
, -
, -
. ( -
; . .)
-
,
. -
, l_ .
,
, . -
. -
..., int,
"...". e1[e2]
* ((e1) + (e2)). ,
-11-
, ; -
, * +
.. 0.1, 0.2 0.4 ;
.
,
, , -
. -
, ...,
"...". ,
, -
,
, , ;
, -
, .
float
double, char
short int, , , -
.
; ,
.
, -
.
; , -
.
,
.
, ,
,
.
; -
.
.
, -
, .
l_, , -
.
l_, -
.
, (-
- >) , -
.
,
. l_,
,
.
-12-
, e1->mos ,
(*e1).mos. -
.
,
(. "-
").
4.2.
.
_:
*
& l_
-
!
~
++ l_
-- l_
l_ ++
l_ --
(-)
sizeof
sizeof (_)
* :
, l_,
, .
...,
"...".
&
, l_. l_
"...", ....
- () -
, .
unsigned 2**n
( n), n- int.
+ () .
!
1, 0, 0,
. int. -
-
.
~ ( "", ^
) ( -
) .
. .
-13-
, l_ -
++, .
, l_. ++ -
+= 1 . -
(. 0.4) (.
0.14).
--
++, l_.
++ l_
,
l_. , ,
,
++. ,
l_.
-- l_
,
l_. , ,
,
--. ,
l_.
,
,
.
(cast). .
sizeof .
( , , -
sizeof. -
,
char).
.
.
, . -
,
, - .
sizeof -
.
.
sizeof () ,
sizeof () - 2
(sizeof ()) - 2.
4.3.
*, /, %
. .
-14-
_:
*
/
%
* . *
,
.
/ . -
, , -
.
, . , (a/b)*b+a%b
a ( b 0).
%
. -
. .
4.4.
+ - .
. -
,
.
_:
+
-
+ .
.
,
. -
, , -
,
. , p
, p+1
.
-
.
+ , -
.
-15-
- .
.
, -
, , -
, .
, ( )
int, ,
.
, ,
, , -
, .
4.5.
<< >> .
-
,
. int; -
. ,
,
.
_:
<<
>>
e1<<e2 e1 (
), e2 ; -
. e1>>e2
e1, e2 . e1
unsigned,
( );
( CM-) (
).
4.6.
,
; a<b<c ,
, , , ((a<b)<c).
_:
<
>
<=
>=
< (), > (), <= ( ) >=
( ) 0, ,
1, . int.
-16-
.
; -
. -
, -
.
4.7.
_:
==
!=
== ()