путем распространения знака или другим
Тип
char превращается в
int путем распространения знака или другим описанным выше способом.
Тип
long int преобразуются в
short int или в значения типа
char путем отбрасывания старших разрядов. Так, в
int i; char c; i = c; c = i;
значение c не изменится. Это справедливо независимо от того, распространяется знак при переводе
char в
int или нет. Однако, если изменить очередность присваиваний, возможна потеря информации.
Если x принадлежит типу
float, а i - типу
int, то и x=i, и i=z вызовут преобразования, причем перевод
float в
int сопровождается отбрасыванием дробной части. Если
double переводится во
float, то значение либо округляется, либо обрезается; это зависит от реализации.
Так как аргумент в вызове функции есть выражение, при передаче его функции также возможно преобразование типа. При отсутствии прототипа (функции аргументы тина
char и
short переводятся в
int, a
float - в
double. Вот почему мы объявляли аргументы типа
int или
double даже тогда, когда в вызове функции использовали аргументы типа
char или
float.
И наконец, для любого выражения можно явно ("насильно”) указать преобразование его типа, используя унарный оператор, называемый приведением. Конструкция вида
(имя-типа) выражение
приводит выражение к указанному в скобках типу по перечисленным выше правилам. Смысл операции приведения можно представить себе так: выражение как бы присваивается некоторой переменной указанного типа, и эта переменная используется вместо всей конструкции. Например, библиотечная функция sqrt рассчитана на аргумент типа
double и выдает чепуху, если ей подсунуть что-нибудь другое (sqrt описана в ). Поэтому, если n имеет целочисленный тип, мы можем написать
sqrt((double) n)
и перед тем, как значение n будет передано функции, оно будет переведено в
double. Заметим, что операция приведения всего лишь вырабатывает значение n указанного типа, но саму переменную n не затрагивает. Приоритет оператора приведения столь же высок, как и любого унарного оператора, что зафиксировано в таблице, помещенной в конце этой главы.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий