КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА - Турбо С: руководство пользователя. Часть 1 - Стр. 21

Индекс материала
Турбо С: руководство пользователя. Часть 1
Стр. 2
Стр. 3
Стр. 4
Стр. 5
Стр. 6
Стр. 7
Стр. 8
Стр. 9
Стр. 10
Стр. 11
Стр. 12
Стр. 13
Стр. 14
Стр. 15
Стр. 16
Стр. 17
Стр. 18
Стр. 19
Стр. 20
Стр. 21
Стр. 22
Стр. 23
Стр. 24
Стр. 25
Стр. 26
Стр. 27
Стр. 28
Стр. 29
Стр. 30
Стр. 31
Стр. 32
Стр. 33
Стр. 34
Стр. 35
Стр. 36
Стр. 37
Стр. 38
Стр. 39
Стр. 40
Стр. 41
Стр. 42
Стр. 43
Стр. 44
Стр. 45
Стр. 46
Стр. 47
Стр. 48
Стр. 49
Стр. 50
Стр. 51
Стр. 52
Стр. 53
Стр. 54
Стр. 55
Стр. 56
Стр. 57
Стр. 58
Стр. 59
Стр. 60
Стр. 61
Стр. 62
Стр. 63
Стр. 64
Стр. 65
Стр. 66
Стр. 67
Стр. 68
Стр. 69
Все страницы
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                    --------------------------------------------------          
                    Область памяти           Пояснение                          
                    --------------------------------------------------          
                                                                                
                    0000:0000-0000:03FF Таблица вектора прерывания              
                                                                                
                    0000:0400-0000:04FF Область данных BIOS                     
                                                                                
                    0000:0500-Турбо Си  MSDOS/TSR's                             
                                                                                
                    Турбо Си - Програм- Турбо Си                                
                    мы пользователя PSP                                         
                                                                                
                    PSP процесса поль-  PSP процесса пользователя               
                        зователя                                                
                                                                                
                    Процесс пользовате- Имя  статической переменной             
                    ля - начало RAM     пользователя, если ее адрес             
                                        лежит вне  памяти  размещенных          
                                        переменных; в противном случае          
                                        ничего.                                 

                         - 169,170 -
                                                                                
                                                                                
                    A000:0000-AFFF:FFFF Видео-память EGA                        
                                                                                
                    B000:0000-B7FF:FFFF Память монохромного дисплея             
                                                                                
                    B800:0000-BFFF:FFFF Память цветного дисплея                 
                                                                                
                    C000:0000-EFFF:FFFF EMS страница/Адаптер BIOS               
                                        ROM's                                   
                                                                                
                    F000:0000-FFFF:FFFF BIOS ROM's                              
                    --------------------------------------------------          
                                                                                
        R           Структуры/объединения. Отображает имена полей, так          
                    и их значения, например {X:1, Y:10, Z:5}. Применя-          
                    ется только для структур и объединений.                     
     -----------------------------------------------------------------          
                                                                                
          Ниже  приведены   некоторые   основные   правила  применения          
     спецификаторов формата:                                                    
                                                                                
          1. Спецификаторы формата эффективны  только  в  том  случае,          
                                                                                
                                                                                
     если  они  применяются  для  переменной соответствующего типа.  В          
     противном случае они игнорируются.                                         
                                                                                
          Обратите внимание, что если вам необходимо вычислить выраже-          
     ние состоящее  из  множества объектов (например,  структура),  то          
     нужно указать несколько спецификаторов формата для каждого объек-          
     та.  Например,  если вы ввели struct,F5H для вывода структуры со-          
     держажей целые и действительные числа,  то целые будут выведены в          
     шестнадцатеричном (Н) виде,  а действительные в виде чисел с пла-          
     вающей точкой с пятью значащими цифрами (F5).                              
                                                                                
          2. Если  вы  ввели  более  обного спецификатора формата,  то          
     выбран будет один с наивысшим приоритетом.  Это,  конечно,  имеет          
     значение  только  для  структур  и  объединений,  а  для  простых          
     переменных  и  массивов  простых  переменных  вы  будете   обычно          
     использовать только один спецификатор формата.                             
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

                         - 171,172 -
                                                                                
            Таблица 4.2 Приоритет и правила умолчания в                         
                         классификации спецификаторов формата                   
                                                                                
     ----------------------------------------------------------------           
      Тип               Спецификаторы в порядке          По умолчанию           
                        возрастания приоритета                                  
     ----------------------------------------------------------------           
                                                                                
     char               C S H D                           S                     
     unsigned char      C S H D                           S                     
     int                H D C* S*                         D                     
     unsigned int       H D C* S*                         D                     
     long               H D C* S*                         D                     
     unsigned long      H D C* S*                         D                     
     char ptr           C S P H                           S                     
     other ptr          P H                               P                     
     enum               H D C* S*                         D(следует             

                                                          за именем)            
     float              Fn                                F7                    
     double             Fn                                F15                   
     long double        Fn                                F18                   
     array of char      C S H D                           S                     
                                                                                
     другие массивы     элементы заключаются в квадратные скобки ([])           
                        и разделяются запятыми                                  
                                                                                
     structure          R                                                       
                                                                                
     * символ типа спецификаторов формата допустим только для величины          
     в интервале (-128 до 127 для типа со знаком (signed),  и 0 до 255          
     для типа без знака (unsigned)).                                            
     -----------------------------------------------------------------          
                                                                                
          Замечание: Спецификатор  формата Н,  используемый для вывода          
                     переменной типа указатель, выводится как шестнад-          
                     цатиричное целое число.                                    
                                                                                
          Продемонстрируем использование спецификаторов формата, пола-          
     гая, что следующие структуры и переменные были объявлены:                  
                                                                                
          struct {                                                              
              int account;                                                      
              char name[10];                                                    
          } client = { 5000, "ДЖОН" }                                           
                                                                                

                         - 173,174 -
                                                                                
                                                                                
          int  list[5] = {0,10,20,30,40};                                       
          char *ptr = list;                                                     
                                                                                
          void main()                                                           
          {                                                                     
          }                                                                     
                                                                                
          После ввода   следующих   выражений   в   поле    вычислений          
     (Evaluate),  будет производиться пересылка вычисленных значений в          
     поле результатов (Result).                                                 
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
          -----------------------------------------------------------           
               Evaluate               Result                                    
          -----------------------------------------------------------           
                                                                                
            list             { 0, 10, 20, 30, 40 }                              
            list[2],3        20, 30, 40                                         
            list[2],3x       0x14, 0x1E, 0x28                                   
            list,m           00 00 0A 00  00 14 00 1E 00 28 00                  
            ptr              DS:0198                                            
            ptr,p            DS:0198 [_list]                                    
            *ptr,3           0, 10, 20                                          
            client           { 5000, "ДЖОН\0\0\0\0\0" }                         
            client,r         { account:5000, name: "ДЖОН\0\0\0\0\0"}            
          -----------------------------------------------------------           
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

                         - 175,176 -
                                                                                
               Упражнение 2: поиск ошибки в wordlen                             
     -----------------------------------------------------------------          
                                                                                
          Сейчас давайте вырнемся к  WORDCNT  и  попробуем  определить          
     причину неправильной работы функции wordlen.                               
                                                                                
          Если вы все еще продолжаете сеанс отладки,  начатый в первом          
     уроке,   произведите   отмену,   набрав  Run/Program  Reset  (или          
     Ctrl-F2).  По этой команде Турбо Си освободит  память, занимаемую          
     WORDCNT, закроет открытый файл и завершит выполнение WORDCNT.              
                                                                                
          С другой стороны, если вы вышли из интегрированной среды или          
     использовали ее для выполнения других программ, подобно тому, как          
     мы это делали  в первом  уроке,  то начните  снова, выберите файл          
     WORDCNT.PRJ.   Затем  установите  контрольную   точку   в  строке          
     содержащей оператор while (fgets(...                                       
                                                                                
          Теперь  выберите   Run/Run  и  начните   отладку.  Турбо  Си          
     подготовит WORDCNT к выполнению и начнет ее выполнять  до тех пор          
     пока не встретит контрольную точку.                                        
                                                                                
          На запрос имени файла, введите WORDCNT.DAT и нажмите Ввод.