Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы по С++ 1-9.docx
Скачиваний:
29
Добавлен:
09.02.2015
Размер:
162.99 Кб
Скачать

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

В качестве левого операнда в операциях присваивания может использоваться только переменная.

= += - = *= /= %= &= ^= |= <<= >>= .

= - присваивает левому операнду значение выражения правой части;

Остальные операции присваивают левому операнду результат выполнения операции, указанной слева от операции равно, левого операнда и правого.

2. В С++ присваивание относится к операциям и используется для формирования бинарных выражений. Поэтому в С++ отсутствует отдельный оператор присваивания.

Операции присваивания имеют низший приоритет при выполнении программы (ниже только запятая).

3.

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

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

Приведение типа — преобразование значения переменной одного типа в значение другого типа.

Выделяют явное инеявное приведения типов.

• При явном приведении указывается тип переменной, к которому необходимо преобразовать исходную переменную.

• При неявном приведении преобразование происходит автоматически, по правилам, заложенным в данном языке

программирования.

Вычисление значений выражений в операторах C++ обеспечивается выполнением операций и вызовом функций. Операции используют

операнды, функции требуют параметров. Операнды и параметры характеризуются типом. В C++ не существует операций, которые,

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

соответствия типа параметров типу параметров определения и прототипа.

Однако не всегда в программе удаётся легко согласовать типы операндов и параметров. И здесь проблем, связанных с согласованием типов

операндов и параметров транслятор берёт на себя. Фактически это означает введение ещё одной системы правил, которая называется

правилами стандартного преобразования типов.

В общем случае, при определении значения выражения могут возникать следующие ситуации:

1.Присвоение "большему типу" значения "меньшего типа". Безопасное присвоение, гарантирует сохранение значения.

unsigned int UnsignedIntVal; unsigned char UnsignedCharVal; UnsignedIntVal = UnsignedCharVal;

2.Присвоение "меньшему типу" значения "большего типа". Потенциально опасное присвоение, грозит потерей информации.

int IntVal; char CharVal; CharVal = IntVal;

3.Преобразование значения из "меньшего типа" в "больший тип". Называется расширением типа.

(unsigned int)UnsignedCharVal;

4.Преобразование значения из "большего типа" в "меньший тип". Называется сужением типа. Является опасным преобразованием.

(char)IntVal;

Корректное выполнение действий со значениями различных типов в безопасных случаях и в ряде опасных случаев обеспечивается

благодаря реализованной в C++ системе преобразования типов.

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

основываются на следующих правилах стандартных преобразований:

Присваивание значения объекту преобразует это значение к типу объекта.

s(u)char->s(u)short->s(u)int->s(u)long float->double->long double

9.

1.

Структура программы:

<Команды препроцессора>

[<Объявление типов, переменных и констант>]

[<Объявления (прототипы) функций>]

<Описание функции main()>

[<Описания других функций>]

Описание функции:

<Тип результата или void> <Имя функции> ([<Список параметров>])

{[ < Объявление локальных переменных и констант >]

<Операторы>

}

Пример программы С++:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]