Step 8 (S-7310)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/536/step/8

Step 8 (S-7310) 1.png

[00:00 - 00:16] программа состоит из последовательно выполнять инструкции при этом каждая инструкция выполняется только после того как была закончена предыдущих однако порядок вычислений внутри инструкции не определен это важно для сложных выражений


[00:16 - 00:34] значение которое может изменяться в зависимости от порядка вычислений давайте посмотрим например у нас есть переменная которое начале проинформировать значениям есть и далее мы присваиваем i некоторые сложные выражения которые зависят от порядка вычислений


[00:34 - 00:54] что значит что то есть если ты значишь если сначала будет вычислена 1 скобка то переменной а не будет присвоено значение 15 и и вычитание 2 скобки я значение получится 15 умножить на 4


[00:54 - 01:09] 60 что в результате до сна ответ 75 если мы будем вычислять наоборот сначала вправо влево то значение


[01:09 - 01:23] да правда скобки получится 40 до левой скобки получится 15 но в результате мы получим другую сумму получим 55 как видим в данном случае выражение


[01:23 - 01:41] это ж не его значение зависит от порядка вычислений такие выражения запрещены с точки зрения 17 + и к использованию в программе ведет к неопределенному поведению это значит что разработчики компилятора рабочих языка снимаю свою ответственность за то что


[01:41 - 01:58] будет происходить ваш враг слушать приложением если там будут такие выражения если есть необходимость объединить несколько инструкций в 1 целое то можно использовать блоки выражений


[01:58 - 02:17] для этого нужно объединить несколько выражений заключив фигурные скобки кроме того что такая синтаксической конструкции позволяет объединить несколько выражений в 1 целая она также обладает собственной области видимости


[02:17 - 02:31] это позволяет определять внутри блоков переменные которые будут не видны снаружи то есть вот я здесь которая снаружи не видно более того какая то другая область видимости то в принципе эта переменная


[02:31 - 02:51] можем иметь такую же имя как некоторые перемена снаружи то есть есть есть переменная как и мы внутри блока определяешь новую переменную как что то с не делаем и после выхода из блока это внутренний переменную как все забывают и мы продолжаем работать с предыдущим значением как то есть вот


[02:51 - 03:09] эта переменная которое используется после блок она соответствует переменные к до блока соответственно значение которой есть присваивается это 11 конечно то есть с точки зрения здравого смысла так делать не стоит когда вас в 1 кусочке кода


[03:09 - 03:16] будет переменная с 1 именем но разным смыслом использовать такой прием это достаточно плохая идея