. - " " /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.  _: ==   !=  == ()