Языки программирования - концепции и принципы

С лучше не использовать неявное


    Даже в языке С лучше не использовать неявное преобразование целых в булевы, а предпочитать явные операторы равенства и неравенства:

C

if (а + b== 2)...                /* Этот вариант понятнее, чем */                       

if (a + b-2)...                    /* ...такойвариант.*/

if (а + b ! = О)...              /* Этот вариант понятнее, чем */

if (! (а + b))...                  /*... такой вариант. */

  Наконец, отметим, что в языке С применяется так называемое укороченное (short-circuit) вычисление выражений булевой алгебры. Это мы обсудим в раз­деле 6.2.



 

 

4.5.  Подтипы

В предыдущих разделах мы обсудили целочисленные типы, позволяющие вы­полнять вычисления в большом диапазоне значений, которые можно пред­ставить в слове памяти, и перечисляемые типы, которые работают с меньши­ми диапазонами, но не позволяют выполнять арифметические вычисления. Однако во многих случаях нам хотелось бы делать вычисления в небольших диапазонах целых чисел. Например, должен существовать какой-нибудь спо­соб, позволяющий обнаруживать такие ошибки как:

Temperature: Integer;

Temperature := -280;                               -- Ниже абсолютного нуля!

Compass-Heading: Integer;

Compass-Heading := 365;                        - Диапазон компаса 0..359 градусов!

Предположим, что мы попытаемся определить новый класс типов:

 type Temperatures is Integer range -273 .. 10000;   - - He Ada!

 type Headings is Integer range 0 .. 359;                    -- He Ada!

   Это решает проблему проверки ошибок, вызванных значениями, выходящи­ми за диапазон типа, но остается вопрос: являются эти два типа разными или нет? Если это один и тот же тип, то

Temperature * Compass_Heading

является допустимым арифметическим выражением на типе целое; если нет, то должно использоваться преобразование типов.

   На практике полезны обе эти интерпретации. В вычислениях, касающихся физического мира, удобно использовать значения разных диапазонов.

Содержание раздела