Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Checked и unchecked.




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

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

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

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

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

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

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

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

If

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

if ( выражение ) 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

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

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

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

While

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

while ( выражение ) тело_while

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

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

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

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

Do

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

do тело_do while ( выражение ) ;

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

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

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

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

For

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

for ( инициализатор_for ; ; условие_for ; итератор_for ; ) внедренный_оператор

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

{
инициализатор_for ; ;
while ( условие_for ) {
внедренный_оператор ;
итератор_for ; ;
}
}

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

Break, continue и goto

Состояние определенного присваивания переменной v в ветви потока управления, вызванной операторами break, continue или goto, соответствует состоянию определенного присваивания переменной v в начале оператора.

Throw

Для оператора stmt в форме

throw выражение ;

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

Return

Для оператора stmt в форме

return выражение ;

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

· Если переменная v является выходным параметром, она должна быть определенно присвоена в одном из следующих случаев:

o после выражения expr;

o либо в конце блока finally конструкции try-finally или try-catch-finally, содержащей оператор return.

Для оператора stmt в форме

return ;

· Если переменная v является выходным параметром, она должна быть определенно присвоена в одном из следующих случаев:

o перед оператором stmt

o либо в конце блока finally конструкции try-finally или try-catch-finally, содержащей оператор return.

Try-catch

Для оператора stmt в форме

try блок_try catch(...) блок_catch_1
...
catch(...) блок_catch_n

· Состояние определенного присваивания переменной v в начале try-block соответствует состоянию определенного присваивания переменной v в начале операции stmt.

· Состояние определенного присваивания переменной v в начале catch-block-i (для любой переменной i) соответствует состоянию определенного присваивания переменной v в начале операции stmt.

· Переменная v в конечной точке операции stmt считается определенно присвоенной только в том случае, если переменная v определенно присвоена в конечной точке try-block и каждого catch-block-i (для каждой переменной i от 1 до n).

Try-finally

Для оператора stmt в форме

try блок_try finally блок_finally

· Состояние определенного присваивания переменной v в начале блок_try соответствует состоянию определенного присваивания переменной v в начале операции stmt.

· Состояние определенного присваивания переменной v в начале блок_finally соответствует состоянию определенного присваивания переменной v в начале операции stmt.

· Переменная v в конечной точке операции stmt считается определенно присвоенной только при соблюдении по меньшей мере одного из следующих условий:

o переменная v является определенно присвоенной в конечной точке блок_try

o переменная v является определенно присвоенной в конечной точке блок_finally

При переключении потока управления (например, в операторе goto), которое начинается в блок_try и завершается вне его, переменная v также считается определенно присвоенной в такой ветви потока управления, если переменная v является определенно присвоенной в конечной точке блок_finally. (Это не единственная возможность — если переменная v является определенно присвоенной по другой причине при таком переключении потока управления, она все еще считается определенно присвоенной.)







Дата добавления: 2015-09-07; просмотров: 240. Нарушение авторских прав


Рекомендуемые страницы:


Studopedia.info - Студопедия - 2014-2020 год . (0.013 сек.) русская версия | украинская версия