e . C++ --------------------------------------------------------------- ---------------------------------------------------------------  *  R.1  ++ 1991. ++ - , . "The C Programming Language" B. Kernighan, D. Ritchie. Prentice Hall, 1978, 1988. : " . " . , . , . . " ". 1984 ++ , , , , , , , . $$R.18.1. ++ ANSI C++ $$R.18.2 . American National Standard X3.159-1989. . ++ 1985 $$R.18.1.2. , ($$R.14) ($$R.15), . R.1.1  : 1. . 2. . 3. . 4. . 5. . 6. . 7. . 8. . 9. . 10. . 11. . 12. -. 13. . 14. . 15. . 16. . A: B: R.1.2  , . , , " ". "opt", { opt } , . R.2  ++ ($$R.3.3). . ($$R.16), . , , # ($$R2.1). . , .. , . R.2.1  : , , , . , , , ( "" ), , , , . , , . , , . R.2.2 /* , */. . // , . //, /* */ // . // /* /*. R.2.3  - . , _ . . . R.2.4  : asm continue float new signed try auto default for operator sizeof typedef break delete friend private static union case do goto protected struct unsigned catch double if public switch virtual char else inline register template void class enum int return this volatile const extern long short throw while , (__) ++ . ++ ASCII : ! % ^ & * ( ) - + = { } | ~ [ ] \ ; ' : " < > ? , . / : -> ++ -- .* ->* << >> <= >= == != && || *= /= %= += -= <<= >>= &= ^= |= :: . : # ## , , , sizeof ($$R5.3.2) ($$R.3.6.1) ($$R.16.4) <float.h> <limits.h> <stddef.h> ANSI . <new.h> <stdarg.h> <stdlib.h> . ANSI , <new.h> ++. R.2.5  ( ""). : R.2.5.1  , , ( ), 0 ( ). , 0, ( ). 8 9 . , 0x 0X, ( ). a A f F . , 12, 014 0XC. , . , : int, long int, unsigned long int. , : int, unsigned int, long int, unsigned long int. u U, : unsigned int, unsigned long int. l L, : long int, unsigned long int. ul, lu, uL, Lu, Ul, lU, UL LU, unsigned long int. R.2.5.2  , , 'x'. char. . int. . , , ', ", ?, \, ( \) : NL (LF) \n HT \t VT \v BS \b CR \r () FF \f BEL \a \ \\ ? \? ' \' " \" ooo \ooo hhh \xhhh , , . \ooo , , . , . \xhhh , x, , , . , . . , , . char, . , L, , , L'ab'. wchar_t, ($$R.3.6.1), <stddef.h>. , . R.2.5.3  , , , e E, , . ( ) . , ( ) . , e ( E) ( ). double, . f F float, l L long double. R.2.5.4  ( $$R.2.5.2), , .. "...". " " static ($$R.3.5), . (.. ), . . , , . , "\xA" "B" '\xA' 'B' ( '\xAB'). '\0', , , . , . " \. , L, , , L"asdf". " wchar_t", wchar_t , <stddef.h>. . R.3  , , , , , , , . . , . , . , , ( ) , , , , ($$R.3.3) . ($$R.3.7). ($$R.3.5), . , , , . R.3.1  ($$r.7) . , ($$R.8.3), extern ($$R.7.11), , ($$R.9.4), ($$R.9.1), typedef ($$R.7.1.3). : int a; extern const c = 1; int f(int x) { return x+a; } struct S { int a; int b; }; enum { up, down }; : extern int a; extern const c; int f(int); struct S; typedef int Int; , , , , ($$R.3.3). , . , , , . R.3.2  : , , . : , ($$R.6.3), , . , . : ($$R.6.1) , . , . : ($$R.6.3) ($$R.9) , . , , . : - ($$R.9.3), . , ($$R.5.2.4) ($$R.10), ->, ($$R.5.2.4) , :: ($$R.5.1), . , friend ($$R.11.4), , , friend. , return , . , ($$R.8.2.5) friend ($$R.11.4). . - , , :: ($$R.4.1, $$R.9.4, $$R.10). , , , :: ($$R.5.1). , ($$R.9.1) , , . , , ( ) , . , , , - , class, struct union ($$R.7.1.6). , , enum ($$R.7.1.6). $$R.10.4 . ($$R.8), ( ). , int x = 12; { int x = x; } x () . , : enum { x = x }; x () . R.3.3  , ($$R.2). . , static, , .. . , . , inline, . , const extern, . , , , ($$R.9.4), -, ($$R.9.3.2). , , , ($$R.3.7), ($$R.8.2.5) ($$R.9). , . , static, , () , -, , . (typedef $$R.7.13), ($$R.7.2) ($$R.14) . ($$R.9.4) . -, , . -, , . ($$R.3.2), extern, , static ($$R.7.1.1). , , , ($$R.7.1.3) ($$R.8.2.4). , , , . , , . , , , . . ($$R.7.4). R.3.4  main(). . , , . , argv . main int main() { /* ... */ } int main(int argc, char* argv[]) { /* ... */ } argc , , . argc , , '\0', argv[0] argv[argc-1], argv[0] , , "". , argv[argc]==0. main() . main() ($$R.3.3) . main() inline static. void exit(int); <stdlib.h>, . . ($$R.3.5) , . ($$R.8.4, $$R.9.4, &&R.12.1, $$R.12.6.1) main() , , . ($$R.8.4) ( ) . . $$R.8.4. ($$R.12.4) main() exit(). . atexit() <stdlib.h> , . atexit(), , atexit(), , , atexit(). ++ , , , atexit(), . void abort(); <stdlib.h>, , atexit(). R.3.5  : . . . ($$R.12.1) , , ($$R.12.4) ($$R.6.7). , , , , , . , , , , , . $$R.3.4 $$R.6.7. , . $$R.5.3.3 $$R.12.2. . static ($$R.7.1.1). R.3.6  : . R.3.6.1  . <limits.h> . , (char), . , . unsigned signed. char, signed char unsigned char . . short int, int long int . , , , . , , . signed char, short, int long , . - , ($$R.5.4). , unsigned, 2@n, n , . , . : float, double long double. double , float, long double , double. <float.h>. char, int ($$R.7.2) . . void . , . void. void ($$R.5.4), - ($$R.6.2), ($$R.5.18) ?: ($$R.5.16). R.3.6.2  , : , $$R.8.4; , , $$R.8.2.5; , $$R.8.2.1; , $$R.8.2.2; , , $$R.7.1.6; , ($$R.9), ($$R.9.3) , $$R.11; , , $$r.11; , , , $$R.9.5; , , $$R.8.2.3. , $$r.8.2.1, $$R.8.2.4, $$R.8.2.5 $$R.8.2.2. T " T". , int " int", X " X". void* ( void), const void* volatile void* . void* , . , "", , . R.3.6.3  typedef ($$R.7.1.3), ($$R.14). R.3.7  - , - , . . , , , E , *E - , , E. "" ("lvalue" .. left value - ) E1 = E2, E1 "" . $$R.5 . , , const. R.4  . , , . . ($$R.8.4, $$R.8.4.3, $$R.12.8, $$R.12.1). $$R.12.3 $$R.13.2 , , . , ($$R.8.2.2). R.4.1  , , char, short int, ($$R.7.2) ($$R.9.6), . int , int, unsigned int. . R.4.2  , , (mod 2**n), n . , .\ , , , , . R.4.3  float . float , . float , , . , . R.4.4  "", .. . , . , . , . , . R.4.5 . " ". long double, long double. , double, double. , float, float. , ($$R.4.1) . , unsigned long, unsigned long. , long int, - unsigned int, , long int unsigned int, unsigned int long int, unsigned long int. , long, long. , unsigned, unsigned. , int. R.4.6  , ($$R.8.2.1) , , , : ($$R.5.19), , , . , . , const volatile, void*. void*, , void* , . ($$R.10), ($$R.10.1). , ($$R.11.1). , . (0) . " T" . ", T" " , T", , & (). R.4.7  , ($$R.8.2.2) ( ($$R.5.2.2) ($$R.6.6.3)) , : ($$R.10, $$R.11.1) ($$R.8.4.3), , ($$R.10.1.1). , . R.4.8  , ($$R.8.2.3) , , , : ($$R.5.19), , . , . , , , ($$R.10.1.1). (.. ) , (.. ) ($$R.4.6, $$R.10). . , . void*. R.5  , . - , . . , .. , ($$R.9). $$R.13.4. , , , . , ++a a+=1, ($$R.13.4). , . , . . , . . , , , , : i = v[i++]; // the value of `i' is undefined i=7,i++,i++; // `i' becomes 9 . ++ . . , const T, volatile T, T&, const T& volatile T& , T. , T* const, T*volatile , T*, . , T , volatile T const T. , const T* volatile , T*, . ($$R.13.2) . " T" ($$R.8.2.2, $$R.8.4.3), "T", . . . ( ) , .. ($$R.12.3) ($$R.13.2), , , ($$R.8.4), , ($$R.6.4), , ($$R.6.5), , ($$R.6.6.3), ($$R.5.2.2). R.5.1  , , ::. -: this ::