Общие правила для операторов — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Общие правила для операторов

2017-10-16 235
Общие правила для операторов 0.00 из 5.00 0 оценок
Заказать работу

· Переменная v не является определенно присвоенной в начале тела функции-члена.

· Переменная v является определенно присвоенной в начале каждой недостижимого оператора.

· Состояние определенного присваивания переменной v в начале каждого другого оператора определяется путем проверки состояния определенного присваивания переменной v во всех ветвлениях потоков управления, ведущих к началу этого оператора. Только в том случае, если переменная v является определенно присвоенной во всех таких ветвлениях потоков управления, переменная v считается определенно присвоенной в начале оператора. Набор возможных ветвлений потоков управления определяется точно так же, как и при проверке достижимости операторов (§8.1).

· Состояние определенного присвоения переменной v в конечной точке блока или оператора checked, unchecked, if, while, do, for, foreach, lock, using или switch определяется путем проверки состояния определенного присвоения переменной v во всех ветвях потоков управления, ведущих к конечной точке этого оператора. Если переменная v является определенно присвоенной во всех ветвях потоков управления, переменная v считается определенно присвоенной в конечной точке оператора. В противном случае переменная v не является определенно присвоенной в конечной точке оператора. Набор возможных ветвлений потоков управления определяется точно так же, как и при проверке достижимости операторов (§8.1).

Операторы блока, операторы checked и unchecked

Состояние определенного присваивания переменной v в ветви потока управления, ведущей к первому оператору в списке операторов блока (либо к конечной точке блока, если список операторов пуст) соответствует состоянию определенного присваивания переменной v перед блоком, оператором checked или unchecked.

Операторы-выражения

Для операции stmt, состоящего из выражений expr:

· переменная v имеет такое же состояние определенного присваивания к началу выражения expr, как и к началу оператора stmt;

· Если переменная v является определенно присвоенной к концу выражения expr, она считается определенно присвоенной в конечной точке оператора stmt; в противном случае она не является определенно присвоенной в конечной точке оператора stmt.

Операторы объявления

· Если оператор stmt является оператором объявления без инициализаторов, переменная v имеет такое же состояние определенного присваивания в конце оператора stmt, как и в начале оператора stmt.

· Если оператор stmt является оператором объявления с инициализаторами, состояние определенного присваивания для переменной v определяется таким образом, словно оператор stmt является списком операторов с отдельным оператором присваивания для каждого объявления с инициализатором (в порядке объявления).

Операторы If

Для операции stmt оператора if в форме:

if (expr) then-stmt else else-stmt

· переменная v имеет такое же состояние определенного присваивания к началу выражения expr, как и к началу оператора stmt;

· если переменная v является определенно присвоенной на конец выполнения выражения expr, она является определенно присвоенной в ветви потока управления до операции then-stmt, а также или в else-stmt, или в конечной точке операции stmt, если условие else отсутствует;

· если переменная v имеет состояние "определенно присвоенное в результате выполнения выражения с итогом true" в конце выражения expr, она считается определенно присвоенной в ветви потока управления до операции then-stmt и не является определенно присвоенной в ветви потока управления или в else-stmt, или в конечной точке операции stmt, если условие else отсутствует;

· если переменная v имеет состояние "определенно присвоенная после выполнения выражения с результатом false" в конце выражения expr, она является определенно присвоенной в ветви else-stmt и не является определенно присвоенной в ветви then-stmt. Эта переменная считается определенно присвоенной в конечной точке ветви stmt только в том случае, если она является определенно присвоенной в конечной точке then-stmt;

· в обратном случае переменная v не считается определенно присвоенной в ветви потока управления до операции then-stmt или else-stmt либо до конечной точки ветви stmt, если условие else отсутствует.

Операторы switch

В операторе выражения stmt оператора switch с управляющим выражением expr:

· состояние определенного присваивания переменной v в начале выражения expr соответствует состоянию переменной v в начале операции stmt;

· состояние определенного присваивания переменной v в ветви потока управления до списка достижимых операторов блока switch соответствует состоянию определенного присваивания переменной v в конце выражения expr.

Операторы while

Для операции stmt оператора while в форме:

while (expr) while-body

· переменная v имеет такое же состояние определенного присваивания к началу выражения expr, как и к началу оператора stmt;

· если переменная v является определенно присвоенной в конце выражения expr, она является определенно присвоенной в ветви потока управления до операции while-body и до конечной точки операции stmt;

· если переменная v имеет состояние "определенно присвоенное в результате выполнения выражения с итогом true" в конце выражения expr, она является определенно присвоенной в ветви потока управления до операции while-body, однако не является определенно присвоенной в конечной точке операции stmt;

· если переменная v имеет состояние "определенно присвоенная в результате выполнения выражения с итогом false" в конце выражения expr, она является определенно присвоенной в ветви потока управления до конечной точки операции stmt, однако не является определенно присвоенной в ветви потока управления до операции while-body.

Операторы do

Для операции stmt оператора do в форме:

do do-body while (expr);

· переменная v имеет такое же состояние определенного присваивания в ветви потока управления с начала операции stmt до операции do-body, как и в начале операции stmt.

· переменная v имеет такое же состояние определенного присваивания в начале выражения expr, как и в конечной точке операции do-body.

· если переменная v является определенно присвоенной в конечной точке expr, она является определенно присвоенной в ветви потока управления до конечной точки операции stmt.

· если переменная v имеет состояние "определенно присвоенная в результате выполнения выражения с итогом false" в конце выражения expr, она является определенно присвоенной в ветви потока управления до конечной точки stmt.

Операторы for

Проверка определенного присваивания для оператора for в форме:

for (for-initializer; for-condition; for-iterator) embedded-statement

выполняется для следующей формы оператора:

{
for-initializer;
while (for-condition) {
embedded-statement;
for-iterator;
}
}

Если условие for в операторе for опущено, оценка определенного присваивания выполняется таким образом, словно условие for в приведенной выше развернутой записи оператора было заменено значением true.


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

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

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.