. X3D, X3D[I], X3D[I][J] X3D[I][J][K] - . "", INT. 16.5.  - , . - . - , . . --- -- \( --\) -- \(--\) -- --: STRUCT UNION -- - : --: - - -- -: - -- --: - -, -- - . . ; . -: : : , - . , , , ; - . , , ; . , , - . PDP-11 - . , , , , - - . - 0 - . - , " " - , , . , , - - . , INT . PDP-11 . &, - . , 0 - , . . , .. STRUCT \(--\) UNION \(--\) ( - ) , . , STRUCT UNION , - ; - . , , , . . - . - ; , - , . ( , , - , ). : STRUCT TNODE \( CHAR TWORD[20]; INT COUNT; STRUCT TNODE *LEFT; STRUCT TNODE *RIGHT; \); 20 , . , STRUCT TNODE S, *SP; , S , SP . - SP->COUNT COUNT , SP; S.LEFT S, - S.RIGHT->TWORD[0] TWORD S. 16.6.  - . , - =. : = = \(-\) = \(-,\) -: -,- \(-\) , , - , . 23, , , . - , - . , 0; - . ( ), - , . ; , . (- ), - - . . , . - , . . . , - ; , , . , - ; , - . CHAR . - . , INT X[] = \(1,3,5\); X ; - , , , . - : FLOAT *Y[4][3] = \( ( 1, 3, 5 ), ( 2, 4, 6 ), ( 3, 5, 7 ), \); 1, 3 5 Y[0], Y[0][0], Y[0][1] Y[0][2]. - Y[1] Y[2]. , , Y[3] . , FLOAT Y[4][3] = \( 1, 3, 5, 2, 4, 6, 3, 5, 7 \); Y , Y[0] . 3 . Y[1] Y[2]. FLOAT Y[4][3] = \( (1), (2), (3), (4) \); Y ( ), . , CHAR MSG[] = "SYNTAX ERROR ON LINE %S\N"; . 16.7.  ( SIZEOF) - . " ", , . : - - -: (-) * - () - [ ] ( ) , - . - -, , . . - , INT INT * INT *[3] INT (*)[3] INT *() INT (*)() "", " ", " ", " ", " , " " , ". 16.8. TYPEDEF , " " TYPEDEF, . - , , , - . -- TYPEDEF , - , - , , . 16.4 . , TYPEDEF INT MILES, >KLICKSP; TYPEDEF STRUCT ( DOUBLE RE, IM; ) COMPLEX; MILES DISTANCE; EXTERN KLICKSP METRICP; COMPLEX Z, *ZP; ; DISTANCE - INT, METRICP - " INT", Z - ZP - . TYPEDEF - - , , . - DISTANCE , , INT. 17.  , . 17.1.  - , ; - . 17.2. ( ) - , , ( - ""): : \(- - \) -: - -: - - - , - . - - . ( ) ; - . - , - . , . 17.3.  : IF () IF () ELSE , , . , , . , "ELSE" ELSE IF, ELSE. 17.4. WHILE WHILE WHILE () , . . 17.5. DO DO DO WHILE () , . . 17.6. FOR FOR (-1 ; -2 ; -3 ) FOR -1; WHILE (-2) \( -3 \) , ; , - , , - ; , . . - , WHILE - WHILE(1); - . 17.7. SWITCH SWITCH (), - , . SWITCH () - , INT. - . - CASE, : CASE : INT. . . 23. , - DEFAULT: SWITCH - . , - , . - DEFAULT, , . DEFAULT - , - . CASE DEFAULT , . BREAK, . 17.8. , , - . - , - . 17.8. BREAK BREAK; WHILE, DO, FOR SWITCH; - , - . 17.9. CONTINUE CONTINUE; WHILE, DO FOR; . , WHILE(...) \( DO \( FOR(...) \( ... ... ... CONTIN: ; CONTIN: ; CONTIN: ; \) \) WHILE(...); \) CONTINUE GOTO CONTIN. ( CONTIN: ; . . 17.13.). 17.10.  - RETURN, RETURN; RETURN ; . - - . , - , , . - . 17.11. GOTO - GOTO 1 (. 9.12), . 17.12.  : . , - GOTO. - , , - . . 19. 17.13.  : ; , \) - , WHILE. 18.  C- - . EXTERN ( ), STATIC, . (. 16.2) ; , INT. , , , . - , , . 18.1.  -: - - - , -, EXTERN STATIC; . 19.2. - ", ...", , . -: (- ) : , - - -: - - . , - , INT. REGISTER; , - , , . : INT MAX(A, B, C) INT A, B, C; \( INT M; M = (A>B) ? A:B; RETURN((M>C) ? M:C); \) INT - -, MAX(A,B,C) - -- , INT A,B,C; - - , \( ... \) - , . "C" FLOAT - DOUBLE, - , FLOAT, DOUBLE. , ( ) - , - " ..." : " ...". , , , - , ( , - , ). 18.2.  -: EXTERN ( , ) STATIC, AUTO REGISTER. 19. ,  C- - ; . , . : -, , - - , , "- "; -, , - - , - . 19.1.  , , - , . - , - , , - . , - , . - , - . - (. . 19.2), ; - , . , , , , , , - . (. 16.5), , - , , - , , , , - . , . , TYPEDEF, , - . , : TYPEDEF FLOAT DISTANCE; ... \( AUTO INT DISTANCE; ... INT - , DISTANCE (. : , .). 19.2.  , EXTERN, - , , . , , , , - , , . EBTERN , - . , - - , EXTERN, - . , - , EXTERN. - , - . , STATIC, . STATIC. 20.  "C" , - , . , #, - . ; ( ) . 20.1.  #DEFINE - ( - ) , . #DEFINE (,...,) ( , - . , - '(', - ')', - . - , - , - . , ; , - , - . - . . . , - \ . " ", , , #DEFINE TABSIZE 100 INT TABLE[TABSIZE]; #UNDEF - . 20.2.  #INCLUDE "FILENAME" - FILENAME. - , . #INCLUDE <FILENAME> . #INCLUDE . 20.3.  #IF , - (. . 15). #IF DEF , - , .. #DEFINE. 21.  . - . , - , , INT; , , - AUTO. - , AUTO ( "C" - ); ", ...", EXTERN. , ( , - ", INT". 22.  , . 22.1.  - : ( ) ( &). , , . - , , - - , . . 15.1 , ( . ->) , . , . '.' L- - , L- , . , - , '->', - . , , - . - , . . 22.2.  : . , , . , , INT F(); ... G(F); G : G(FUNCP) INT(*FUNCP)(); \( ... (*FUNCP)(); ... \) , F - , G(F) ( . 22.3. ,  , , , , - . - L-. [] , E1[E2] *((1)+(2)). - , +, E1 - , 2 - , 1[2] 2- 1. - - . - . N- I*J*...*K, (N-1)- J*...*K. - * , , , , (N-1)- , - . , , INT X[3][5]; X 3*5. X 5 . X[I], *(X+I), - X , ; I X, I , , 5 . , ( 5 ), . , ; . , "C" ( ) - , , - , . 22.4.  , - , - . ; . . 15.2 16.7. - , . INT LONG, . - -, , - . - . - . , -. - . - , - , - . , , . , - , - ; . EXTERN CHAR *ALLOC(); DOUBLE *DP; DP=(DOUBLE*) ALLOC(SIZEOF(DOUBLE)); *DP=22.0/7.0; ALLOC (- - ), - DOUBLE; - . PDP-11 16-- . CHAR - ; - . HONEYWELL 6000 36- ; 18 - , . , 2 16 ; 2 18 . DOUBLE - (0 2 19). IBM 370 INTERDATA 8/32 . ; - , , SHORT , INT FLOAT - DOUBLE - . , - . 23.  "C" , - : - CASE, - . , SIZEOF, + - * / . % & \! << >> == 1= <> <= >= - \^ ?: , . ( ) ; & - , . & , - . - , - , . 24.  "C" -- . - , . , , - , , , - . - . , , ( - ) , , , . - - - . REGISTER, , , . - ; - . . , - , - . - ; PDP-11 VAX-11 . , - , . INT, , . , - , , - , -. - PDP-11 VAX-11 . , (, , INT CHAR - ), - . , , . - ,