146

                                     4. 

         ,      
  .     r-  .
      0  .    
   : ptr && *ptr.
          
  .        (
      ).

       ,   0    
ASCII,      .    
,   ,      
:

   static_cast<int>(byte_value)

    .     
   ,   .     
byte_value  int.
     ++    limits,  
    ,       
 .   climits  cfloat    .
(      ,    
 , .  4  6 [PLAUGER92]).

                        4.3.     

     ,     ival, jval  kval .   
?

   // !    3    
   if ( ival != jva1 != kva1 )
      //  - ...
      // do something ...

    0, 1  0       true. ?
  ival != jval,      (true/false 
  1/0)   kval.     :

   if ( ival != jva1 && ival != kva1 && jva1 != kva1 )

                                   4.4.  

154

       ,       
  =.         .   
       .
      int     int . (
        4.14.) 
         l-.  
 :

   int value = 1024;
   1024 = ival; // 

   ,    :

   value = ival; // 

     ,        l-
. ,  

   const int array_size = 8;
   int ia[ array_size ] = { 0, 1, 2, 2, 3, 5, 8, 13 };
   int *pia = ia;



   array_size = 512; // 

,  array_size   l-:  array_size 
     . 

   ia = pia; // 

ia   l-,       .
     

   pia + 2=1; // 

    pia+2   ia[2],    .    
 ia[2],     .  
 :

   *(pia + 2) = 1; // 

        ,    
 . ,   

   ival = 0;

 0,  

   ival = 3.14159;

 3.    int   .    
   . ,  

   char ch = next_char();
   while ( ch != '\n' ) {
      //  - ...
      ch = next_char();
   }

   :

   while (( ch = next_char() ) != '\n' ) {
      //  - ...
   }
   // ...

   ,      ,  
  ,   .    
:

   next_char() != '\n'

  , true  false,   ch. ( 
    4.13.)
         ,  
  . :

   int ival, jval;
   ival = jval = 0; // :  0  

     ,    pval  ival ,   
  . ,  0      
:

   int main ()
   { 
      int ival; int *pval;
      ival = pval = 0; // :  

        ,    , ,  
jval   :

   int ival = jval = 0; //   ?
   // ...

        ,   jval    
  ,   int.  :      0
 jval   ival.      
,   :

   int main()
   {
       // :   
       int ival = 0, jval = 0;
       // ...

       ,     
,        . :

   sum = sum + ia[ i ];

         ++    .

   sum += ia[ i ];


                      4.5.    

     (++)   (--)     
      .    
          , 
 :

    push      ,     
 (  1 ).        . 
      ?     ,
  .   :

   stack[ top++ ] = value;

      pop?    (  
  ),   .    
:

   int value = stack[ --top ];


                  4.6.    

        ++   
   .

163

                           4.7.  

       :

   expr11 ? expr2 : expr3;

                              4.8.  sizeof

                             4.9.  new  delete

   int *pi = new int;

         ,    :

   int *pi = new int( 1024 );

        :

   int *pia = new int[ 10 ];

   ,       new,   
.       ,    
     .
(  new  delete      8.)

                                4.10.  

                               4.11.  

     ,  ++      :  C-
    string        :
     vector.      

170

  ,   ,    
     ,  unsigned int,   bitset
  ++.     ,
     .


                                    4.12.  bitset

                                     4.13. 

        ,     . 
  ,   :

   while ( ch = nextChar() != '\n' )

    ch ,   ,   
  .        ,
  nextChar(),  '\n',   true  false  
 ch.
      ,  .  
,    :

   ival = jval = kva1 = lval

 kval   lval,  jval    
,     ival   jval.
    , , . ,  

   ival + jval + kva1 + 1va1

  ival  jval,     kval,   
lval.

                                  4.14.  

                             4.14.1.   

                           4.14.2.   

                              4.14.3.   

          :
static_cast, dynamic_cast, const_cast  reinterpret_cast. , , 
   ,    
,    ,  . 
 ,    .
             
void*,     ,     
,       .  
void*    . :
     void*     .  
  ,   .    ,
    void*    . ++ 
   :
     ,   ++  
   void     .    
 :
   ,    ival    double,
    dval,       int.

   ival += dval;

       ,   dval  int:

   ival += static_cast< int >( dval );
   double dval;
   int iva1;

         ,  
       . (
     9,      .)
         ,    
  .  const_cast    
     (volatile)   . :
      const_cast   ,   
        .
     static_cast   ,   
 ,     :

   double d = 97.0;
   char ch = static_cast< char >( d );

     static_cast?   ,     
    .   static_cast
  ,  ,  ,    
.
    ,   static_cast  void*    
 ,       (enum), 
    . (     
    19.)
   reinterpret_cast      (re-interpret 
     ),   
    . :

   char *pc = reinterpret_cast< char* >( pcom );
   complex<double> *pcom;

          ,    
 char* pc.       , 
     pc   :

   string str( pc );

       .
     , ,     
.
           ++: 
      ,     
       
       .      
    pc      . 
  str    ,   ,
 pc   , ,  - ,   !
            ++ 
       . ,
      ++    
:

   char *pc = (char*) pcom;

        reinterpret_cast,   
 .   xxx_cast      
,      .
         , ,  
    .   
      ,   
. (      
   (delete),         
.       8.4,    
 .)

              4.14.4.    

      ,    ,
    ++;   ,  
.
         :

   //   C++ 
   type (expr);
   // ,   C
   (type) expr;

   int addr_va1ue = int( &iva1 );
   const char *pc = (const char*) pcom;

        ++      
,       ++.

189

                      4.15. :   Stack

193

