36543

Оператор присваивания, совместимость и преобразование типов данных

Доклад

Информатика, кибернетика и программирование

Совместимость левой и правой частей присваивания по типу означает либо равенство типов либо случаи когда тип выражения правой части автоматически преобразуется к типу левой части. Эти случаи автоматического преобразования типов для известных нам стандартных типов исчерпываются следующими:  Тип переменной левой части rel а тип выражения правой части integer т. Для согласования типа выражения с типом переменной левой части присваивания иногда могут потребоваться явные преобразования типов которые можно выполнить с помощью стандартных...

Русский

2013-09-22

29 KB

7 чел.

Оператор присваивания, совместимость и преобразование типов данных

1. Оператор присваивания.

Важнейшим из простых операторов Паскаля является оператор присваивания. Он позволяет изменять значение переменных в процессе выполнения программы без чего не может обойтись почти ни один алгоритм. Синтаксическая структура этого оператора: < переменная > := < выражение >; Оператор присваивания состоит из левой и правой частей, которые разделяются знаками присваивания (:=). Левая часть - это переменная любого типа, правая часть - выражение, совместимое по типу с переменной левой части. При выполнении этого оператора вычисляется значение выражения правой части и это значение становится значением переменной левой части. Таким образом, присваивание, это - "передача значения" справа налево. Следует усвоить, что присваивание не является обычным равенством (почему и используется знак присваивания, отличный от равенства). Действительно, пусть Х - переменная типа integer. Тогда при выполнении последовательности присваиваний Х:=2; Х:=Х+5; переменная Х получит значение 7, в то же время, очевидно, что второе присваивание не является равенством. Заметим, что присваивание такого вида часто используется в программах, и в Турбо Паскале предусмотрен сокращенный вариант записи этих присваиваний (стандартные процедуры inc и dec): inc(X,j) ~ X:=X + j; dec(X,j) ~ X - j; где j - любое выражение типа integer. Если j=1, возможна и ещё более короткая запись: inc(X) или dec(X). Совместимость левой и правой частей присваивания по типу означает либо равенство типов, либо случаи, когда тип выражения правой части автоматически преобразуется к типу левой части. Эти случаи автоматического преобразования типов (для известных нам стандартных типов) исчерпываются следующими:

Тип переменной левой части real, а тип выражения правой части - integer, т.е. преобразование вида real integer.

Тип переменной левой части string, а тип выражения правой части - char, т.е. преобразование вида string  char.

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

Совместимость и преобразование типов данных.

Турбо-Паскаль - типизированный язык, следовательно, все применяемые операции определены только над операторами совместимых типов. Два типа считаются совместимыми, если:

1)оба они есть один и тот же тип.

2)один тип есть тип-диапазон второго типа.

3)оба они являются типами-диапазонами одного и того же базового типа.

4)один тип есть строка, а другой - строка или символ.

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


 

А также другие работы, которые могут Вас заинтересовать

68945. Передача об’єктів функціям. Повернення об’єктів 37.5 KB
  Об’єкти можна передавати функціям, як звичайні змінні. Для цього застосовується звичайний механізм передачі параметрів по значенню. Не дивлячись на зовнішню простоту, цей процес може привести до несподіваних наслідків, що стосуються конструкторів і деструкцій.
68946. Покажчик this 29 KB
  При виклику функції-члена їй неявно передається покажчик на зухвалий об’єкт. Цей покажчик називається this. Розглянемо програму, в якій описаний клас pwr, призначений для обчислення ступеня деякого числа.
68947. Вказівники на члени класу 32 KB
  Вказівник такого вигляду називається вказівником на член класу. Цей незвичайний вказівник задає зсув усередині об’єкту відповідного класу. Оскільки вказівники на члени класу не є вказівниками в звичайному сенсі слова до них не можна застосовувати операторів.
68948. Перевантаження операторів 40 KB
  Перевантаження скорочених операторів присвоєння Обмеження на перевантаження операторів З перевантаженням функцій тісно пов’язаний механізм перевантаження операторів. У мові C можна перенавантажувати більшість операторів набудувавши їх на конкретний клас.
68949. Перевантаження операторів new і delete 53.5 KB
  У мові C++ можна перенавантажувати операторів new і delete. Це доводиться робити, якщо виникає необхідність створити особливий механізм розподілу пам’яті. Наприклад, можна зажадати, щоб процедура розподілу пам’яті використовувала жорсткий диск як віртуальну пам’ять, якщо купа вичерпана.
68950. Перевантаження операторів [], () 49.5 KB
  Ці оператори також можна перенавантажувати, що породжує масу цікавих можливостей. На перевантаження цих операторів розповсюджується одне загальне обмеження: вони повинні бути нестатичними функціями-членами. Дружні функції застосовувати не можна.
68951. Деформация кристалла 142 KB
  Деформа́ция (от лат. deformatio — «искажение») — изменение взаимного положения частиц тела, связанное с их перемещением относительно друг друга. Деформация представляет собой результат изменения межатомных расстояний и перегруппировки блоков атомов.
68952. Наслідування. Доступ до членів класу 31.5 KB
  Наслідування — один з наріжних каменів обєктно-орієнтованого програмування, оскільки воно дозволяє створювати ієрархічні класифікації Використовуючи Наслідування, можна створювати загальні класи, що визначають властивості, характерні для всієї сукупності споріднених класів.
68953. Конструктори похідних класів 44 KB
  У звязку із наслідуванням виникають два питання, що стосуються конструкторів і деструкцій. По-перше, коли викликаються конструктори і деструкції базового і похідного класів? По-друге, як передаються параметри конструкторів базового класу? Відповіді на ці питання містяться в наступному розділі.